日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【NOIP 模拟赛】钟 模拟+链表

發布時間:2025/7/25 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NOIP 模拟赛】钟 模拟+链表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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[N],qian[N],hou[N],val[N],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; }

?

轉載于:https://www.cnblogs.com/TSHugh/p/7354400.html

總結

以上是生活随笔為你收集整理的【NOIP 模拟赛】钟 模拟+链表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。