04 2015 档案

摘要:以下摘自AC大神的。据说百度空间要关了,所以,备份一下。。。现在我们定义:s(i,j) 表示 (i -> j)的 “右边”的点的个数g(i,j,k) 表示以 i为中心,从j点到k点的这个角度区间内部有多少个点。假设 i->j->k 已经按照逆时针的顺序那么观察g(i, j, k) + g(j, k,... 阅读全文
posted @ 2015-04-20 23:18 chenjunjie1994 阅读(835) 评论(0) 推荐(0)
摘要:多米诺gu牌覆盖问题也是经典的题目了,主要是由1*k的牌覆盖m*n的矩阵之类的。有递推求解的,也有的如下:如POJ 2411,由1*2的小矩形去覆盖m*n的矩形,问有多少种方案。这道题其实只要计算出上下两行之前的可能存在的状态转换,这样就很容易求解了。如下:void dfs(int pre,int ... 阅读全文
posted @ 2015-04-19 16:35 chenjunjie1994 阅读(242) 评论(0) 推荐(0)
摘要:这题是记忆化搜索很容易想到,但状态却不好设dp[i][j][u][d][l][r][k]。对于矩形为i*j,它的四周的颜色分别为u,d,l,r,横竖切的状态为k的种数。其中要注意一个问题是,停止不一定是不可进行,而是随时都可以停止,这样就会有一种涂色为对某个矩形而言只涂一种颜色。那么,就必定会有重复... 阅读全文
posted @ 2015-04-14 22:05 chenjunjie1994 阅读(164) 评论(0) 推荐(0)
摘要:方程很简单p[i][j] = min{dp[i-1][k] + |pos[i-1][k] - pos[i][k]|} + v[i][j];循环求值肯定TLE,主要是绝对值不方便。好吧,我真的BI了狗了,竟然想不到怎么样去绝对值。F,只要从左到右dp一次,再从右往左dp一次,不就好了吗?????F。当... 阅读全文
posted @ 2015-04-14 13:18 chenjunjie1994 阅读(173) 评论(0) 推荐(0)
摘要:题意很好理解。由于点是可以重复到达的,但可能每次经过路径的标志不一样,所以可以设每个点有四种状态"L”,'O','V','E'。然后按这些状态进行求最短路,当然是SPFA了。#include #include #include #include #include #define LL __int64... 阅读全文
posted @ 2015-04-14 10:38 chenjunjie1994 阅读(141) 评论(0) 推荐(0)
摘要:这道题感觉很坑。。不过,注意一些小问题。参考http://www.cnblogs.com/Lattexiaoyu/archive/2013/03/31/2992553.html改进了原来自己的复杂度。当无被占领时,其实枚举边缘也可以。但有计算公式,直接用了。当有占领时,BFS出每个空的格到被占领的最... 阅读全文
posted @ 2015-04-13 10:51 chenjunjie1994 阅读(222) 评论(0) 推荐(0)
摘要:AC自动机+状态DP。虽然很明显的AC自动机+状态DP题,但要分析问题上还是欠缺一点了。一直在犹豫枚举每一个字符选或不选的状态会不会超时,以为会达到状态有2^n,但其实根本没有。因为有很多状态是可以重复的,这是由于每一位字符选或不选,都只能转移动自动机的固定位置,所以,状态是有限的。状态压缩是为了确... 阅读全文
posted @ 2015-04-12 16:03 chenjunjie1994 阅读(184) 评论(0) 推荐(0)
摘要:简单状压DP,忘 了初始化,忘 了&和==的优先级,坑了我十几个WA。#include #include #include #include using namespace std;int dp[110][222][222];int row[110];int status[1>=1; } retur... 阅读全文
posted @ 2015-04-12 12:00 chenjunjie1994 阅读(288) 评论(0) 推荐(0)
摘要:立方和公式和平方和公式。表示从来不记得这些公式。。。每库礼物不同数量相同,总数=1+2+...+n=(n+1)*n/2选取礼物的可能性的最大值为[(n+1)*n/2]^3选取礼物价值重复两次的总数3*(1^2+2^2+...+n^2)*(1+2+...+n)=3*[n*(n+1)*(2*n+1)/6... 阅读全文
posted @ 2015-04-10 17:11 chenjunjie1994 阅读(136) 评论(0) 推荐(0)
摘要:题目1 : 同构时间限制:2000ms单点时限:1000ms内存限制:256MB描述给定2个树A和B,保证A的节点个数>=B的节点个数。现在你需要对树A的边进行二染色。一个好的染色方案,指不存在一个树A中的连通块,同时满足以下2个条件1. 其中只有同色的边2. 和B同构。两个树同构是指,存在一个一一... 阅读全文
posted @ 2015-04-10 16:01 chenjunjie1994 阅读(150) 评论(0) 推荐(0)
摘要:线段树,TLE,各种。唉。。。。我真是笨死了。。。。我用的线段树是记录左右区间最长连续棵数的。。。反正TLE#include #include #include #include using namespace std;const int N=50050;struct Q{ int val,inde... 阅读全文
posted @ 2015-04-09 22:25 chenjunjie1994 阅读(156) 评论(0) 推荐(0)
摘要:分析可知,最优的x应该在区间中的数排列后最中间的地方选择。由于区间的数个数有奇偶之分,于是当奇数个时,就是中位数了。偶数个时,就是排列后中间两数区间的任意一个。可以应用划分树求得前半部分,树状数组统计。#include #include #include #include #define LL __... 阅读全文
posted @ 2015-04-09 20:46 chenjunjie1994 阅读(307) 评论(0) 推荐(0)
摘要:划分树。具体划分树算法可以参考下面总结:划分树算法总结但上面的算法代码有点错误,可以看我的代码下面指出#include #include #include #include using namespace std;const int N=100050;int sorted[N];struct nod... 阅读全文
posted @ 2015-04-06 21:31 chenjunjie1994 阅读(142) 评论(0) 推荐(0)
摘要:威左夫博弈。使用黄金分割公式。k=[k(1+√5)/2],bk=ak+k(k=0,1,2,…,n方括号表示取整函数)奇妙的是其中出现了黄金分割数(1+√5)/2=1。618…,因此,由ak,bk组成的矩形近似为黄金矩形,由于2/(1+√5)=(√5-1)/2,可以先求出j=[a(√5-1)/2],若... 阅读全文
posted @ 2015-04-06 20:21 chenjunjie1994 阅读(171) 评论(0) 推荐(0)
摘要:DFS+博弈。假设存在两数(x,y),且x=2,只能转移向两种状态(x+y,y),或者(x,y)。而对于(x+y,y)只能向(x,y)转移,那么,可知,无论(x,y)为败点还是胜点,(x+ky,y)只能为胜点。于是,DFS搜索一下,就可以知道了。#include #include #include ... 阅读全文
posted @ 2015-04-06 19:55 chenjunjie1994 阅读(135) 评论(0) 推荐(0)
摘要:博弈题。初始时p=1,可以从2-9中任选一个数与之相乘,给定一个数n,当最先令p>=n的为获胜。可以知道,当ceil(n/9)时为必胜状态,那么,必败状态只能转往必胜状态,所以,(ceil(n/9)/2)的只能是必败状态。倒推回去,就能知道先手处在必胜还是必败状态了。#include #includ... 阅读全文
posted @ 2015-04-06 19:45 chenjunjie1994 阅读(267) 评论(0) 推荐(0)
摘要:也算难题,难在如何处理有些点可以无限次经过 问题。 这道题,其实很容易想到二分+TSP的状态压缩,但在处理上述问题时,确实没想到。题解是处理每一个Y或G或F点到其他YGF点的距离,BFS,这样就出现一个点只访问一次,而且即便在原图上重复经过某点,在重建的图也不会体现出来了。绝!#include #i... 阅读全文
posted @ 2015-04-02 22:13 chenjunjie1994 阅读(159) 评论(0) 推荐(0)