码迷,mamicode.com
首页 > 其他好文 > 详细

SHU 第15届上海大学程序设计联赛夏季赛[热身赛] 第三题(G题) - 英语成绩

时间:2017-07-09 12:25:22      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:程序   main   程序设计   int   cst   min   成绩   ice   ima   

技术分享

技术分享

 

看完题目就觉得是个图论题……

每个人的成绩就是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题) - 英语成绩

标签:程序   main   程序设计   int   cst   min   成绩   ice   ima   

原文地址:http://www.cnblogs.com/dilthey/p/7140853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!