题意请看absi大爷的blog
http://absi2011.is-programmer.com/posts/200920.html
http://absi2011.is-programmer.com/posts/200822.html
DAY1
T1
最优比率树形DP?
跟最优比率生成树很像。。二分Σp/Σs(暂定为f
判定过程:每个点得到一个新权值f*p[i]-s[i]
做树形dp,dp[i][j]表示以i为根的子树选j个点能得到的最大权值
dp[root][k]>0则为合法
T2
T3
首先得先会O(N)预处理hash并且O(1)判断回文
然后
考虑一个问题不考虑到b数组的时候如何求a数组的回文
O(n)枚举回文串中心点。。
每个中心点logn二分向外拓展得到一个l[i],r[i]
那么考虑涉及到b数组
因为l[i]只会在a数组 而r[i]则可能拓展到b数组中
那么再次枚举中心点,二分b最远能跑到哪里 O(1)判断即可
DAY2
T1
一开始看错题意不会做啊沃日。。。
BZOJ4038
T2
类似CF的eduround12的C题
是一个两两相加需要为质数的题。但那一题中没有二分图性质GG
而这题。。偶+偶=偶 奇+奇=偶。。判断下1.。就会发现数被分为奇偶两个部分
然后二分独立集
T3
FJOI2011选点问题
原题原题,我报警了
贴个很早写的FJOI2011题解。。。懒得改了QAQ
N^4暴力50分(我为什么打正解
考虑枚举每个点暴力,然后极角排序乱搞。
然后考虑i,j,k构成的三角形。
For (int i=1;i<=n;i++)
For (int j=1;j<n;j++)
For (int k=j+1;k<n;k++)
所以 角j,i,k,包含的点有k-j-1个,但是这些点与i的连线所构成的直线能过j,k,线段却不能,例如三角形ijk内的点。(计算几何判断线段相交的跨立实验)
所以考虑容斥原理。
TOT[j][k]+=角ijk的点-三角形ijk内的点。(复杂度n^4 不如暴力)
那么转换思维 我们先tot[j][k]+=角ijk内的点
考虑枚举到三角形i,j,k内一点 图中红点
这个点 在i计算时被失败地计算过了。但是做反向延迟线试试
显然在计算j,k这条线段时,这个点与j,k的反向延长线所构成的角会包含点i,同理,会包含之前误计算该点的的点。
那么我们就想到一个非常妙的思路啦。
For (int i=1;i<=n;i++)
{
极角//
For (int j=1;j<n;j++)
For (int k=j+1;k<n;k++)
TOT[J][K]+=k-j-1-a[i][j][k]。(a[i][j][k]=ij,ik反向延长线内包含的点)
}
总的来看 对于每条线段 ab
Tot[a][b]=所有的角iab内的点-每个点在统计线段ab时被误统计的次数。