ACM
lzf_lamer
这个作者很懒,什么都没留下…
展开
-
2016"百度之星" - 资格赛(Astar Round1)
Problem A Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description 度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一个很长很长的字符串。现在麻烦来了,他忘记了原来的字符串都是什么,神奇原创 2016-05-15 11:27:29 · 675 阅读 · 0 评论 -
拓扑排序
定义:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若 ∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(TopoiSicai Order)的序列,简称拓扑序列。 这个定义比较比较抽象,来点具体的。比如,在上大学之前,你需要先上高中,在上高中之前,你需要原创 2016-05-16 22:05:52 · 516 阅读 · 0 评论 -
区间DP
先来看看题吧. 1382 沙子合并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 设有N堆沙子排成一排,其编号为1,2,3,…,N(N<=300)。每堆沙子有一定的数量,可以用一个整数来描述,现原创 2016-07-28 16:14:27 · 248 阅读 · 0 评论 -
POJ3254状态压缩
题目链接:http://poj.org/problem?id=3254 题目大意:给你一个n*m的矩阵,其中1代表可以放牛,0代表不能放牛,并且每两头牛之间不能相邻,问有多少种放牛的方案。1头牛也不放也表示一种方案。 思路是很清楚的,就是每一列用一个二进制数表示状态,先预处理出所有仅满足两头牛不相邻 的状态,然后再和给的地图做&运算。可是一开始数组开反了,可POJ一直报的WA,一直改啊改。。。原创 2016-08-03 13:57:37 · 267 阅读 · 0 评论 -
POJ1190
搜索剪枝. http://poj.org/problem?id=1190 #include #include #define min(a,b) a>b?b:a #define inf 10e6 using namespace std; int v,m,ans; int mins[25],minv[25]; void dfs(int k,int r,int h,int v,int s) {原创 2016-08-03 15:53:37 · 298 阅读 · 0 评论 -
POJ1376
#include #include #include #define inf 10e6 using namespace std; struct node { int x,y,f,step; }; int dir[4][2]={0,1,1,0,0,-1,-1,0}; int n,m,ex,ey; int g[55][55],dis[55][55][4]; char face[20]; node s原创 2016-08-04 16:19:23 · 336 阅读 · 0 评论 -
Poj1185状态压缩
因为行数很少,所以我们可以按行来定义状态。那么每一行的状态就只与它的上两行有关。由于只有放于不放,所以可以用二进制数表示状态。 那么对于列呢,我们可以先预处理出一个数组表示对于列数,有多少种组合,保存在stk[]中,(不考虑平地与高原,只考虑两两不互轰),用num[]表示对应的组合里有多少个1,即部署了多少个炮兵。用cur[]记录下图的原始状态。 状态转移为:dp[r][i][j原创 2016-08-01 17:22:04 · 276 阅读 · 0 评论 -
POJ2411
只考虑i行和i-1行的状态: 1.i行和i-1行竖着铺地板:dfs(k+1,l 2.i行空出来,i-1行竖着铺地板:dfs(k+1,l 3.i行和i-1行横着铺地板:dfs(k+2,l #include using namespace std; int n,m,x; long long dp[20][1 void dfs(int k,int l,in原创 2016-08-06 19:29:44 · 365 阅读 · 0 评论