摘要:
POJ 3675 裸的题了。直接上模板就行了。注意的是,求出的是有向面积,有可能是负数。#include #include #include #include #include #include #include #include #include #include #include #includ... 阅读全文
摘要:
HDU 1561。这道是树形DP了,所谓依赖背包,就是选A前必须选B,这样的问题。1561很明显是这样的题了。把0点当成ROOT就好,然后选子节点前必须先选根,所以初始化数组每一行为该根点的值。由于多选了0点,所以记得把m++.#include #include #include #include ... 阅读全文
摘要:
题目3 : Spring Outing时间限制:20000ms单点时限:1000ms内存限制:256MB描述You class are planning for a spring outing. N people are voting for a destination out of K candi... 阅读全文
摘要:
POJ 1973这道题以前做过的。今儿重做一次。由于每个程序员要么做A,要么做B,可以联想到0/1背包(谢谢N巨)。这样,可以设状态dp[i][j]为i个程序员做j个A项目同时,最多可做多少个B项目。枚举最后一个程序员做多少个A项目进行转移(0/1)。dp[i][j]=max{dp[i-1][k]+... 阅读全文
摘要:
以下摘自AC大神的。据说百度空间要关了,所以,备份一下。。。现在我们定义:s(i,j) 表示 (i -> j)的 “右边”的点的个数g(i,j,k) 表示以 i为中心,从j点到k点的这个角度区间内部有多少个点。假设 i->j->k 已经按照逆时针的顺序那么观察g(i, j, k) + g(j, k,... 阅读全文
摘要:
多米诺gu牌覆盖问题也是经典的题目了,主要是由1*k的牌覆盖m*n的矩阵之类的。有递推求解的,也有的如下:如POJ 2411,由1*2的小矩形去覆盖m*n的矩形,问有多少种方案。这道题其实只要计算出上下两行之前的可能存在的状态转换,这样就很容易求解了。如下:void dfs(int pre,int ... 阅读全文
摘要:
这题是记忆化搜索很容易想到,但状态却不好设dp[i][j][u][d][l][r][k]。对于矩形为i*j,它的四周的颜色分别为u,d,l,r,横竖切的状态为k的种数。其中要注意一个问题是,停止不一定是不可进行,而是随时都可以停止,这样就会有一种涂色为对某个矩形而言只涂一种颜色。那么,就必定会有重复... 阅读全文
摘要:
方程很简单p[i][j] = min{dp[i-1][k] + |pos[i-1][k] - pos[i][k]|} + v[i][j];循环求值肯定TLE,主要是绝对值不方便。好吧,我真的BI了狗了,竟然想不到怎么样去绝对值。F,只要从左到右dp一次,再从右往左dp一次,不就好了吗?????F。当... 阅读全文
摘要:
题意很好理解。由于点是可以重复到达的,但可能每次经过路径的标志不一样,所以可以设每个点有四种状态"L”,'O','V','E'。然后按这些状态进行求最短路,当然是SPFA了。#include #include #include #include #include #define LL __int64... 阅读全文
摘要:
这道题感觉很坑。。不过,注意一些小问题。参考http://www.cnblogs.com/Lattexiaoyu/archive/2013/03/31/2992553.html改进了原来自己的复杂度。当无被占领时,其实枚举边缘也可以。但有计算公式,直接用了。当有占领时,BFS出每个空的格到被占领的最... 阅读全文
摘要:
AC自动机+状态DP。虽然很明显的AC自动机+状态DP题,但要分析问题上还是欠缺一点了。一直在犹豫枚举每一个字符选或不选的状态会不会超时,以为会达到状态有2^n,但其实根本没有。因为有很多状态是可以重复的,这是由于每一位字符选或不选,都只能转移动自动机的固定位置,所以,状态是有限的。状态压缩是为了确... 阅读全文
摘要:
简单状压DP,忘 了初始化,忘 了&和==的优先级,坑了我十几个WA。#include #include #include #include using namespace std;int dp[110][222][222];int row[110];int status[1>=1; } retur... 阅读全文
摘要:
立方和公式和平方和公式。表示从来不记得这些公式。。。每库礼物不同数量相同,总数=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... 阅读全文
摘要:
题目1 : 同构时间限制:2000ms单点时限:1000ms内存限制:256MB描述给定2个树A和B,保证A的节点个数>=B的节点个数。现在你需要对树A的边进行二染色。一个好的染色方案,指不存在一个树A中的连通块,同时满足以下2个条件1. 其中只有同色的边2. 和B同构。两个树同构是指,存在一个一一... 阅读全文
摘要:
线段树,TLE,各种。唉。。。。我真是笨死了。。。。我用的线段树是记录左右区间最长连续棵数的。。。反正TLE#include #include #include #include using namespace std;const int N=50050;struct Q{ int val,inde... 阅读全文