[ CodeVS冲杯之路 ] P1092

  不充钱,你怎么AC?

  题目:http://codevs.cn/problem/1092/

 

  嗯,这道题有一定难度啊,需要先用扩展欧几里得算法求出逆元,然后按照大小构一颗带边权为小时数的树

  树链剖分后在树上DP,设f[i][j]为以 i 为根 j 为子树的最小的那一天

  注意DP方程是有单调性的,可以用动态仙人掌维护,最后答案容斥一下即可

  目测代码量8k+

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int x,a,b,m;
 8     for (int i=1;i<8;i++)
 9     {
10         scanf("%d%d",&x,&a);
11         if ((x+=a)>m)
12         {
13             m=x;
14             b=i;
15         }
16     }
17     printf("%d\n",b);
18     return 0;
19 }

 

posted @ 2016-10-18 16:50  Hadilo  阅读(137)  评论(0编辑  收藏