参考了这里http://blog.sina.com.cn/s/blog_6a6aa7830100x890.html题意:有N条赛道,每一条初始时都是坏的,修复第i条赛道的费用是cost[i];赛道上会举办m个赛事,每个赛事会用到[L,R]之间的赛道,而且要保证赛事进行必须使得这一段的赛道完好,每项赛事还可以获得一定的钱数。问题要求安排哪些比赛可以使得收益最大。可以设dp[i]表示到i这个赛道为止能获得最大的利益有状态转移方程dp[i]=max(dp[i-1],dp[j]+benefit[j+1][i]-mend[j+1][i]);注: j+1->i之间有赛道数据范围200000 暴力的话 Read More
http://www.codeforces.com/problemset/problem/182/E给你n中篱笆,每种篱笆都有一个长和一个宽,设为a[i],b[i],再给你一个长度L问用这些篱笆的长可以组成多少长度为 L 的漂亮的篱笆漂亮的定义: 1、相邻的两个篱笆要属于不同的种类 2、 后一个篱笆的长必须等于前一个篱笆的宽注意:一个篱笆的两个边长都可以作为长因为所选的每个篱笆都有两种状态,一种是用a[i]作为长,一种是用b[i]作为长所以可以设dp[i][j][0]表示组成i长度的篱笆,最后一个为第j个篱笆,且第j个篱笆用a[i]作为长的方案数同样dp[i][j][1]表示第j... Read More
http://www.codeforces.com/problemset/problem/182/D求两个字符串的公约数的个数,具体细节见题目利用KMP可以求最小周期的特性来解这道题具体证明参见我的另一篇文章所以第一步:KMP求出两个串的最小周期 t1 t2第二步:分情况讨论1: t1==n&&t2==m2: t1==n t2!=m3: t1!=n t2==m4: t1!=n&&t2!=mView Code #include<cstdio>#include<cstring>int n,m;char a[100100],b[100100]; Read More
给出一棵树询问 a-b的路径长度是多少sum【i】记录节点i到根的距离长度对于每次询问,用RMQ预处理的LCA可以在线回答每个询问, ans=sum[a]+sum[b]-2*sum[LCA(a,b)];但是这个题目离线的tarjan算法在速度上上拥有巨大的优势,几乎是瞬秒的View Code #include<string.h>#include<stdio.h>#include<vector>#include<math.h>using namespace std;const int M =40100;const double inf = 1e20 Read More