noip2018
NOIP2018
T1 铺设道路
分析样例,贪心,每次填尽量长的一段,当这段中存在h[i]<h[i+1]的情况便会断成两段。
O(n) 找到每一个i(i为0~n的正整数)使得h[i]<h[i+1]这时ans+=h[i+1]-h[i] 注意h[0]=0
T2 货币系统
简单理解,只要是能被其他货币表示的货币便是无用的,其他货币必然无法替代。
证明:若替代则必然需用可以被其他货币表示的货币,但由于该货币不可被其他货币替代,故无法替代。
T3 赛道修建(二分+贪心)
看到最小指最大想到二分,check函数使用贪心。
在每个点的子树上构建尽量多的赛道,多余的边中选择最长的加到该点到它父亲的边上。
此时mid=15
T4 旅行(搜索)
树的情况时贪心选择小的点往下走,dfs解决。
基环树枚举删边O(n^2)解决。
luogu有加强版,需要对环进行分类讨论。
T5 填数游戏(打表找规律)
对于每一条自左下到右上的对角线,填数是非严格单调递减的。
如果(i-1,j)和(i,j-1)的填数相同,那么以(i,j)为左上角、以(n,m)为右下角的子矩阵内所有对角线内的填数各自相等。
根据这两条规律可以快速搜索打出n=8,m=8的表:
n,m |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
1 |
2 |
4 |
8 |
16 |
32 |
64 |
128 |
256 |
2 |
4 |
12 |
36 |
108 |
324 |
972 |
2916 |
8748 |
3 |
8 |
36 |
112 |
336 |
1008 |
3024 |
9072 |
27216 |
4 |
16 |
108 |
336 |
912 |
2688 |
8064 |
24192 |
72576 |
5 |
32 |
324 |
1008 |
2688 |
7136 |
21312 |
63936 |
191808 |
6 |
64 |
972 |
3024 |
8064 |
21312 |
56768 |
170112 |
510336 |
7 |
128 |
2916 |
9072 |
24192 |
63936 |
170112 |
453504 |
1360128 |
8 |
256 |
8748 |
27216 |
72576 |
191808 |
510336 |
1360128 |
3626752 |
不难发现从第n列从(n,n)后有着*3的规律。
T6保卫王国(倍增+DP,动态DP)
测试点编号 |
\text{type}type |
n = m=n=m= |
1,21,2 |
A3 |
1010 |
3,43,4 |
C3 |
1010 |
5,65,6 |
A3 |
100100 |
77 |
C3 |
100100 |
8,98,9 |
A3 |
2\times 10^32×103 |
10,1110,11 |
C3 |
2\times 10^32×103 |
12,1312,13 |
A1 |
10^5105 |
14, 15, 1614,15,16 |
A2 |
10^5105 |
1717 |
A3 |
10^5105 |
18,1918,19 |
B1 |
10^5105 |
20,2120,21 |
C1 |
10^5105 |
2222 |
C2 |
10^5105 |
23, 24, 2523,24,25 |
C3 |
10^5105 |
- A:城市i与城市i + 1直接相连。///链的情况答案为n/2或n/2+1或-1
- B:任意城市与城市 1 的距离不超过 100(距离定义为最短路径上边的数量),即如果这 棵树以 11号城市为根,深度不超过 100。
- C:在树的形态上无特殊约束。
- 1:询问时保证a = 1,x = 1,即要求在城市 1 驻军。对b,y没有限制。///f[i][j] j表示i点是否驻军,返回max(f[1][0],f[1][1])
- 2:询问时保证a,b是相邻的(由一条道路直接连通)///若此时不允许驻军直接返回-1
- 3:在询问上无特殊约束。
对于前11组小数据每次询问dp一次。
强制取或不取:将f数组对应的地方设为inf即可。
这样就能拿到近50分了。