【NOIP 模拟赛】钟 模拟+链表
2017-08-13 19:18
381 查看
biubiu~~
这道题实际上就是优化模拟,就是找到最先死的让他死掉,运用时间上的加速,题解上说,要用堆优化,也就是这个意思。
对于链表,单项链表和循环链表都不常用,最常用的是双向链表,删除和插入比较方便。
所谓挂链就是把链表中的值域换成一坨别的东东西......
这道题实际上就是优化模拟,就是找到最先死的让他死掉,运用时间上的加速,题解上说,要用堆优化,也就是这个意思。
对于链表,单项链表和循环链表都不常用,最常用的是双向链表,删除和插入比较方便。
所谓挂链就是把链表中的值域换成一坨别的东东西......
#include <cstdio> inline void read(int &sum){ register char ch=getchar();bool symbol=0; for(sum=0;ch<'0'||ch>'9';ch=getchar())if(ch=='-')symbol=1; for(;ch>='0'&&ch<='9';sum=(sum<<1)+(sum<<3)+ch-'0',ch=getchar()); if(symbol)sum=-sum; } const int C=110; const int N=1000100; int fight[C][C],get[C][C][C]; int n,c; int a ,qian ,hou ,val ,Num,size[C]; int main(){ read(c),read(n); Num=c; for(int i=1;i<=c;i++) for(int j=1;j<=c;j++) read(fight[i][j]); for(int i=1;i<=n;i++) read(a[i]),size[a[i]]++; qian[1]=0,hou[0]=1; for(int i=1;i<=n;i++) qian[i+1]=i,hou[i]=i+1,val[i]=1; for(int k=0;k<=c;k++) for(int i=0;i<=c;i++) for(int j=0;j<=c;j++) get[k][i][j]=fight[k][i]+fight[k][j]; while(Num!=1){ for(int i=hou[0];i<=n;i=hou[i]) val[i]+=get[a[i]][a[qian[i]]][a[hou[i]]]; for(int i=hou[0];i<=n;i=hou[i]) if(val[i]<=0){ size[a[i]]--; if(!size[a[i]])Num--; qian[hou[i]]=qian[i]; hou[qian[i]]=hou[i]; } } printf("%d",a[hou[0]]); return 0; }
相关文章推荐
- 2016.08.17【初中部 NOIP提高组 】模拟赛C(图论专项模拟试题)
- 【模拟】【打表】【120814测试】【NOIP第二次模拟赛】无聊的游戏
- [NOIP模拟][链表]裁剪表格
- 10.16 NOIP模拟赛 期望斜率优化 + 模拟 + 状压
- 17.7.7 NOIP模拟赛 【模拟/数据结构】【模拟】
- NOIP模拟 裁剪表格【链表】
- JZOJ5372. 【NOIP2017提高A组模拟9.17】猫 链表+贪心+堆优化
- 2017.08.19【NOIP提高组】模拟赛B组 【雅礼联考GDOI2017模拟】Zjr506的捕猫计划
- NOIP模拟 JZOI5428 查询 【链表】
- 【NOIP模拟赛】【乱搞AC】【贪心】【模拟】匹配
- 2016.08.12【初中部 NOIP提高组 】模拟赛C
- 2016.08.12【初中部 NOIP提高组 】模拟赛C题解
- PHP中模拟链表和链表的基本操作示例
- JZOJ 5398. 【NOIP2017提高A组模拟10.7】Adore
- 3494. 【NOIP2013模拟联考13】线段(segment) (2017.9B组)
- jzoj 2554. 【NOIP2011模拟9.7】帕秋莉·诺蕾姬
- 2016.10.07【初中部 NOIP提高组 】模拟赛C题解
- CCCC-GPLT L2-002 链表去重 模拟
- 【NOIP模拟】20151014模拟
- 【NOIP2011模拟9.7】雾雨魔理沙