摘要: 1、问题里有取模操作的时候,最后输出(ans+mod)%mod 2、涉及到输出实数0的时候要特判输出的会不是是-0.000000(因为0.00乘一个负的浮点数结果是-0.000000,乘一个正的浮点数结果是0.000000) 3、遇见问题中有|x-c|,min(x,c-x),max(x,c-x)的时阅读全文
posted @ 2017-05-27 17:36 Chellyutaha 阅读(74) 评论(0) 编辑
摘要: bzoj1009:kmp想法+递推+矩阵快速幂。很好的想法,考虑用长串去kmp匹配短串,dp[i][j]表示匹配指针分别指在i、j位置时候,前i位母字符串一共有多少种可能性,那么dp[i][j]=Σdp[i-1][k]*p[k][j] p[k][j]就是状态k后加一位数字转移到状态j一种多少种可能(阅读全文
posted @ 2017-04-07 20:43 Chellyutaha 阅读(70) 评论(0) 编辑
摘要: poj2965 poj1753:标准的BFS+位运算优化 poj1328:线段覆盖变种,把圆对应到线段上,贪心求解 poj2109:高精度开根,二分+高精度,注意要判断答案的位数,如果按照题目给的范围二分会TLE poj2586:给十二个月定盈亏(每个月+s或-d),连续5个月总的需要时亏,求12个阅读全文
posted @ 2016-10-12 09:19 Chellyutaha 阅读(90) 评论(0) 编辑
摘要: KMP 1 #include<cstring> 2 #include<algorithm> 3 #include<cstdio> 4 using namespace std; 5 const int maxn=2000; 6 char a[maxn+50],s[maxn+50]; 7 int nex阅读全文
posted @ 2016-09-28 09:01 Chellyutaha 阅读(403) 评论(0) 编辑
正文内容加载中...
posted @ 2018-04-17 00:02 Chellyutaha 阅读(3) 评论(0) 编辑
摘要: B(倍增) 题意: 分析: 先可以用two point预处理出以每个位置为起点的连续段<=k的下一个终点 然后对于每个询问,倍增跳就行了 时间复杂度O(nlogn) C(扫描线处理区间询问) 题意: 分析: 先容易考虑到莫队算法,合并用并查集就行,但删除就很不方便了,而且n高达1e6,所以就无法用莫阅读全文
posted @ 2018-04-03 18:23 Chellyutaha 阅读(7) 评论(0) 编辑
摘要: B(two point) 题意: 给出长度为n的非递减数组E[1..n],对于所有三元组(i,j,k),1<=i<j<k<=n且Ek-Ei<=U,我们需要计算出最大的(Ek-Ej)/(Ek-Ei) n<=1e5 分析: 考虑枚举i和k,那么j一定是i+1 容易发现k越靠右值越大,所以k是满足Ek-E阅读全文
posted @ 2018-04-02 23:04 Chellyutaha 阅读(4) 评论(0) 编辑
摘要: C(分段) 题意: 分析: 我们分别考虑p=2和p>=3的情况 当p=2的时候,个数明显是[L,R]内完全平方数的个数 当p>=3的时候,我们注意到这样的数字个数是1e6级别的,且a最多也不超过1e6 我们可以对于每个a去枚举对应的p,然后丢到一个set里去重 还有一点要注意的,p=2可能会和p>=阅读全文
posted @ 2018-04-01 16:52 Chellyutaha 阅读(4) 评论(0) 编辑
摘要: H(dp计数) 题意: 有一颗树,最深的点的深度是n,每个深度为i的点都有ai个孩子。 对于1<=k<=2n-2,回答树上有多少点对之间的距离是k,答案对1e9+7取模 n<=5000,ai<=1e9 分析: 考虑在lca处计数,发现时间复杂度是O(n^3),即使用卷积优化也仍旧是O(n^2logn阅读全文
posted @ 2018-03-29 19:45 Chellyutaha 阅读(5) 评论(0) 编辑
摘要: 题意: 分析: 考虑如何求方案数 dp[i][j]表示i个数字的和为j的方案数,这是个经典问题,转移有两种,一个是填一个数字1,一个是整体加1 然后这个问题并不是求方案数,而是求对应的权值和 我们很容易想到dp[i][j]维护对应的m个下降幂Σx^i,最后再用斯特林数还原成m次幂 但这样时间复杂度是阅读全文
posted @ 2018-03-24 12:23 Chellyutaha 阅读(6) 评论(0) 编辑
摘要: 题意: 有一个长度为n的数组a。你可以删除一个位置之后进行操作,一次操作可以把任意位置上的数字变成任意的值,问最少需要多少操作能使得数列变成严格上升的。 n<=200000 分析: 如果没有删除,那是个经典问题,我们只要对{ai-i}求最长不降子序列就行了 现在有个删除,若删除一个元素,那么它后面那阅读全文
posted @ 2018-03-22 11:43 Chellyutaha 阅读(20) 评论(0) 编辑
摘要: D(树上倍增) 题意: 刚开始有一个点1,权值为0。 接下来有q个操作,每个操作有两种: 1 R W:新加一个点,这个点的权值为W,这个点的父亲是R 2 R X:在从点R到1的路径上,取出从R开始的不降单调栈,问从栈底到栈顶这么多元素,最多能取出多少个点,使得这些点的点权和<=X 强制在线 q<=4阅读全文
posted @ 2018-03-20 16:30 Chellyutaha 阅读(8) 评论(0) 编辑
摘要: 091E(构造) 题意: 给出n,a,b。你需要构造出一个长度为n的n的排列,其中最长上升子序列的长度为a,最长下降子序列的长度为b。 n,a,,b<=3e5 分析: 我们可以构造出这样的数列,容易发现,a和b能表示出的最大的n是ab,能表示出的最小的n是a+b-1,所以只有a+b-1<=n<=ab阅读全文
posted @ 2018-03-20 16:02 Chellyutaha 阅读(15) 评论(0) 编辑
摘要: 开头致敬原文:http://codeforces.com/blog/entry/44351 dsu on tree 是一个很神奇的技术,可以替代启发式合并、点分治,可以处理无修改的子树询问问题,可以处理任何乱搞的询问,是“树上的莫队”。 一、什么是dsu on tree 从一个例题看起:现在有一个树阅读全文
posted @ 2018-03-16 23:06 Chellyutaha 阅读(10) 评论(0) 编辑