摘要:Codeforces Round #189 (Div. 1) B:http://codeforces.com/problemset/problem/319/B题意:每一ROUND如果某个人的数字大于他右边的人,他就会干掉右边的人,一个人可以同时干掉别人和被干掉,问要多少ROUND结束后才不会死人。题...
阅读全文
摘要:poj2796:http://poj.org/problem?id=2796题意:给出一个长度为n(n 2 #include 3 #include 4 #include 5 using namespace std; 6 const int N=1e5+10; 7 long long a[N]; 8...
阅读全文
摘要:poj3254:http://poj.org/problem?id=3254题意:给以n*m的方格,方格中有1或者0,在1的地方可以放置一个物品,但是在物品的上下左右不能有不物品,也可以不放,问你最够有多少种放法。题解:很简单的状态dp。这里先统计数最多能放多少个,然后和棋盘放k的kind那题一样,...
阅读全文
摘要:poj2411:http://poj.org/problem?id=2411题意:给你1*2的方块,让你把n*m的房间填好有多少种方式。题解:状压dp。这一题,我是不会做了,看懂了题解之后,震惊了。这Dp只要找对状态方程,简直就是一种艺术啊。我深深的喜欢上DP了。好了。讲讲这一题吧。首先是状态方程f...
阅读全文
摘要:poj1185:http://poj.org/problem?id=1185题意:这道题太经典了,看到题目就知道题意,故题意略。题解:经典的状压dp。以前觉得dp是个很难的东西,做了这一题之后发现,dp其实根本不难,真的,而且很好打。思维过程:拿到题之后,由于之前做过,所以知道是状压dp。接着想怎么...
阅读全文
摘要:sgu223:http://acm.sgu.ru/problem.php?contest=0&problem=223题意:n*n的格子放k个国王,一共有多少种放发。题解:简单的状压DP。 1 #include 2 #include 3 #include 4 #include 5 using name...
阅读全文
摘要:只有链接:http://sdu.acmclub.com/index.php?app=problem_title&id=961&problem_id=23685题意:现在有n个QiQi和n个任务,告诉了每个QiQi能够成功完成这n个任务的概率,每个QiQi只能完成一种任务,问你如何安排任务使得所有的任...
阅读全文
摘要:uva10003:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=944题意:给你一个木棍,然后让你切n刀,每次切都会有一个费用。例如,假如说一开始木棍长是1...
阅读全文
摘要:hdu1505:http://acm.hdu.edu.cn/showproblem.php?pid=1505题解:给你一个字符矩阵,里面有R和F两种字符,然后让你找一个最大的子矩阵,这个最大的子矩阵只含有F。题解:在队友的提示下和上一题的影响,我先处理出每一行,以该行为起点的连续F的高度,然后每一行...
阅读全文
摘要:hdu1506:http://acm.hdu.edu.cn/showproblem.php?pid=1506题意:给你一些直的的方块,这些方块的底部在同一条直线上,但是高度不一样,让你找一个最大的方块,这个方块是由这些矩阵拼起来的。题解:自己太渣了,完全不会这一题怎么写,发现自己的思维能力太弱了,根...
阅读全文
摘要:uva111:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=47题意:看懂之后就是求两个串的最长公共子串。题解:不过这里要注意一下,...
阅读全文
摘要:CF255 Div2 C:http://codeforces.com/contest/447/problem/C题意:给你一个序列,你可以改变其中一个数,然后让你求最长的连续上升子序列。题解:一开始的想法就是 处理出以i结尾和以i开头的最长的串的长度,然后枚举i。然而,自己就这样打了一发,结果wa。...
阅读全文
摘要:uva11584:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2631题意:给你一个串,问你这个串最少被划分成多少个子串,才能使得每个子串都是回文子串。题...
阅读全文
摘要:poj1050:http://poj.org/problem?id=1050题意:给你一个n*n的矩阵,求一个和最大的一个子矩阵。题解: 从第i行开始,对把i行以后的每一行一次加到第i行上,每加一次,求一遍最大子序列的和。然后枚举每一行,更新ans值。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int a[102][102]; 7 int temp[102]; 8 int n,ans; 9 void in(){10 memset(a,0,sizeof(a));11 for(int i=...
阅读全文
摘要:hdu1003:http://acm.hdu.edu.cn/showproblem.php?pid=1003题意:给你n个数的序列,求一个连续最大的子序列的和。题解:简单的动态规划。从开始,选择一个连续和是递增的序列,如果当前这段和小于零.则从下一段开始,若下一段的和大于该段,则更新起点和终点。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int a[100020]; 7 int n,cas; 8 int main(){ 9 scanf("%d",&cas);10 int
阅读全文
摘要:uva147:题意:给你几种钱币,在给你一个钱的数目,问有多少种用这些钱来组成这个数目。题解:完全背包,不过此时要把钱的数目*100,因为是小数,背包的容量都是整数,然后dp,求出每个容量的数目即可 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int we[13]; 8 long long dp[30003]; 9 int main(){10 we[1]=5;we[2]=10;we[3]=20;we[4]=50;we[5]=100;11 we[6]=200;we...
阅读全文
摘要:uva674:题意:有1,5,10,25,50这五种硬币。给一个价值,求有多少种组合可以得到该价值。题解:完全背包 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int we[6]; 7 int dp[7499]; 8 int main(){ 9 we[1]=1;we[2]=5;we[3]=10;we[4]=25;we[5]=50;10 int n;11 12 memset(dp,0,sizeof(dp));13 dp[0]=1;14 ...
阅读全文
摘要:poj2184:http://poj.org/problem?id=2184题意:给你n头牛,每头牛有一个S值和一个F值,现在的问题是,要你选出其中的一些牛求出S+T的最大值。但是要保证总的s>=0和F>=0 题解:可以把s作为体积,然后利用0,1背包。求出每个s做对应的最大的F值,然后for一遍,求出最大的f+s。因为有负的值出现,所以把 背包的容量加上一个100000;因为过程中s的值可以是小于0的,for的时候从100000开始即可,不是很好理解。 1 #include 2 #include 3 #include 4 #include 5 using namespace st
阅读全文
摘要:hdu2546:http://acm.hdu.edu.cn/showproblem.php?pid=2546题意:给你N元,每一件食品可以购买一次,如果卡上多余5元即使透支也可以刷卡。少于5元不能使用,求最多能让卡的余额为多少? 题解:01背包问题,首先拿出5元买最贵的东西,那接下来就是背包容量m-5,物品数量n-1 的01背包问题了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define N 1003 7 using namespace std; 8 int v[N],dp[N],n,k; 9 int main(v.
阅读全文
摘要:poj1088:http://poj.org/problem?id=1088题意:给出矩阵地图,值为高度,找一条最长的高度递减的路径。题解:动态记忆递归搜索,在递归最底层求出最优解,记录,自底向上的方式求出最优解。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int map[102][102],cnt[102][102]; 7 int sum,temp,n,m; 8 int DFS(int x,int y){ 9 int max1=0;10 if(cnt[x][y]>0){...
阅读全文