SPFA,多一个dp数组记录,特判n=1的情况,路径长度可能超int。...
分类:
其他好文 时间:
2015-08-06 18:32:51
阅读次数:
103
我们可以先建一棵最小生成树,然后再从这n个城市中选择2个城市,把二者之间的路看做用法术造的路。如果这条路在最小生成树上,即去掉这条边后最小生成树会变成两棵独立的树,那么A/B就是(二者城市的人口数总和/最小生成树的值减去二者之间的长度);如果这条路不在生成树上,那么为了使A/B最大,我们要在最小生成树上删除一条权值最大的边使得生成树分为两棵树,同时这2个城市不在同一颗树上,然后就可以把这两个城市之间的路视为用法术造出的路,A/B就是
(二者城市的人口数总和/最小生成树的值减去二者之间某条使二者连通的边的最大...
分类:
其他好文 时间:
2015-08-06 18:32:15
阅读次数:
137
首先n的范围是[2,15],所以可以用dfs搜索使得Ratio最小的点。那么思路基本清晰:首先dfs,搜索所有的点选与不选所得到的最大的Ratio,如果当前状态下得到的Ratio比之前得到的Ratio要小,那么把当前状态的vis数组更新的答案ans数组中。最后从1到n扫描ans数组即可保证答案是升序。...
分类:
其他好文 时间:
2015-08-06 18:29:18
阅读次数:
126
最短路我们可以求,但是次短路怎么求呢?我们可以把记录最短路长度的mincost数组和记录最短路个数的dp数组变成二维的,1表示最短路,2表示次短路。若遇到比最短路还短的路,则把最短路的信息赋值给次短路,再改变最短路的信息。
另外我们更新mincost数组的时候会遇到以下四种情况:
1)从当前点出发到达i的某条路的长度比到达i点的最短路短:把最短路信息赋值给次短路,把这条路的信息赋值给最短路;
2)从当前点出发到达i的某条路的长度与到达i点的最短路的长度一致:把到达当前点且长度最短的种类数加到到达i点的最短路...
分类:
其他好文 时间:
2015-08-06 18:29:15
阅读次数:
139
每场每队的进球数在0-9之间,那么暴力枚举即可。关键的是枚举的顺序。首先我们要保证B队获胜,那么X-Y一定大于0,所以我们可以枚举B队净胜球数(即X-Y),再枚举B队失球数(即Y),每次枚举后排序,若B队在前2名则更新答案,这样两层循环之后就可以得出使得(X-Y)最小,同时Y最小的答案。
另外:除了B队外的3支队伍的队名是没有规律的,不要被样例迷惑。...
分类:
其他好文 时间:
2015-08-06 18:27:03
阅读次数:
133
A. CodeForces 396C
题意就不描述啦。
对于第一种操作 1 v x k,我们可以给v的子树全部加上(x+depth[v]*k)的值。
对于第二种操作 2 v。查询每个节点的值之后,只需要在减去depth[v]*K即可得到答案了。里面的K是对v这个节点有影响的k的和。
自己在纸上推推公式,很容易就能知道为何是对的了
这里用两个树状数组即可维护,
当然增加整棵子树的操作...
分类:
其他好文 时间:
2015-08-03 19:13:38
阅读次数:
136
Phone CellTime Limit:10000MS Memory Limit:32768KB 64bit IO Format:%lld
& %llu
SubmitStatusPracticeZOJ
2978
Description
Nowadays, everyone has a cellphone, or even two or three. You pr...
分类:
其他好文 时间:
2015-08-02 23:26:52
阅读次数:
285