摘要: 题意:求最大升序和。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087——>>设d[i]表示以第i个数为终点的最大升序和,然后从第1个数到第i-1个数为终点的最大升序和进行检查,向后递推即可。#include #include using namespace std; int main() { int N, a[1010], i, j; long long d[1010]; //d[i]表示以第i个数为终点的最大升序和 while(cin>>N) { if(!N) return... 阅读全文
posted @ 2013-01-31 20:01 xiaodanding 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 题意:N块石头,每块石头有各自的价值与体积,将石头放入体积为V的背包中,能获得的最大价值是多少。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602——>>0-1背包问题,设d[i][j]为将 前i块石头 放入 容量为j的背包 中的 最大价值,那么第i块石头,要么放,要么不放,放的话,d[i][j] = d[i-1][j-vol[i]],不放的话,d[i][j] = d[i-1][j],取两者中的最大者。#include #include using namespace std; const int maxn = 1000 + 10 阅读全文
posted @ 2013-01-31 19:24 xiaodanding 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 题意:有N张账单,但只是账单上只有A、B、C类物品的,单类物品账目不超过600的,单张账单账目总和不超过1000的才可报销,问在不超过Q的前提下最多可报销多少元。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864——>>题目中说“单项物品的价值不得超过600元”,我总以为是输入时的单个项的账目不超过600,却不想要把账单里的同一类的加起来再与600比较,WA了N次……背包问题,注意剪枝即可。(可以0MS的。。。)#include #include #include #include #include #include using. 阅读全文
posted @ 2013-01-31 19:00 xiaodanding 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 题意:一根长为L的木棒上有n只蚂蚁左右移动,1秒1个单位长度,碰撞后反向移动,问T秒后蚂蚁的位置与方向。题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=20&problem=1822——>>汝佳新书阅读说明中的例题,大牛就是大牛!过程中两个思想:1、两只蚂蚁相撞后假设互穿而过得最终各蚂蚁位置;2、终态各蚂蚁的相对位置不变,与始态相同。#include #include using namespace 阅读全文
posted @ 2013-01-17 13:29 xiaodanding 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 题意:党要重新给一个村庄的村民分配财产,n个村民(n >设第i个人给了xi个cions自己左边的人:则有——————————————>>x1 = x1 + 0;第1人:a[1] - x1 + x2 = M;——>>x2 = x1 - (a[1]-M)第2人:a[2] - x2 + x3 = M;——>>x3 = x1 - (a[1]-M) - (a[2]-M)……第n-1人:a[n-1] - x(n-1) + xn = M;——>>xn = x1 -(a[1]-M) - (a[2]-M) - ... - (a[n-1]-M);第n人:a[n 阅读全文
posted @ 2013-01-14 14:04 xiaodanding 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 题意:指挥官给N个军人分配任务,需用 B[i] 的时间给第i个人陈述任务,而此人需用 J[i] 的时间去完成此任务。问最短执行完所有任务的总时间。题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=117&problem=2829——>>水题。#include #include using namespace std; const int maxn = 1000 + 10; struct soldier 阅读全文
posted @ 2013-01-14 12:33 xiaodanding 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 题意:n条龙,m个骑士,n条龙的头的半径,m个骑士力所能及砍龙头半径,每一厘米,需支付骑士1个coin,问最少需支付多少个coin才能slay所有的龙,无解时,输出Loowater is doomed!。题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=24&problem=2267——>>先把龙的半径从小到大排序,骑士的能力从小到大排序,然后对骑士数组扫描一次即可。#include #include 阅读全文
posted @ 2013-01-14 11:04 xiaodanding 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 题意:输入一个n个元素的非减序列a[],接着进行q次询问,每次询问输入两个数L, R, 问a[L]与a[R]之间相同元素的个数最多有多少个。题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2176——>>RMQ, RMQ...游程编码,再用Sparse-Table即可,注意:查询时L与R位于同一段与相邻段的情况。#include #include #include using 阅读全文
posted @ 2013-01-06 16:37 xiaodanding 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 题意:一条街从西到东住着N(3 >AC的感觉真是不错!艰辛!!!从2到N-1依次选i为裁判,求其左边有几人比裁判的等级低,记为c[i],再求右边有几人比裁判等级低,记为d[i],比赛场数为c[i]*(N-i-d[i]) + (i-1-c[i])*d[i],当然啦,求c[i]、d[i]时不可一个一个地循环扫,否则TLE。设等级存在数组a[]里,设等级标记存在数组x[],当扫到i当裁判时,该裁判的等级为a[i],等级比他低的等级有a[i]-1, a[i]-2, ...于是扫描等级数组x[],若x[j] == 1,说明等级为j的选手已存在,将前a[i]-1个x[]加起来,就是c[i],从后往前 阅读全文
posted @ 2013-01-05 16:51 xiaodanding 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 题意:有N个企业,企业间要进行合作,于是需要连线,I I J表示将I连到J去,即J作为I的父结点,有一系列的询问,E I 表示询问I到根结点的连线距离是多长,输出这个结果。题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=13&problem=1028——>>用并查集连起来即可。主要在于,用d[i]表示从i到根结点的距离,但在初始化后第一次赋值时应为i到其父结点的距离,如果不是的话,可 阅读全文
posted @ 2013-01-04 21:18 xiaodanding 阅读(134) 评论(0) 推荐(0) 编辑