好题精选

2020.10.14

CF662C Binary Table

可以拿 \(FWT\) 做,但是不会。

观察发现 \(n\leq 20\) ,考虑状压。

\(dp_{i,j}\) 表示经过 \(i\) 次单点修改可以达到状态 \(j\) 的列的个数,可得状态转移方程:

\[dp_{j,k}+=dp_{j-1,k\oplus 2^i} \]

\(ans=\min\limits_{j=0}^{2^n-1}\sum\limits_{i=0}^ndp_{i,j}\times \min(i,n-i)\) ,其中 \(\min(i,n-i)\) 代表可以通过 \(i\) 次修改得到 \(j\) ,也可以通过 \(n-i\) 次修改。

2020.10.15

UVA1521 GCD Guessing Game

有一个结论是:在 \(p=1\) 的情况下,需要猜测的次数最多。

因为我们可以发现,每次询问后,如果返回 \(\gcd(x,p)=t(t\not =1)\) ,那么询问规模就从 \(n\) 下降到了 \(\lfloor \frac nt\rfloor\)

现在我们只需要求最少几次能把比 \(1\) 大的所有数都筛掉。

贪心即可,用质数来筛是最优的。把几个质数一块乘,得到最小次数。

P2216 [HAOI2007]理想的正方形

二维ST表裸题

P2219 [HAOI2007]修筑绿化带

单调队列优化DP。

先对每一行进行DP,然后对每一列进行DP。

P2900 [USACO08MAR]Land Acquisition G

大题解

CF1327F AND Segments

大题解

P3174 [HAOI2009]毛毛虫

找树上直径。

P2943 [USACO09MAR]Cleaning Up G

大题解

P2746 [USACO5.3]校园网Network of Schools

第一个就是缩点然后求入度为 \(0\) 的点,第二个是求入度为 \(0\) 和出度为 \(0\) 的点的个数的较大值

P2466 [SDOI2008]Sue的小球

大题解

CF268D Wall Bars

大题解

CF449A Jzzhu and Chocolate

大题解

2020.10.16

CF148D Bag of mice

\(f_{i,j}\) 表示有 \(i\) 只白鼠, \(j\) 只黑鼠时先手赢的概率。

初始状态,有一只黑鼠时,先手抽到黑鼠输,所以必须抽到白鼠: \(f_{i,0}=1,f_{i,1}=\frac i{i+1}\)

转移方程:

  1. 先手抽到白鼠: \(f_{i,j}=\frac i{i+j}\)
  2. 先手抽到黑鼠,后手抽到白鼠: \(f_{i,j}=0\)
  3. 先手抽到黑鼠,后手抽到黑鼠,跑一只白鼠: \(f_{i,j}=\frac j{i+j}\times \frac {j-1}{i+j-1}\times \frac {i}{i+j-2}\times f_{i-1,j-2}\)
  4. 先手抽到黑鼠,后手抽到黑鼠,跑一只黑鼠: \(f_{i,j}=\frac j{i+j}\times \frac {j-1}{i+j-1}\times \frac {j-2}{i+j-2}\times f_{i,j-3}\)

那么总结一下就是: \(f_{i,j}=\frac i{i+j}+\frac j{i+j}\times \frac {j-1}{i+j-1}\times \frac {i}{i+j-2}\times f_{i-1,j-2}+\frac j{i+j}\times \frac {j-1}{i+j-1}\times \frac {j-2}{i+j-2}\times f_{i,j-3}\)

时间复杂度为 \(O(wb)\) ,其中 \(w,b\) 为白鼠和黑鼠数量

P3459 [POI2007]MEG-Megalopolis

树剖裸题。

CF1163F Indecisive Taxi Fee

大题解

CF1070A Find a Number

大题解

CF547C Mike and Foam

大题解

CF1070E Getting Deals Done

显然能想到二分答案,然后 \(\operatorname{check}\) 的时候只需要模拟过程判断即可。

2020.10.17

CF140E New Year Garland

大题解

P3615 如厕计划

想要完成必须没有空闲 所以要男的尽可能前 所以当有一个后缀男生人数比女生人数多两个时一定无法完成 所以就要让所有这样的后缀尽可能变小 让男生往前 因为要最小最大不满意值 又因为每挪动一个至少加1 我们贪心的直接放到最前(反正都加1了也不差这点了) 这样可以让所有后缀除了整个的后缀和从结尾连着的女生都会减1 我们把男生看成1 女生看成-1 这样可以方便的求出男生多多少 我们预处理出每种的最大后缀和男生多多少

容易得出 如果最大后缀都满足 那么其他后缀也一定满足 因为一种后缀不止一个 只要一种的总和大于1 那么所有拼起来的最大后缀就是(个数减1)**每个的总和 加上一个最大后缀 当然如果一个总和小于1 直接算最大后缀即可 当然这是相当于我们从后往前一直拼 算完当前一段后缀后 要把所有个数*单个总和相加 为拼下一个后缀做准备 当然可能最大后缀也可能小于0 所以取max即可

P3200 [HNOI2009]有趣的数列

大题解

CF975D Ghosts

大题解

2020.10.18

P3502 [POI2010]CHO-Hamsters

大题解

2020.10.19

CF1421A XORwice

大题解

CF1428B Belted Rooms

拉跨题。

CF1428A Box is Pull

拉跨。

CF1428C ABBB

拉。

P3943 星空

本校大佬题解

CF79D Password

和上面那个是双倍经验。

P3865 【模板】ST表

az。

CF1070F Debate

大题解

2020.10.20

嘤嘤嘤,好几天没更新了

CF40E Number Table

大题解

P3105 [USACO14OPEN]Fair Photography S

大题解

P4318 完全平方数

选择二分答案来找到 \((1,n)\) 中有几个满足条件的数。

但是怎么 \(\operatorname{check}\) 呢?

瞎乩矲推式子可以得到: \(num_n=\sum\limits_{i=1}^{\lfloor\sqrt n\rfloor}μ(i)\lfloor\frac n{i^2}\rfloor\) ,然后就没了。

P3899 [湖南集训]谈笑风生

\(b\)\(a\) 的父亲时显然,考虑怎么快速求出 \(b\)\(a\) 的合法儿子情况。发现 \(b\) 只需满足 \(dep_b\in [dep_a+1,dep_a+k+1],dfn_b\in[dfn_a,dfn_a+siz_a-1]\) ,其中 \(dfn_a\) 是dfs序。

那么将 \(dep_i\) 看作 \(y\) 轴, \(dfn_i\) 看作 \(x\) 轴,二维数点即可。时间复杂度 \(O(n\log n)\)

P4570 [BJWC2011]元素

大题解

CF1101G (Zero XOR Subset)-less

大题解

CF45G Prime Problem

哥德巴赫猜想的垃圾好题。

P1608 路径统计

拿SPFA跑最短路即可,在每个节点记得及时更新路径数。

P1144 最短路计数

上面的双倍经验

CF156C Cipher

大题解

posted @ 2020-11-04 22:17  jasony_sam  阅读(94)  评论(0编辑  收藏  举报