NOIP2018

T1 铺设道路

分析样例,贪心,每次填尽量长的一段,当这段中存在h[i]<h[i+1]的情况便会断成两段。

O(n) 找到每一个i(i0~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/2n/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分了。