人工智障CD组大讨论之经典zr普及

A. 如烟

莫名其妙挂了,我的想法是 70 70 70 分的。
预处理出从每个 c c c 出发能到达的点的有哪些,然后枚举判断即可。复杂度 O ( n 3 ) O(n^3) O(n3)

然鹅我们发现有一个条件我们没用上:拓扑序为 1 ~ N 1~N 1N
众所周知:题面上的条件都很有用 ( b u s h i (bushi (bushi

  • 考虑 f [ x ] [ y ] f[x][y] f[x][y] 表示 ( x , y ) (x,y) (x,y) 是否是一个合法的点对,显然有 f [ x ] [ x ] = 1 ( 1 ≤ x ≤ N ) f[x][x]=1(1≤x≤N) f[x][x]=1(1xN)
  • 假如 ( x , y ) (x,y) (x,y) 是一个可行的点对,那么一定存在一个 x x x 的前驱 x ′ x' x y y y 的前驱 y ′ y' y, 使得 ( x ′ , y ) (x',y) (x,y) ( x , y ′ ) (x,y') (x,y)是一个可行的点对。 所以我们直接跑一遍递推就行了。复杂度 O ( N 2 ) O(N^2) O(N2)

B. 星空

首先,部分分很好考虑。

  • a i = i , b i = 1 , n = m a_i=i,b_i=1,n=m ai=i,bi=1,n=m,很容易想到考虑 n n n 的奇偶性,奇数时答案为 1 1 1,否则为 0 0 0
  • a i = = b i a_i==b_i ai==bi,同样容易考虑答案,直接枚举,计算每个数出现的次数,判断奇偶性即可。
  • 1 ≤ n , m ≤ 10 1≤n,m≤10 1n,m10,直接暴力求解即可。

这样就拿到了 70 70 70 分。然鹅我又写挂了,只有60分

再考虑正解:

  • 注意到, 每当移动某个球时,所在框的奇偶性都会取反。
  • 把筐子看成点, 那么每个球就是一条边。对于每个联通块,有奇数条边的时候,就一定会有一个半空的框子,如果有偶数个球你可以把他们两两配对消掉。
  • 所以用并查集维护联通块, 然后数一下每个联通块里面的边数, 对于每个联通块如果有偶数条边, 答案不变,否则答案 + 1 +1 +1

C. 知足

考虑第二小纸币的面值大小。设要凑出的数为 n n n 纸币数量为 k k k 时的答案为 f ( n , k ) f(n,k) f(n,k),如果第二小的纸币面值为 x x x,那么答案即为 f ( [ n x ] , k − 1 ) + ( n  mod  x ) f([\frac{n}{x}],k-1)+(n~\text{mod}~x) f([xn],k1)+(n mod x)。考虑 d p dp dp ,记录 d p ( a , b , c , d ) dp(a,b,c,d) dp(a,b,c,d) 表示前面 2 , 3 , 4 , 5 2,3,4,5 2,3,4,5 的个数分别为 a , b , c , d a,b,c,d a,b,c,d 时凑出 n  mod  2 a 3 b 4 c 5 d n~\text{mod}~2^a3^b4^c5^d n mod 2a3b4c5d 的最小纸币数。发现当前所求应该是 f ( [ n 2 a 3 b 4 c 5 d ] , k − a − b − c − d ) f([\frac{n}{2^a3^b4^c5^d}],k-a-b-c-d) f([2a3b4c5dn],kabcd),枚举下一次选的是哪一种倍数,转移即可。时间复杂度 O ( k 4 ) O(k^4) O(k4)


D. 倔强

暴力 10 10 10 分比较简单。
考虑正解:
求出每个位置能放的数字有哪些,把位置和点进行二分图匹配。因为可以将一段的数字从小到大重排,
有解当且仅当存在完美匹配。所以最暴力的做法是从小到大枚举所有格子,枚举这个格子填哪个数,填
完之后重新跑一遍二分图匹配,如果有解就可以填。总复杂度 O ( n 8 ) O(n^8) O(n8)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值