03 2015 档案

摘要:题目中说明每个城市至少要走一次,至多走2次,因此要用到三进制压缩,然后就是状态转移方程了。这道题就处理三进制的地方麻烦一点。同时注意,在选择最小长度时,一定是要每一个点都经过至少一次的,即是状态的每一个三进制位均 >=1.#include #include #include #include usi... 阅读全文
posted @ 2015-03-31 22:00 chenjunjie1994 阅读(175) 评论(0) 推荐(0)
摘要:设dp状态为dp[i][j]为当前访问过的结点状态为i且当前停留点为j时的最短路径。用二进制存存储访问过的状态,访问过为1,否则为0。#include #include #include #include using namespace std;const int inf=(1dp[tmp.i][t... 阅读全文
posted @ 2015-03-31 20:29 chenjunjie1994 阅读(132) 评论(0) 推荐(0)
摘要:经典的状态压缩DP题了。做了前面两题,就不感觉难了。#include #include #include #include using namespace std;int stack[1>1,r2=st>>2; if(l1&i){flag=false; break;} if(l2&i){... 阅读全文
posted @ 2015-03-31 19:55 chenjunjie1994 阅读(126) 评论(0) 推荐(0)
摘要:简单的状态压缩。#include #include #include #include using namespace std;const int Status=1>=1;// coutm-1){ // coutinfer) continue; if((stack[p]&G[i+1])... 阅读全文
posted @ 2015-03-31 11:10 chenjunjie1994 阅读(107) 评论(0) 推荐(0)
摘要:好题。果然好题,经典了。列一个计划,清明前做好状压DP。之后就刷剩下的MULTI。#include #include #include #include using namespace std;const int Status=(1>2))||(i&(j>>2))) crashpo[i][j]=tr... 阅读全文
posted @ 2015-03-30 21:58 chenjunjie1994 阅读(184) 评论(0) 推荐(0)
摘要:简单题,先从右边消起,注意结束时a[1]==0才能是yes#include #include #include #include using namespace std;const int N=1000050;int a[N],n;int main(){ int T; scanf("%d",&T);... 阅读全文
posted @ 2015-03-30 10:20 chenjunjie1994 阅读(150) 评论(0) 推荐(0)
摘要:实现简单,但不得不说是一道好题。当员工数少于医生数时,直接输出K,因为此时N个员工同时检查,必定是最少的时间了。当员工数大于医生数时,可以把员工的项目看成一段一段的,每个医生对其进行切割,总能得到时间不冲突的情情况。#include #include using namespace std;int ... 阅读全文
posted @ 2015-03-30 09:47 chenjunjie1994 阅读(159) 评论(0) 推荐(0)
摘要:一道好题。想了好久没想出来,只是觉得总要二分独立处理矩形。感觉自己在把问题转化为数学公式以及分解问题的方面的能力很不足。http://blog.csdn.net/wh2124335/article/details/8739097解题思路:考虑每次询问t,对于单一矩形的面积的计算方法~对于询问t。计算... 阅读全文
posted @ 2015-03-30 09:00 chenjunjie1994 阅读(124) 评论(0) 推荐(0)
摘要:很简单了,当m>=3&&m-1&&m.compareTo(n.add(p))<1){ System.out.println("YES"); } else System.out.println("NO"); } }} 阅读全文
posted @ 2015-03-29 21:57 chenjunjie1994 阅读(147) 评论(0) 推荐(0)
摘要:简单得不能再简单的DP了。#includeconst int inf=1<<30;using namespace std;int map[22][22];int dp[22][22];//表示前i个时刻在第j个位置时的最小消耗能量int n,m;int main(){ while(~scanf... 阅读全文
posted @ 2015-03-29 21:48 chenjunjie1994 阅读(136) 评论(0) 推荐(0)
摘要:DP.设状态dp[i][j]表示j辆车后还剩余i个人的花费,枚举一个车的座位k,加上剩下人数i,注意i+k不能超过n,就很容易dp了。#include #include #include using namespace std;const int inf=(1n) break; dp[i]... 阅读全文
posted @ 2015-03-29 20:38 chenjunjie1994 阅读(118) 评论(0) 推荐(0)
摘要:也是水题了,不过注意负负也可以为正就好了。今天看见bestcoder上的人那么厉害,唉,我什么时候才能赶上啊。。#include #include #include #include #include #define LL __int64using namespace std;int main(){... 阅读全文
posted @ 2015-03-29 19:47 chenjunjie1994 阅读(115) 评论(0) 推荐(0)
摘要:参考http://www.cnblogs.com/v-July-v/archive/2011/08/13/2214132.html《算导》那么,更快速的多项式乘法就依赖于能否把一个系数形式的多项式快速转化成点值对的形式,和点值对形式快速转化成系数形式。即如下形式:下图中的Evaluation + P... 阅读全文
posted @ 2015-03-28 16:03 chenjunjie1994 阅读(261) 评论(0) 推荐(0)
摘要:此题不难,但我就是RE,搞不懂啊。。。郁闷。说下基本算法吧,只要留意到要分解的因式是(x+ai)..的形式,x前是系数为1的,而且,它们的绝对值在1000以内,于是,好办了。只要枚举(x+k)中的k就可以了。然后按照除法得出余下的因式就OK了。注意结束的条件,最高次必须系数是1,结束后0次的也应当是... 阅读全文
posted @ 2015-03-26 21:47 chenjunjie1994 阅读(127) 评论(0) 推荐(0)
摘要:真是神奇,G++TLE,C++500MS。。。判环有一个图论知识就是,m>=n时必有环。如果以m的范围建图,会MLE。然后,利用拓扑排序再来判定是否有环,因为有些景点可能是孤立的。同时,在拓扑时就可以DP求最长路了。#include #include #include #include #defin... 阅读全文
posted @ 2015-03-26 11:52 chenjunjie1994 阅读(130) 评论(0) 推荐(0)
摘要:直接DP求组合数即可。#include #include #include #include #define LL __int64using namespace std;LL dp[21][70];void Init(){ memset(dp,0,sizeof(dp)); dp[0][0]=1ll;... 阅读全文
posted @ 2015-03-26 11:12 chenjunjie1994 阅读(78) 评论(0) 推荐(0)
摘要:DIJK,最短路,建两个图就好了。#include #include #include #include #include #include using namespace std;const int N = 205;const int inf = 0x3f3f3f3f; int n, m, D1,... 阅读全文
posted @ 2015-03-26 10:41 chenjunjie1994 阅读(122) 评论(0) 推荐(0)
摘要:很简单的排序题而已。#include #include #include #include using namespace std;const int M=500005;struct Matter{ int bgn,en; bool operator en){ ans+=(Ma[i].bgn-... 阅读全文
posted @ 2015-03-26 10:37 chenjunjie1994 阅读(121) 评论(0) 推荐(0)
摘要:祼的完全背包问题#include #include #include #include #define LL __int64using namespace std;LL dp[100005];struct Food{ int a,b;}fd[105];int main(){ int n,m; whi... 阅读全文
posted @ 2015-03-26 10:09 chenjunjie1994 阅读(112) 评论(0) 推荐(0)
摘要:可以反过来求不是相同关系的小朋友。相当于染色问题吧。对于A小朋友,它的T个朋友和另外的(N-1-T)个同学就可以组成一个这样的三角形。T*(N-1-T),由于一条非染色边被计算两次,所以除以2.#include #include #include #include #define LL __int6... 阅读全文
posted @ 2015-03-25 22:23 chenjunjie1994 阅读(96) 评论(0) 推荐(0)
摘要:#include #include #include #include #define LL __int64using namespace std;const LL MOD=1000000007ll;LL C[500][500];LL Nn[500];LL dp[50][500]; //表示前i个系... 阅读全文
posted @ 2015-03-25 22:09 chenjunjie1994 阅读(188) 评论(0) 推荐(0)
摘要:贪心算法+优先队列。很明显是应当先消灭blood值大的,那么注意到,对于少blood值的,能灭大blood值的箭必定能消灭小blood值的,所以,可以先排序,在消灭一个blood值的时候,选择一个小Q币的即可。#include #include #include #include #include ... 阅读全文
posted @ 2015-03-25 21:16 chenjunjie1994 阅读(270) 评论(0) 推荐(0)
摘要:很久之前做的一题,忽然想起来,依然觉得思路巧妙。//这道题,确实是一道好题。但如何应用KMP,确实大大超出了意料中。//这道题匹配的是某元素在子串中的名次,也就是在子串中排第几小。我想了整整一天,才想到一个较好//的方法来确定在子串中的位置,本来以为可以用这个来暴力枚举再加剪枝可以过,但没想到。。T... 阅读全文
posted @ 2015-03-24 21:25 chenjunjie1994 阅读(152) 评论(0) 推荐(0)
摘要:T_T终于让我过了,坑啊,竟然时限是200ms。。。我是预处理出不整除了个数的,因为这个较容易一点。利用算术基本定理,f=p1^a1*p2^a2......所以,整除它的个数就是(a1+1)*(a2+1)......开始预处理时,利用线性筛来先求素数,再计算,。。。呃,果断TLE了。后来发度娘告诉我... 阅读全文
posted @ 2015-03-23 09:59 chenjunjie1994 阅读(209) 评论(0) 推荐(0)
摘要:一直在纠结怎么样表示找到了人,,,开始时竟灰笨得设两个BOOL。后来参考别人的可以使用二进制位。另外,此处有一个剪枝就是,就到达该点之后的状态的found(即找到人的状态)在之前已出现过,可以剪去。#include #include #include #include using namespace... 阅读全文
posted @ 2015-03-22 22:07 chenjunjie1994 阅读(281) 评论(0) 推荐(0)
摘要:搞了好久,发现自己是想法没错的,错在输入,必须是while(){}#include #include #include #include using namespace std;struct Water{ int px,py; int dirx,diry; Water(){} ... 阅读全文
posted @ 2015-03-22 20:09 chenjunjie1994 阅读(113) 评论(0) 推荐(0)
摘要:就是那个O(nlogn)的LIS算法。#include #include using namespace std;int dt[100005],dp[100005],num[100005];int n,d;int bin(int a){ int l=1,r=n; int ans=0; while(l... 阅读全文
posted @ 2015-03-22 16:32 chenjunjie1994 阅读(209) 评论(0) 推荐(0)
摘要:好端端的被HACK掉了。。。应该是在两端都要补W个0才对,之前只想到要在后面补足0,没想到前面也应该补足,因为前面即便存在0也可能使得移动的积木数最少。。T_T#include #include #include #include #define LL __int64using namespace ... 阅读全文
posted @ 2015-03-21 22:03 chenjunjie1994 阅读(147) 评论(0) 推荐(0)
摘要:EASY题,直接统计(1,1)到(i,j)的黑点个数,然后计算出以(i,j)点为右下角的矩形内的黑点个数是x*y即可。注意当x==y时不要重复统计。#include #include #include #include #include using namespace std;const int N... 阅读全文
posted @ 2015-03-20 17:33 chenjunjie1994 阅读(130) 评论(0) 推荐(0)
摘要:SHIT,SHIT,SHIT,SHIT,SHIT...这道题可以使用AC自动机+DP来解决。也就是用非法路径建立TRIE图,然后从trie[root][1]点开始广搜DP即可。千万要注意一点,题目里有说:小明每次走的时候只能走到比当前所在点编号大的位置因为这个WA了无限次。。。#include #i... 阅读全文
posted @ 2015-03-20 17:13 chenjunjie1994 阅读(270) 评论(0) 推荐(0)
摘要:EASY题,快速幂。。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define LL __int64 7 using namespace std; 8 const LL MOD=1000000007; 9 10 ... 阅读全文
posted @ 2015-03-20 12:56 chenjunjie1994 阅读(114) 评论(0) 推荐(0)
摘要:中了一个坑,循环时竟然从该物品的价格和分数开始,中招了,因为就算价格高于钱数,可能分数符合呢????所以要从零开始。#include #include #include #include #include using namespace std;int dp[102][102][102][7];in... 阅读全文
posted @ 2015-03-17 23:14 chenjunjie1994 阅读(108) 评论(0) 推荐(0)
摘要:同样是二分+DLX即可。#include #include #include #include #include #define LL __int64using namespace std;const int maxn=3800;const int maxc=65;const int maxr=65... 阅读全文
posted @ 2015-03-17 22:03 chenjunjie1994 阅读(125) 评论(0) 推荐(0)
摘要:二分答案+重复覆盖。注意返回的条件哦,不能光套模板。#include #include #include #include #include using namespace std;const int maxn=3600;const int maxc=55;const int maxr=55;con... 阅读全文
posted @ 2015-03-17 20:55 chenjunjie1994 阅读(125) 评论(0) 推荐(0)
摘要:刷水完毕,年月日,日日日日日日日日日日日日日日日日日日#include int a[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};const int Y = 2013,M = 3,D = 24;int leap(int y){ if(y%400 == ... 阅读全文
posted @ 2015-03-16 22:00 chenjunjie1994 阅读(146) 评论(0) 推荐(0)
摘要:省一等,保研。#include #include #include #include using namespace std;int H,M,S,h,m,s;int main(){ int T; bool flag1,flag2; scanf("%d",&T); while(... 阅读全文
posted @ 2015-03-16 21:56 chenjunjie1994 阅读(123) 评论(0) 推荐(0)
摘要:哈哈哈哈哈哈哈哈哈,省赛,一等奖,一定的一定的一定的一定的。。。#include #include #include #include using namespace std;const int N=110;bool flag[N];int main(){ int T,n,cnt,maxh,t... 阅读全文
posted @ 2015-03-16 21:33 chenjunjie1994 阅读(130) 评论(0) 推荐(0)
摘要:看不起我?哼,迟早让你后悔,让你妒忌。操操操操。。。。。T_T#include #include #include #include #include #define LL __int64using namespace std;const int N=25;struct Judger{ dou... 阅读全文
posted @ 2015-03-16 21:15 chenjunjie1994 阅读(5324) 评论(0) 推荐(0)
摘要:今天让人看不起了,话说好伤心,说我搞了ACM那么久都没获得拿得出手的奖。。。。今晚爷爷我要狂刷2013腾讯马拉松的水题,奶奶滴,哈哈哈哈。。。T_T 1 #include 2 #include 3 #include 4 #include 5 #define LL __int64 6 7 u... 阅读全文
posted @ 2015-03-16 21:05 chenjunjie1994 阅读(110) 评论(0) 推荐(0)
摘要:很容易判断是BFS,可是,呵呵呵呵呵呵。。。。。。。。。HASH判重吧,判连通可以用并查集。以下代码是转别人的,我码了一下午,发觉越码越丑,呵呵了。http://www.cnblogs.com/Lyush/p/3416507.html#include #include #include #inclu... 阅读全文
posted @ 2015-03-16 16:26 chenjunjie1994 阅读(153) 评论(0) 推荐(0)
摘要:Manacher算法,相当于求回文串。关于Manacher,转http://blog.sina.com.cn/s/blog_70811e1a01014esn.html现在进入正题:首先,在字符串s中,用rad[i]表示第i个字符的回文半径,即rad[i]尽可能大,且满足:s[i-rad[i],i-1... 阅读全文
posted @ 2015-03-16 11:59 chenjunjie1994 阅读(155) 评论(0) 推荐(0)
摘要:各种序列复习:(1)最长上升子序列。1、这个问题用动态规划就很好解决了,设dp[i]是以第i个数字结尾的上升子序列的最长长度。那么方程可以是dp[i]=max(dp[j]+1)。(jd[p],q 2 #include 3 #include 4 using namespace std;... 阅读全文
posted @ 2015-03-16 10:57 chenjunjie1994 阅读(213) 评论(0) 推荐(0)
摘要:直接贪心就好。#include #include #include #include #define LL __int64using namespace std;struct Job{ int s,e,v; bool operator m) n--; if(n... 阅读全文
posted @ 2015-03-16 09:39 chenjunjie1994 阅读(179) 评论(0) 推荐(0)
摘要:裸 的错排。。。。 1 #include 2 #include 3 #include 4 #include 5 #define LL __int64 6 using namespace std; 7 const LL MOD=1000000007; 8 LL cuo[110]; 9 10 v... 阅读全文
posted @ 2015-03-16 09:27 chenjunjie1994 阅读(137) 评论(0) 推荐(0)
摘要:这题我已不想吐槽自己了。第一反应就是个01背包,也就是加了些限制。开始时按 l 排序,按01的来写,呵呵,输出数组时才发现不对。后来改为按 l-t即最早开始时间排,OK。但自己手贱竟然写了个线段树要快速返回前面大的值。2B啊,既然按最早开始时间加入,那分值必定是按顺序递增的啊,根本就没必啊。。。所以... 阅读全文
posted @ 2015-03-15 21:05 chenjunjie1994 阅读(212) 评论(0) 推荐(0)
摘要:超简单的公式题(2^n-2)。不过,要过可不容易,因为会爆64位,所以,可以使用快速乘法。#include #include #include #define LL unsigned __int64using namespace std;LL n,p;LL mul(LL x,LL m,LL p)//... 阅读全文
posted @ 2015-03-15 21:01 chenjunjie1994 阅读(172) 评论(0) 推荐(0)
摘要:easy !! 1 #include 2 #include 3 #include 4 #define LL __int64 5 using namespace std; 6 7 8 int input[210],l; 9 char in[210];10 struct BigNumber{1... 阅读全文
posted @ 2015-03-15 20:59 chenjunjie1994 阅读(205) 评论(0) 推荐(0)
摘要:整理一下思路,明天再写。。。这道题,其实就是求包含大于10的斐波那切数字的第K(K是斐波那契数)个数。注意到斐波那契数的爆炸性增长,所以在范围 内的符合要求的F数并不多吧。比如求第K个F数,那么,前K个F数都是这样的数,组成它们的数字中有斐波那契数。这就是字符串匹配吧。把这些数转化成字符串匹配,也就... 阅读全文
posted @ 2015-03-15 00:13 chenjunjie1994 阅读(199) 评论(0) 推荐(0)
摘要:超级神奇有趣题。AC自动机+数位DP。其实,数位DP在处理含有某些数字时特别不好处理,应该把它倒转为求不含有。这道题把数位DP+AC自动机结合起来,实在是很巧妙,把数字变为串来处理,强大!要使用AC自动机来处理数位DP,首先就是要确定哪些状态由当前状态开始是不可以到达的,有哪些是可以到达的。这是显而... 阅读全文
posted @ 2015-03-14 21:23 chenjunjie1994 阅读(197) 评论(0) 推荐(0)
摘要:数位DP。一般是利用DFS来求数位DP了,结合了记忆化搜索。设dp[i][j][k]为前i位,并且前i位的数位和mod7为j,前i位的数字的表示数字值mod7。为什么可以这样呢?因为继续DFS下去,必定是得到一个不是7倍数的数的,因而,k这个位只是在确定叶子结点时有用的。然后,可以这样选,求一个一些... 阅读全文
posted @ 2015-03-14 15:37 chenjunjie1994 阅读(294) 评论(0) 推荐(0)
摘要:这道题,说实话,细节很多。不过,我没想到,光细节就能搞死人了。。。参考了http://www.cppblog.com/varg-vikernes/archive/2010/03/12/109559.html首先,要把所有牛放到坐标系上来表示。目的,就是求出包含最多点的直角三角形。直角三角形的两条直角... 阅读全文
posted @ 2015-03-14 10:41 chenjunjie1994 阅读(244) 评论(0) 推荐(0)
摘要:T_T为毛会这样子,我的写就是过不了,。。。。。。。其实这题不难,很容易想到吧,我一开始也想着用枚举这类方法,但复杂度实在不敢想,没想到,真的是用这种方法。。今天学了一个叫树的重心,可以使分治的子树点数大致相等,降低了递归的层次吧。。。嗯,这题的复杂度,怎么的也有o(n^2)以上,而且n=40000... 阅读全文
posted @ 2015-03-12 00:06 chenjunjie1994 阅读(155) 评论(0) 推荐(0)
摘要:树的重心,EASY题。树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡. 实际上树的重心在树的点分治中有重要的作用,可以避免N^2的极端复杂度(从退化链的一端出发),保证NlogN的复杂度,利用树型dp可以很好地求树的重心... 阅读全文
posted @ 2015-03-11 21:21 chenjunjie1994 阅读(138) 评论(0) 推荐(0)
摘要:我做过的最棘手的一道题了,不是因为难,难就是不懂,而是因为明明思路对了,却调了很久程序没发现自己哪错了。。。。。就连样例都不过操,别人的代码::::::::::::::::::::::::::::...。。。突然醒悟了,好像在坐标转换时错了。注意哦,坐标转换的方法。。。坑了我一晚上。。#includ... 阅读全文
posted @ 2015-03-10 22:08 chenjunjie1994 阅读(174) 评论(0) 推荐(0)
摘要:求一棵树内最远的两点,DFS,顺便记录以某节点为根内最远的两点的距离,返回最远点的距离。其实是DP。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define LL unsigned __int64 7... 阅读全文
posted @ 2015-03-10 19:45 chenjunjie1994 阅读(159) 评论(0) 推荐(0)
摘要:水一发,最小生成树。注意不连通情况。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define LL unsigned __int64 7 using namespace std; 8 9 cons... 阅读全文
posted @ 2015-03-10 12:40 chenjunjie1994 阅读(102) 评论(0) 推荐(0)
摘要:BFS+强连通。输出max(缩点后出度为0的点数,缩点后入度为0的点数)。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define LL unsigned __int64 7 using... 阅读全文
posted @ 2015-03-09 22:59 chenjunjie1994 阅读(198) 评论(0) 推荐(0)
摘要:连接点应该是只需连接而不必覆盖。按开始时间排序。假设当前最远为t,则按序枚举在t+1范围内开始的cow即可,再求出最远点。注意break条件。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define ... 阅读全文
posted @ 2015-03-09 21:40 chenjunjie1994 阅读(195) 评论(0) 推荐(0)
摘要:这道题以前好像在哪遇到过。注意树的每一条边都是桥,所以,桥两端的点要到达对方是必须通过这条边的。于是,可以把边由小到大排序,利用并查集,这样,每加一条边就连通了一部分,而随着权值的增大,必定是桥两端到达对方经过的最大的边。于是总的权为左边集合数*右边集合数*桥的权值,就可以求出最大值和了。求最小值和... 阅读全文
posted @ 2015-03-09 15:56 chenjunjie1994 阅读(159) 评论(0) 推荐(0)
摘要:题意有点不明白,因为MAX为int最大值,推测为64位,AC#include #include #include #include #include #define LL __int64using namespace std; const LL MAX=2147483647;cons... 阅读全文
posted @ 2015-03-09 11:13 chenjunjie1994 阅读(168) 评论(0) 推荐(0)
摘要:我想了很久了,后来还是把N分解质因数,枚举各种组合,反正也不多吧,按题目条件,然后就过了。#include #include #include #include #include #define LL __int64using namespace std; LL prime[1000... 阅读全文
posted @ 2015-03-09 11:12 chenjunjie1994 阅读(176) 评论(0) 推荐(0)
摘要:挺水的一道线段树+DP题。可以从底往上添加线段,每添加线段之前查询端点所被覆盖的区间线段。再从最顶往下DP,每次从端点出发,递推覆盖该端点的区间线段的两端的值即可。 1 #include 2 #include 3 #include 4 #include 5 #include ... 阅读全文
posted @ 2015-03-08 23:20 chenjunjie1994 阅读(381) 评论(0) 推荐(0)
摘要:卡特兰数的一个变形而已。一个经典的习题变过来的:n+m个人排队买票,并且满足,票价为50元,其中n个人各手持一张50元钞票,m个人各手持一张100元钞票,除此之外大家身上没有任何其他的钱币,并且初始时候售票窗口没有钱,问有多少种排队的情况数能够让大家都买到票。此时答案是:反过来考虑就是,把右括号看成... 阅读全文
posted @ 2015-03-08 20:20 chenjunjie1994 阅读(410) 评论(0) 推荐(0)
摘要:呃。。其实挺水的一题,不说了。。伤心。。这题应该是要分开奇偶性的,因为如果不分开,当a0+...+ai=0,a(i+1)+....+aj=K时,求出来会出错。维护两种前缀和,sum=a0-a1+a2......aisum=-a0+a1-a2.....ai维护两个HASH,第一种前缀和当i为奇数时加入... 阅读全文
posted @ 2015-03-08 16:46 chenjunjie1994 阅读(150) 评论(0) 推荐(0)
摘要:每次添加,计算出被覆盖的长度,离散化X坐标,按Y坐标排序加入即可。今天好伤心,我好水。。。。#include #include #include #include using namespace std; #define lson l , m , rt > 1; if (... 阅读全文
posted @ 2015-03-07 21:11 chenjunjie1994 阅读(135) 评论(0) 推荐(0)
摘要:维护左连续,右连续区间最大值,同时维护区间内最大的连续区间值。同时是使用标记法完成。很强大。注意出现的状态-1,很巧妙,代表该结点不能再下传了,即不符合下传条件。#include #include #include #include using namespace std; ... 阅读全文
posted @ 2015-03-07 12:27 chenjunjie1994 阅读(131) 评论(0) 推荐(0)
摘要:基本参考http://blog.csdn.net/metalseed/article/details/8039326总的来说,敲完一遍理解会更加好一点,标记下传法。U:把区间[l,r]覆盖成1I:把[-∞,l)(r,∞]覆盖成0D:把区间[l,r]覆盖成0C:把[-∞,l)(r,∞]覆盖成0 , 且... 阅读全文
posted @ 2015-03-07 11:04 chenjunjie1994 阅读(170) 评论(0) 推荐(0)
摘要:这题和上题一样,但要注意,这题专业反人类反STL,用map离散化TLE。。#include #include #include #include #include #include #include #include #include #include #define LL __int64usin... 阅读全文
posted @ 2015-03-05 17:59 chenjunjie1994 阅读(300) 评论(0) 推荐(0)
摘要:成段更新,使用标记向下传递的方法,当前Now被染色,向下传可分成两半,这样,在处理另一半时,其中一半仍保存着正确的颜色。#include #include #include #include #include #include #include #include #include #include ... 阅读全文
posted @ 2015-03-05 15:54 chenjunjie1994 阅读(172) 评论(0) 推荐(0)
摘要:线段树递归查询,取最大值建树#include #include #include #include #include #include #include #include #include #include #define LL __int64using namespace std;const i... 阅读全文
posted @ 2015-03-05 10:37 chenjunjie1994 阅读(140) 评论(0) 推荐(0)
摘要:选最大值。线段树。#include #include #include #include #include #include #include #include #include #include #define LL __int64using namespace std;const int N=... 阅读全文
posted @ 2015-03-04 22:16 chenjunjie1994 阅读(113) 评论(0) 推荐(0)
摘要:线段树单点更新,区间求和。#include #include #include #include #include #include #include #include #include #include #define LL __int64using namespace std;const in... 阅读全文
posted @ 2015-03-04 21:47 chenjunjie1994 阅读(133) 评论(0) 推荐(0)
摘要:很明显的DP状态了,设dp[i][j],设当前在状态点i,经过j步能得到的最大分值。也是从root直接扩展就可以了。至于字符串,实在有点困难,开始想着记录路径,但后来发现路径从后往前回溯不一定是字典序最小,夭折。。。看别人的,发现直接就把字符串存下来,跪了,也对,毕竟才50个。直接存字符串,比较,选... 阅读全文
posted @ 2015-03-03 22:07 chenjunjie1994 阅读(151) 评论(0) 推荐(0)
摘要:直接从root遍历扩展DP,当扩展到的字母和字符串字母相同时,不用修改,不同时,要求修改加1注意不要扩展危险结点。#include #include #include #include #include #include #include #include #include #include #de... 阅读全文
posted @ 2015-03-03 21:19 chenjunjie1994 阅读(135) 评论(0) 推荐(0)
摘要:下午连续看了两题的AC自动机+DP题,发现都有点规律了,都是由trie图循环赋值,按照结点一步步向外推的,而且状态设的也很相似。。。dp[i][j][k],一开始以为至少k个是可以相同的,其实这k个串应该是不同的,于是就可以按照二进制压缩这M个串,1表示选上了这个串。注意一下fail指向的结点要与当... 阅读全文
posted @ 2015-03-03 19:59 chenjunjie1994 阅读(166) 评论(0) 推荐(0)
摘要:什么鬼,真的是有负数的吗?我在字符加上了128才过了。dp[i][j],经过i步到达j状态的路径数。转移很容易了,建个trie图就可以,由前一步可连通到和更新即可。另外,要用到大数和AC自动机DP 1 #include 2 #include 3 #include 4 #include ... 阅读全文
posted @ 2015-03-03 00:15 chenjunjie1994 阅读(110) 评论(0) 推荐(0)
摘要://因为2^64次方不可能表示,直接定义unsigned __int64,可以自动截断。其他和POJ 2778差不多。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include ... 阅读全文
posted @ 2015-03-02 16:59 chenjunjie1994 阅读(244) 评论(0) 推荐(0)
摘要:主要利用状态之间的转换吧,可以把各个状态之间的转换成矩阵,利用矩阵乘法来找出有多少条路径。题解转自:http://blog.csdn.net/morgan_xww/article/details/7834801•题意:有m种DNA序列是有疾病的,问有多少种长度为n的DNA序列不包含任何一种有疾病的D... 阅读全文
posted @ 2015-03-02 15:02 chenjunjie1994 阅读(251) 评论(0) 推荐(0)
摘要:EASY题#include #include #include #include #include #include #include #include #include using namespace std;const int dictsize=130;const int QN=400000;b... 阅读全文
posted @ 2015-03-01 09:54 chenjunjie1994 阅读(172) 评论(0) 推荐(0)