9.1PM
—— 期望 实际
A 100 100
B 100 100
C 100 100
D 100 100
E 100 100
F 100 100
G 0 0
H 100 90
sum 700 690

水题都过不了嘤嘤嘤

A 方程f(x)的根

签到题,二分解方程+直接 \(O(1)\) 输出

B 骨牌

啊~晃得第一眼以为是内道数位dp,仔细一看发现\(O(n)\)的dp,就很快切掉了,不过后来听旁边大佬说是斐波那契数列,瞬间醒悟

C 大神排队

解题思路

  1. 首先吧,很容易联想到另一道更离谱的题————国王游戏。相似点在于都是左右手,且都要排队,与前缀有关,但这道要更简单
  2. 然后,就考虑按照国王游戏,尝试着交换 \(i\)\(i+1\) 的位置,看能否让答案更优。
  3. \(i\) 的精神摧毁值为 \(kill[i]\) ,抵抗值为 \(life[i]\) 那么便可以转化为比较 $\ \sum_{j=1}^{i-1}(kill[j])+\max(-life[i],kill[i]-life[i+1])\ $ 与 $\ \sum_{j=1}^{i-1}(kill[j])+\max(-life[i+1],kill[i+1]-life[i]) \ $
  4. 我们再稍微调整一下,可以得到,若 $ \max(life[i+1],kill[i]+life[i])>\max(life[i],kill[i+1]+life[i+1]) $ 便可以进行交换
  5. 其实吧,到这里就已经可以做了,我就是这么做的,而且A了
	bool cmp(u2003 x,u2003 y){
		return max(x.life+x.kill,y.life)<max(y.life+y.kill,x.life);
	} 
  1. 但是,我们要精益求精,看看标答怎么进一步推导:首先,易证 \(life[i]<life[i]+kill[i]\) ,若有 \(life[i+1]>kill[i]+life[i]\) 则有 \(life[i]<kill[i+1]+life[i+1]\) ,则会满足 \(kill[i]+life[i]<kill[i+1]+life[i+1]\) 那么可以轻易推导出(这里写不下)比较 \(kill[i]+life[i]\)\(kill[i+1]+life[i+1]\)
    7.over

D 新约瑟夫问题

\(O(n+ \log n)\) 解决
先约瑟夫从末状态推到n,然后再不断往下减

E 开心的金明

01背包水题

F 奇怪的电梯

BFS,搜就完事了

G 团伙

PS.时间不够,题还是简单
1.初见:woc带权并查集
2.仔细一看,直接分别处理不就行了,反正并查集可以不管环之类的
3.友好关系建并查集,敌对关系先建图,后面再儿子的儿子和自己扔进同一个并查集,最后看有多少个并查集就行。时间复杂度 \(O(n^2)\)

H 遭遇战

模拟,两个同步就行,坑点:判别先输入的为横坐标还是纵坐标;以及要判断是否起点就在同一处!!!(10分的教训)

2021.09.01 pm_并查集

\(\cal {Made} \ {by} \ {yuge}\)