摘要:
我们考虑如果打印结束时,不允许有部分字母留在打印机内。 这题应该怎么做 显然我们将所有要打印的字符串放入一棵Trie树 那么答案就是Trie树的节点数乘2+m 打印顺序只要沿树走即可 现在我们再来考虑打印结束时,允许有部分字母留在打印机内的情况 我们发现其实就是最后一个单词不用删除 那么我们让最长的 阅读全文
摘要:
这道题目,一眼看上去,并不能用网络流做 但是我们发现,如果将每个点拆成x和x' 然后x连源点,x'连汇点 都用容量为一的边 再然后是找这个数可以与那个数组成完全平方数,然后将这个数i与x'连边 每加入一个点就跑一次最大流 那么如果可以塞进原柱,那么最大流就得到1否则为0 那么我们在得到0的时候新建柱 阅读全文
摘要:
直接用题目中三角形 我们发现无论是从上到下还是从下到上DP都会有后效性 这时我们发现第i列的情况只和第i+1列有关 于是我们产生了从右向左DP的思路 到这为止我的想法,就开始与别人不同了 我用f[i][j][k]表示,敲掉第i行第j列的那个块,和之前的k-1个块所能得到的最大分数 用ji[j][[k 阅读全文
摘要:
这题真的不是一道用网络流解决的好题,初学者应绕路 但我偏偏就用网络流写了 每个叶子节点连向超级汇点n+1,即可 但我当时把 所谓割开一棵有根树,就是删除若干条边,使得任何叶子节点和根节点不连通。 看成了所谓割开一棵有根树,就是删除若干条边,使得任何节点和根节点不连通。 这且不说,还有一个问题 这棵树 阅读全文
摘要:
这题算是毒瘤吧,看到这个题我除了O(n^2)想不到别的方法 后来尝试使用平方的方式乱搞,但是给出了反例 在看了国家集训队ysy的解题报告后方才明白 思路是一种放宽的思路 我们枚举每个差值的符号,在其中枚举最大值,就可以有效去除绝对值 最后按照第k位从小到大排序,来枚举 从小到大进行扫描,每次用当前的 阅读全文
摘要:
【数据规模】 40%的数据中,N<=20; 60%的数据中,M=2; 80%的数据中,N<=10^5。 100%的数据中,N<=10^15。 看到这个数据范围,我首先想到的是80分的写法 80分的写法可以使用状压DP f[i][j]表示第i位,前m个二进制状态为j有多少种方式 t1=(j>>1)|( 阅读全文
摘要:
这道题特别坑 状态转移是 f[i][k+1]=f[j][k]+(sum[i]-sum[j])*(sum[i]-sum[j]); 转换后变为 f[j][k]+sum[j]*sum[j]=f[i][k+1]+2*sum[i]*sum[j]; 但是我在这里要说的是一个初值的问题 通常情况下斜率优化的题目都 阅读全文
摘要:
此题我看到第一眼的想法是 区间DP,复杂度大约O(n^4) 但是我在推样例的时候发现了一个重要的性质 最后的结果只与切的位置有关而与切的顺序无关 将状态设计为f[i][j]表示前i个数,切j刀,第j刀切在i处所最得到的最大的分 由此我们可以推出DP式子:f[i][k+1]=f[j][k]+sum[j 阅读全文
摘要:
显然dp方程可以得出为dp[i]=min{dp[j]+(sum[i]+i−sum[j]−j−L−1)2} 但是这种dp方式是O(n2)的,我们可以使用斜率优化的方法将其优化成O(n) 我们考虑将原DP方程变形 1. dp[i]=dp[j]+(sum[i]+i−sum[j]−j−L−1)2 将L++ 阅读全文
摘要:
题意: 分别给出两个圆的圆心坐标和半径((x1,y1),r1和(x2,y2),r2),求两个圆相交部分的面积。 两个圆的关系,可分为三种情况,相离,相交,包含 1.相离或边缘重合,输出0即可 2.包含的话输出小圆的面积即可 3.相交的话 如上图,总面积等于SACC1=S扇形DCC1A-SΔDCC1A 阅读全文