2017.07.9【NOIP提高组】模拟赛B组小结

来源:互联网 发布:nat 穿透 java 编辑:程序博客网 时间:2024/06/01 23:02

T11154. 【GDOI2003】购物

Description

  GDOI商场推出优惠活动,以超低价出售若干种商品。但是,商场为避免过分亏本,规定某些商品不能同时购买,而且每种超低价商品只能买一件。身为顾客的你想获得最大的实惠,也就是争取节省最多的钱。经过仔细研究,发现商场出售的超低价商品中,不存在以下情况:   n(n>=3)种商品C1,C2,…..,Cn,其中Ci,Ci+1是不能同时购买的(i=1,2…,n-1)并且C1, Cn也不能同时购买。   编程计算可以节省的最大金额数。

Input

  第一行两个整数K,M(1<=K<=1000).其中K表示超低价商品数。K种商品的编号依次为1,2,…,K。M表示不能同时购买的商品对数.接下来K行,第i行有一个整数Xi表示购买编号为i的商品可以节省的金额(1<=Xi<=100).再接下来M行,每行两个数A ,B,表示A和B不能同时购买,1<=A<=K,1<=B<=K,A<>B

Output

  仅一个整数,表示能节省的最大金额数。

Sample Input

3 1
1
1
1
1 2

Sample Output

2
想法:看完题目后不存在的情况不要理,别想多了,
树形Dp
f[i,1]为选这个商品的最节省费用
f[i,0]则表示不选
方程略
每两个不能互相存在的连一条边
如果某个点没有被搜过,对它的子树dp,加入答案中

T2jzoj1729. blockenemy

Description

你在玩电子游戏的时候遇到了麻烦。。。。。。 你玩的游戏是在一个虚拟的城市里进行,这个城市里有n个点,都从0~n-1编了号,每两个点之间有且仅有一条路径。现在,你的敌人到这个城市来踩点了!!!为了阻止他们更好的踩点, 你决定切断他们所有踩点人员的联系,使他们孤军作战,然后在各个击破。但是这就要切断某些街道,而你每切断一条路,市民就会产生相对的不满值,不满值越大,城市的和谐度就越小。所以你现在需要知道为了使踩点人员所在的点两两之间不联通所切断的边产生的最小不满值是多少?

Input

第一行一个数:n n<=50 以下n-1行,每行3个数 a,b,c 表示a点和b点之间有条路,切断这条路的不满值为c 以下若干行 每行一个数,表示踩点人员的位置

Output

一个数,最小不满值

Sample Input

5
1 0 1
1 2 2
0 3 3
4 0 4
3 2 4

Sample Output

4
想法:贪心+并查集路径压缩
它考虑删某些边使得值最小,
我们可以换成加上某些边使得值最大
把边的权值从大到小排序,假如加了这条边,任意2个敌人仍然不联通,加,反之不理

T31301. treecut

Description

  有一个N个节点的无根树,各节点编号为1..N,现在要求你删除其中的一个点,使分割开的连通块中节点个数都不超过原来的一半多。

Input

  第一行:一个整数N (1 <= N <= 10,000)。   后面有N-1行:每行两个整数 X 和 Y,表示一个边连接的两个节点号。

Output

  输出所有可能选择的点。如果有多个节点,按编号从小到大输出,每个一行。 如果找不到这样的点,输出一行:”NONE”.

Sample Input

10
1 2
2 3
3 4
4 5
6 7
7 8
8 9
9 10
3 8

Sample Output

3
8
想法:
对于每个节点,判断一下以它的子节点为根的子树的节点数是否《n/2,以及这个树中除了以它为结点的子树的结点个数是否《n/2

原创粉丝点击