SHU 第15届上海大学程序设计联赛夏季赛[热身赛] 第三题(G题) - 英语成绩
Posted tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SHU 第15届上海大学程序设计联赛夏季赛[热身赛] 第三题(G题) - 英语成绩相关的知识,希望对你有一定的参考价值。
看完题目就觉得是个图论题……
每个人的成绩就是vertice,两个人的分数差就是edge,那么肯定类似于一种relax的方式,不断将每个人的成绩的min往上提,
当然,单纯的遍历一遍G.E肯定不可能就得到yaoge成绩min的最大值,所以直觉上就想到了bellman-ford,写了一发交了就过了
1 #include<cstdio> 2 int n,p,q; 3 int score[105]; 4 struct Edge{ 5 int high,low,delta; 6 }edge[1005]; 7 void relax(int low,int high,int delta) 8 { 9 if(score[low]+delta>score[high]) score[high]=score[low]+delta; 10 } 11 int main() 12 { 13 int t; 14 scanf("%d",&t); 15 while(t--) 16 { 17 scanf("%d%d%d",&n,&p,&q); 18 for(int i=1;i<=n;i++) score[i]=0; 19 for(int i=1;i<=p;i++) 20 { 21 int id,min; 22 scanf("%d%d",&id,&min); 23 if(min>score[id]) score[id]=min; 24 } 25 for(int i=1;i<=q;i++) 26 { 27 scanf("%d%d%d",&edge[i].high,&edge[i].low,&edge[i].delta); 28 } 29 for(int k=1;k<=n;k++) 30 { 31 for(int i=1;i<=q;i++) 32 { 33 relax(edge[i].low,edge[i].high,edge[i].delta); 34 } 35 } 36 printf("%d\\n",score[1]); 37 } 38 }
还是比较惊喜的……不过写完听说这是个叫做“差分约束系统”的东西,去看了一下发现自己直觉还挺准的(笑)……
以上是关于SHU 第15届上海大学程序设计联赛夏季赛[热身赛] 第三题(G题) - 英语成绩的主要内容,如果未能解决你的问题,请参考以下文章
“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 A
“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 H
“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 F
“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛 K