AC代码
我是没想到赛时能过
主要就是check函数难写
全体攻击和单体攻击都没什么好说的,都不可能浪费
只有群体攻击有可能浪费,那么就先算一下群体攻击能不浪费的打多少次
接着打单体,单体打完了浪费的打群体
比较复杂,我以为过不了,但竟然过了,AC!!!
1 |
|
心路历程(WA,TLE,MLE……)
这个WA掉的程序主要是修改了A的值,应该还是最好不要这么干
1 |
|
我是没想到赛时能过
主要就是check函数难写
全体攻击和单体攻击都没什么好说的,都不可能浪费
只有群体攻击有可能浪费,那么就先算一下群体攻击能不浪费的打多少次
接着打单体,单体打完了浪费的打群体
比较复杂,我以为过不了,但竟然过了,AC!!!
1 | #include <iostream> |
这个WA掉的程序主要是修改了A的值,应该还是最好不要这么干
1 | #include <iostream> |
回文数生成算法
前面搞半天没过,原来是pow的问题,pow只会返回int,导致int溢出了。
自己手搓了一个lpow就过了。
主要原理是经过观察

那么i位回文数就有9*10**((i-1)/2)个(/2为向下取整)
然后我们要确定回文数母体,
1 | #include <iostream> |
虽然样例吧都过不了,但我百思不解为何WA,对拍程序生成的都没WA呀。
搞半天原来是pow的问题,pow只会返回int,导致int溢出了。
1 | #include <iostream> |
这题思路就是二分答案,二分可能的dis并检验
在复杂的就是check()函数必须在logn的级别,写的时候也比较复杂,这边简单阐述一下
1 | ll l=lower_bound(A.begin(),A.end(),obl)-A.begin(); |
这个代码是用来找到该dis可以包含的最多点数,详见下面图解

b=2 , dis=3,包含的最多点数就是-1,-1,5,5,即4个点,在图上很清楚,upper_bound-lower_bound就是4。
然后我们知道,最多点≥k是可能满足条件的(可能最少点符合条件),但最多点<k,那么一定不符合条件
AC
1 | #include <iostream> |
总体思路其实就是对于暴力dp的优化,其实很多时候一些做法就是对暴力做法的优化,所以就算知道时间复杂度较高,也可以写一写试试,看看能不能优化。
思路就是C[i][isE]里面存的是从i点以是否是偶数进入,最优的v。
当然,把之前的全部遍历一遍肯定超时了,所以maxC[2]就登场了。
直接存的就是之前最优的奇数偶数情况,直接调用就行,当然记得更新。
AC
1 | #include <iostream> |
https://www.bilibili.com/video/BV1SGsfeKExw/?vd_source=4350e5f2584d2f27c848b347ea11b675

树的重心是指以该点为根,其最大子树最小
1 | #include <iostream> |