
acm_dp
文章平均质量分 69
兔衰
刀锋入骨,不得不战;背水争雄,不胜则亡。
展开
-
[贪心 + 分组背包]圆覆盖问题
一个包含n个圆心,每个圆半径都为r的位置坐标文件,你设计一个算法,找出m个圆心,使这m个圆总覆盖区域最大。换个意思就是选择m个交集最小的圆step1: 构建图:圆心为节点,有交集添边,边权为交集面积step2: 简单bfs算法。目的把图分割为一个个连通图step3: 直接选择孤立的节点.也就是不相交的节点。假设选了L个step4: 若L >= m。则返回前m个圆心s...原创 2019-12-02 09:33:58 · 1370 阅读 · 1 评论 -
poj-3267 The Cow Lexicon【dp】
题意就是给出一个主串,和一本字典,问最少在主串删除多少字母,可以使其匹配到字典的单词序列。最开始想的是用01背包问题做:dp[j][i] 表示字符串从0到j这个区间内是否用第i个单词组成dp[j][i]=min(dp[j-1][i-1]+1,dp[p][i-1]+j-p-len[i]); p表示第i个单词揉进字符串0....j最近的位置,len[i]表示单词长度循环是 外层 i,里原创 2016-03-30 09:58:19 · 394 阅读 · 0 评论 -
poj-1837 Balance【dp】
题目大意:有一个天平,天平左右两边各有若干个钩子,总共有C个钩子,有G个钩码,求将钩码全部挂到钩子上使天平平衡的方法的总数。其中可以把天枰看做一个以x轴0点作为平衡点的横轴输入:2 4 //C 钩子数 与 G钩码数-2 3 //负数:左边的钩子距离天平中央的距离;正数:右边的钩子距离天平中央的距离c[k]3 4 5 8 //G个重物的质量w[i]原创 2016-03-29 16:08:19 · 307 阅读 · 0 评论 -
hdu-1257 最少拦截系统【单调递增子最长序列】
I - 最少拦截系统Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmitStatusDescription某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一原创 2016-03-05 16:40:25 · 317 阅读 · 0 评论 -
hdu-1176 免费馅饼【区间dp】
G - 免费馅饼Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmitStatusDescription都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的原创 2016-03-05 18:08:35 · 344 阅读 · 0 评论 -
hdu -1069 Monkey and Banana【贪心+dp】
C - Monkey and BananaTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmitStatusDescriptionA group of researchers are designing an experiment to test the IQ原创 2016-03-07 21:07:23 · 2147 阅读 · 1 评论 -
hdu-1260 Tickets【dp】
H - TicketsTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmitStatusDescriptionJesus, what a great movie! Thousands of people are rushing to the cinema. Ho原创 2016-03-14 19:45:13 · 440 阅读 · 0 评论 -
NYOJ-712 探寻宝藏【dp】
#include#include#define Minn(a,b) a>b?b:aint map[60][60];int dp[140][60][60];int Maxn(int a,int b,int c,int d){ int max=a; if(max<b) max=b; if(max<c) max=c; if(max<d) max=d; return ma原创 2014-11-11 17:27:49 · 605 阅读 · 0 评论 -
NYOJ-203三国志【最短路+01背包】
三国志时间限制:3000 ms | 内存限制:65535 KB难度:5描述《三国志》是一款很经典的经营策略类游戏。我们的小白同学是这款游戏的忠实玩家。现在他把游戏简化一下,地图上只有他一方势力,现在他只有一个城池,而他周边有一些无人占的空城,但是这些空城中有很多不同数量的同种财宝。我们的小白同学虎视眈眈的看着这些城池中的财宝。按照游戏的规则,他只原创 2014-10-21 20:24:10 · 754 阅读 · 0 评论 -
fzu-2113 Jason的特殊爱好[数位dp]
先进行预处理s[pos][val]s[3][5]表示 0~500的1的个数所以s[3][5]+=s[3][4](0~400); s[i][j]+=s[i][j-1];s[3][5]+=s[2][9]+ss[1][9](0~99);for(int k=i-1;k>=1;--k)s[i][j]+=s[k][9];特殊的当 j==1时,s[i][j]+=1;当j==2原创 2016-04-21 12:18:37 · 519 阅读 · 0 评论 -
hdu-2089 不要62[数位dp]
比较基础的一道数位dp。#include #include #include #define MAX_SIZE 12int dp[MAX_SIZE][MAX_SIZE];int num[MAX_SIZE]; int dfs(int pos,int i,bool lim){ if(pos==-1) return 1; if(!lim&&~dp[pos][i]) return d原创 2016-05-06 08:30:49 · 352 阅读 · 0 评论 -
POJ-2096 Collecting Bugs【概率dp】
题意: 一个软件有s个子系统,会产生n种bug某人每天发现一个bug,这个bug属于一个子系统,属于一个分类每个bug属于某个子系统的概率是1/s,属于某种分类的概率是1/n。问发现n种bug,每个子系统都发现bug的天数的期望。刚开始原创 2016-05-22 11:23:49 · 345 阅读 · 0 评论 -
codeforces-148D Bag of mice【概率dp】
题意:原来袋子里有w只白鼠和b只黑鼠龙和王妃轮流从袋子里抓老鼠。谁先抓到白色老鼠谁就赢。王妃每次抓一只老鼠,龙每次抓完一只老鼠之后袋里会有一只老鼠跑出来。每次抓老鼠和跑出来的老鼠都是随机的。如果两个人都没有抓到白色老鼠则龙赢。王妃先抓。问王妃赢的概率。 dp(x,y,wch) 表示还有x只黑鼠,y只白鼠,到wch==0?王妃:龙 抓,王妃赢的概率轮到王妃抓d原创 2016-05-22 15:32:19 · 338 阅读 · 0 评论 -
hdu-2829 Lawrence[斜率dp]
参考了kuangbin大神的。题意:大概就是给你n(1要你将其分成m + 1(0要求每组数必须是连续的而且要求得到的价值最小。一组数的价值定义为该组内任意两个数乘积之和,如果某组中仅有一个数,那么该组数的价值为0。如:将“4 5 1 2”分成一组得到的价值为:4*5 + 4*1 + 4*2 + 5*1 + 5*2 + 1*2 = 49;将“4 5 1 2”分成“4原创 2016-05-28 14:31:31 · 662 阅读 · 0 评论 -
第七届河南ACM D.山区修路【dp+离散化】
dp+离散化#include #include #include #define Maxsize 500#define inf 0x3f3f3f3fint dp[Maxsize][Maxsize][2];int n;int a[Maxsize];int b[Maxsize];struct Node{ int id,val;}v[Maxsize];int cmp(c原创 2015-05-04 12:37:06 · 1083 阅读 · 0 评论 -
nyoj832-合并游戏【状态dp】
状态压缩dp。如果要把 第j个元素合并掉。可选择 a[i][j] (i:0—n-1); 选择之后第 j 行第 j 列就不能再被选择。(即指向j的边和j指向其他元素的边不能再用)。 #include #include #define Maxsize 12#define FindMax(a,b) a>b?a:bint v[Maxsize][Maxsize];int dp[1030]原创 2015-05-04 12:41:21 · 543 阅读 · 0 评论 -
nyoj-307 宝物【dp+贪心】
宝物时间限制:1000 ms | 内存限制:65535 KB难度:6描述传说HMH大沙漠中有一个迷宫,里面藏有许多宝物。迷宫里可能有N个藏宝地点,用1到N标记。藏宝地点之间最多有一条通路相连。标记1为迷宫的进出口。某天,Dr.Kong找到了迷宫的地图,他已经知道其中K(1Dr.Kong决定让他的机器人卡多去探险。卡多在经过某个藏宝地点时可能会拿走原创 2015-07-09 09:42:28 · 990 阅读 · 0 评论 -
zoj-3726-Alice's Print Service【二分+rmq】
答案就是 q*p[i](i为最大的s[i]要快速的查找 (i,n)区间的s*p查询手段有很多。这里我用的rmq。/*就是一个打印分段收费政策,印的越多,单张价格越低,输入需要印刷的数量,求最小印刷费用打印k页的资料,给出n中付费方案,一次打印超过s1但不超过s2的每页收费p1,超过s2不超过s3的收费p2.....数据保证0=s1=p1>=p3>=...>=pn。接下来原创 2016-05-10 21:44:42 · 910 阅读 · 0 评论 -
poj-3071 Football 【概率dp,位运算】
题意:有2^n支队伍进行比赛,每一轮第一支队伍和第二支队伍比赛,第三支和第四支队伍比赛,以此类推。输了的消除掉,再按此规律继续下一轮。 每行给出这支队伍打败各支队伍的几率,求出那支队伍获胜几率最大。dp[i][j]表示第i轮第j队获胜的概率,pp[j][k]表示j对战k的胜率dp[i][j]=sigma(dp[i-1][j]*dp[i-1][k]*pp[j][k])原创 2016-05-24 10:31:40 · 403 阅读 · 0 评论 -
zoj-3734 LIKE vs CANDLE 【树形dp】
题意:若干微博账户形成了一个转发树(即一个有根树)。每个账户有自己的价值,每个账户也有自己的态度(赞或蜡烛)。如果一个账户的态度是“赞”,它的价值就会被加到“赞”的一边,反之亦然。Edward 可以从“赞”的一边拿出X 的价值去翻转一个账户,即把它的态度换到相反的一边。但是Edward 发现,有的账户已经被别人翻转过了,对于这些账户,Edward 就要花费Y原创 2016-05-13 17:03:49 · 515 阅读 · 0 评论 -
zoj-3735 Josephina and RPG[概率dp]
/*就是告诉你C(m,3)个队伍相互之间的胜率,然后要你依次对战n个AI队伍,首先任选一种队伍,然后战胜一个AI后可以选择替换成AI的队伍,也可以不换,问你最后最大的胜率是多少。*/状态跟对战队伍的顺序有关,跟玩家使用的对战队伍有关,对战后有替换和不替换两种转变。那么设状态方程为dp[i][j] i表示对战第i个队伍,j表示战胜后使用第j个队伍最大的胜率。对 dp[i][j] 向原创 2016-05-13 20:39:48 · 352 阅读 · 0 评论 -
hdu-4336 Card Collector状态压缩|期望dp】
题意:买东西集齐全套卡片赢大奖。每个包装袋里面最多一张卡片,最少可以没有。且给了每种卡片出现的概率 p[i],以及所有的卡片种类的数量 n(1用二进制状态来表示每种物品是否出现过。例如 10101的前一个状态就有00101、10001、10100.E(stu)表示满足stu的期望。E(stu)=∑E(pre_stu)*p'[x]+E(stu)*none.p'[x]表示stu在第原创 2016-05-27 11:07:08 · 426 阅读 · 0 评论 -
zoj-3604 Help Me Escape[概率dp]
题目意思: 一个吸血鬼,每天有n条路走,每次随机选一条路走,每条路有限制,如果当这个吸血鬼的能力大于某个值c[i],那么只需要花费ti(ti = (1.0 + sqrt(5.0))/2 * c[i] * c[i]) 天的时间就可以逃出去,否则,花费1天的时间,吸血鬼的能力增加c[i],花费1天的时间,然后继续下一天的尝试。求逃出去的期望。被这道题的四舍五入坑惨了。令原创 2016-05-24 18:01:19 · 451 阅读 · 0 评论 -
hdu-1087 Super Jumping! Jumping! Jumping! [最大递增子段和]
E - Super Jumping! Jumping! Jumping!Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmitStatusDescriptionNowadays, a kind of chess game called “Super Jumpin原创 2016-03-09 19:33:06 · 491 阅读 · 0 评论 -
hdu-1074 Doing Homework [状态dp]
D - Doing HomeworkTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmitStatusDescriptionIgnatius has just come back school from the 30th ACM/ICPC. Now he h原创 2016-03-08 20:27:18 · 403 阅读 · 0 评论 -
poj-1681【矩阵连乘】
题意是:给你一序列数,每次抽出一个数字(两端除外),抽取的数乘以旁边两个数作为此次操作的积分,抽到只剩两个数为止。求总积分最小。题目给的数据:10 1 50 50 20 5可以看成给了 10*1 1*50 50*50 50*20 20*5这些个矩阵求矩阵连乘最少乘数#include #include #include #define MAX_N 110#define INF 0原创 2015-11-24 16:06:21 · 643 阅读 · 0 评论 -
nyoj-229工程[dp+二分]
工程时间限制:1000 ms | 内存限制:65535 KB难度:6描述 有n个工人做两个工程A和B,每个工程都被分为相同的m份,给你第i个工人做A中的一份需要的时间Xi秒,和做B中的一份所需时间Yi秒,问最短需要多少时间可以完成这两项工程。输入第一行是一个整数t (1 每组测试数据第一行有两个整数 n (1 接下来的n行,每行有两个整数原创 2015-11-14 10:23:38 · 738 阅读 · 0 评论 -
nyoj-14会场安排问题[dp]
会场安排问题时间限制:3000 ms | 内存限制:65535 KB难度:4描述学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。输入第一行是一个整型数m(m每组原创 2015-06-06 18:03:08 · 538 阅读 · 0 评论 -
nyoj-895How many ways【图上dp+拓扑序】
How many ways?时间限制:1000 ms | 内存限制:65535 KB难度:4描述给一个 n 个点 m 条边的有向无环图,问从点 1 到点 n 一共有多少条路径?(结果对 10007 取模)输入多组测试数据。第一行两个数,n 和 m(2输出每组测试数据输出一行,表示从点 1 到点 n 的方案数对 10007 取模后的值。原创 2015-06-10 16:10:27 · 413 阅读 · 0 评论 -
nyoj-1182旅游【三进制状态压缩dp】
这个是经典状态压缩dp tsp问题的变形首先来看看《挑战程序设计竞赛》讲解tsp问题:给定一个n个定顶点组成的带权有向图的距离矩阵d(i,j)(INF表示没有变)。要求从顶点0出发,经过每个顶点恰好一次后再回到顶点0。问所经过得边的总权重的最小值是多少?限制条件10tsp问题是np困难的。没有已知的的多项式时间的高效算法可以解决这一问题。所有可能的路线共有(n-原创 2015-07-06 10:42:26 · 683 阅读 · 0 评论 -
hdu-3943[数位dp(记忆化搜索)+二分]
求出区间 (P,Q] 中找到第K个满足条件的数,条件是该数包含X个4和Y个7学习大神的模板后做的之前用递推式感觉要考虑的东西比较多,记忆化搜索就相对简化编程复杂度了链接:模板数位dp是取得每个数它v,0~v之间满足 有(x个4,y个7)条件的数的个数,那么可以知道随着v增大,满足(x个4,y个7)条件的数的个数是增大的。有了这个单调性的条件就可以用二分来查找第k个数的位置。#i原创 2016-04-26 19:05:35 · 385 阅读 · 0 评论