
——动态规划——
文章平均质量分 72
huanghongxun
这个作者很懒,什么都没留下…
展开
-
Southeastern European Regional Programming Contest (SEERC) 2017
A: Concerts题目大意有 26 种演唱会,John 希望按照某个顺序看某些类型的演唱会,但是看完某种类型的演唱会后需要至少休息一定的天数才能继续看演唱会,问有多少种看演唱会的方案题解简单的 dp,但是 CodeForces 上的数据范围是假的。。花了好些时间检查为什么 RE。。#include <bits/stdc++.h>using namespace std;...原创 2018-10-25 17:50:20 · 446 阅读 · 0 评论 -
HDU 2602|Bone Collector|裸01背包问题
题目大意有N个物品,背包容量为V,每个物品有自己的重量wiw_i和价值viv_i。试问能获得的最大价值是多少。 题解由于是裸的01背包问题。。。 这里做个简单的01背包概述?不然题解一行都没有。。01背包问题是,给出一些物品,每个物品只有一件,你可以选择放到背包里去或者不放,背包里的物品总重量有限制。 我们设fi,jf_{i,j}表示我们已经考虑到第i物品,背包内物品质量为j的时候能获得的最大原创 2017-09-18 17:56:16 · 570 阅读 · 0 评论 -
HDU 3466|Proud Merchants|01背包|贪心
题目最近,iSea去了一个文明古国。很长一段时间内,这个国家是世界上最富有的而且还是最强大的国家。所以这个国家的公民拥有强烈的民族自豪感,即使国家不再富有了也不会丧失。 商人们是最典型的,每个商人仅仅出售一件物品,价格为pip_i,但是如果你的钱少于qiq_i,商人就不会和你交♂易了。然后iSea认为物品的实际价值是viv_i。 如果iSea有M块钱,iSea能获得的最大价值是多少?输入输入包含原创 2017-09-18 23:52:31 · 472 阅读 · 0 评论 -
CodeForces #?(727A|727B|727D|727F)|贪心|动态规划
727A题目大意:给出s和t,对s有2个操作:一个×2,一个*10+1,问怎么操作能使s变成t。 题解:暴力。。#include <cstdio>typedef long long ll;bool isPower2(ll x) { return x - (x & -x) == 0;}ll s, t, p[64];void output(int d, ll r) { puts原创 2016-10-16 12:02:29 · 1155 阅读 · 0 评论 -
POJ 2033|SPOJ ACODE|Alphacode|动态规划
SPOJ:http://www.spoj.com/problems/ACODE/题目翻译A和B希望给对方发送聊天信息并且加密数据传输,他们讨论后希望这样加密数据: A:“让我们用一种十分简单的加密方式:令字符’A’的编码为1,’B’的编码为2,以此类推,直到’Z’的编码是26。” B:“mdzz,假设我发给你单词’BEAN’,加密后为25114,但是解密的可能结果有很多种!” A:“你还是to原创 2017-08-29 21:29:29 · 375 阅读 · 0 评论 -
CodeForces 813A|813B|813C|813D - 搜索|DP
CodeForces 813813C - 树上搜索并分析题目利用条件原创 2017-06-09 19:51:10 · 635 阅读 · 0 评论 -
CodeForces #157(258A|258B|258C|258D|258E)|数位DP|搜索|线段树
258A - Little Elephanh and Bits小象有一个二进制表示的整数a。现在它要删掉一个二进制位,使这个新整数最大。输入输出样例input101output11input110010output11010题解显然删去尽量高位的0答案就最大,当然没有0的话随便删个1就好了。代码258B原创 2017-06-17 17:03:03 · 653 阅读 · 0 评论 -
CodeForces 432D|Prefixes and Suffixes|KMP|动态规划
题目大意求s的不同长度的既是s前缀又是s后缀的子串的个数题解考虑KMP的next数组。 因为next[j]表示lcp(s[1..j],s[1..k])(k<j)lcp(s[1..j],s[1..k])(k<j)。 故s[1..j]与s[1..next[j]]的关系是后者是前者的最长后缀,由于是最长,所以肯定不会漏情况,因此后者的出现次数是前者的出现次数+1(前者最后一次出现的后缀)。。。。。。。原创 2016-11-18 00:35:54 · 699 阅读 · 0 评论 -
CodeForces #179(295A|295B|295C)|动态规划|最短路径|前缀和
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I原创 2016-11-13 23:57:23 · 507 阅读 · 0 评论 -
BZOJ 1415|NOI 2005|聪聪和可可|概率期望|动态规划
由于聪聪总会向可可靠近,而且移动是固定的,因此考虑预处理出所有情况下聪聪的移动方向e[i,j]。 这个可以通过枚举可可跑SPFA解决。 由于聪聪和可可的位置即可描述当前状态,因此设dp[i,j] 当e[i][j]=j或e[e[i][j]][j]=je[i][j] = j或e[e[i][j]][j]=j时,聪聪可以一步到位吃掉可可,显然此时dp[i,j]=1dp[i,j]=1。 否则可可有1|原创 2016-04-20 20:31:43 · 445 阅读 · 0 评论 -
BZOJ 4562|HAOI 2016|食物链|动态规划
写水题掉RP啦 我记得这个还是去年学长研究性学习的内容之一。。不过很水就是了。。 DAG DP。。懒得写拓扑排序了(和DP融为一体)#include <stdio.h>const int N = 100005, M = N * 2;int dp[N], h[N], p[M], v[M], in[N], entry[N], cnt = 0;void add(int a, int b) {原创 2016-04-27 21:42:35 · 1283 阅读 · 0 评论 -
CodeForces 731
731A题目大意:类似电话表盘,不过表盘上有26个字母,问一开始表盘指向a,如何转动表盘使得依次指向字符串中的各个字符且转动表盘次数最小(转一格为一次) 题解:每次都拿最近的那个#include <cstdio>#include <algorithm>using namespace std;char s[128];int main() { int i, now, ans = 0,原创 2016-10-17 22:17:48 · 1286 阅读 · 0 评论 -
CodeForces #363(698A|699C|698C|699E)|动态规划
698A|699C - Vacations题目大意你一天可以选择去锻炼或打比赛,但你不能连续2天都锻炼或打比赛,你还知道某天是否有比赛、体育馆是否开门。问你最少没事干的天数。题解#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define FOR(i,j,k) for(i=j;i<=k;+原创 2016-11-07 23:08:43 · 806 阅读 · 0 评论 -
CodeForces #367(706C)|动态规划
706C - Hard Problem题目大意有一列字符串,你可以翻转一些字符串使得这一列字符串按字典序排列(翻转操作代价cic_i)。问最小代价。题解很多dp题喜欢披着字符串的羊皮啊。。 要注意到的是相等也是满足字典序的QwQ。 注意到字典序排列满足无后效性,故考虑DP。 令dp[i][0]dp[i][0]表示不翻转第i个字符串时1~i按字典序排列的最小代价,dp[i][1]dp[i][1]原创 2016-11-06 22:36:16 · 480 阅读 · 0 评论 -
HDU 2955|Robberies|01背包|概率
题目Roy是一个有抱负的强盗(-_-),看了很多美国大片,知道了坏蛋因为太过贪心,最终的结果通常是被捕。他决定做一次合算的买卖:在大学毕业之前,快速地搞一次大新闻:bank robbery(请自行体会)。 几个月过去了,Roy已经完成了对N个银行的安全性和拥有的货币的数量的评估。他希望计算行动的风险,并且拿走尽可能多的钱。 它的母亲Ola知道了Roy能承受的被捕的最大概率P,她认为如果Roy实施原创 2017-09-19 13:45:10 · 392 阅读 · 0 评论 -
Ural 1087|The Time to Take Stones|博弈论|动态规划
http://acm.timus.ru/problem.aspx?space=1&num=1087题目你应该知道一种游戏,2个玩家轮流从一堆石子中取走1到3个石子。最后一个取走石子的人输。我们泛化这个游戏的条件。假设玩家可以从石子堆中一次取走k1,k2,⋯,kmk_1,k_2,\cdots,k_m个石子。假设比赛双方都很聪明,每一步的选择和之前的选择没有关系。输入第一行2个整数n,m(1≤n≤100原创 2017-10-06 21:22:23 · 375 阅读 · 0 评论 -
URAL 1002|Phone Numbers|动态规划
http://acm.timus.ru/problem.aspx?space=1&num=1002题目翻译现代社会中,你常常会遇到一大堆电话号码,而且这些号码正在变得越来越长,你却需要记住这些号码。一种简易的解决方法是建立数字与字母的对应关系,比如下面这种:1 ij 2 abc 3 def4 gh 5 kl 6 mn7 prs 8 tuv 9 wxy原创 2017-10-03 21:03:32 · 620 阅读 · 0 评论 -
GDCPC 2018
原题选手或成最大赢家。A: Chika’s Math Homework题目大意1≤T≤105,1≤n≤10181≤T≤105,1≤n≤10181\leq T\leq 10^5, 1\leq n \leq 10^{18},求 ∑i=0ni2Cin∑i=0ni2Cni \sum_{i=0}^n i^2C_n^i 题解比赛的时候队友打表找规律大师秒杀。。太强大了。 可...原创 2018-05-08 13:50:15 · 1333 阅读 · 0 评论 -
2017 ACM-ICPC Hua-Lien Regional
A: Smooth Sequences如果一个序列是光滑的仅当相邻元素差的绝对值不超过d。称一个序列是半光滑的仅当修改至多一个元素使得序列变得光滑。给定序列询问是否光滑。题解半光滑的有3种情况,一种是连续两端差均不满足d,这种判断两端点差不超过2d即可,一种是一端的差不满足d,随便改,一种是中间某段不满足d,判断修改左右端点即可。#include &lt;bits/stdc...原创 2018-05-01 17:24:05 · 1173 阅读 · 1 评论 -
2017 ACM ICPC East Central North America Regional Contest
手速场。。就不放队友的代码了。A: Abstract Art题目大意给定多个多边形,求面积并。题解模板题。B: Craters题目大意给定多个圆,求这些圆的凸包周长。题解一个圆最多引出两条切线,计算切线注意一些情况就好了。 不过我的做法是暴力将圆拆成3000个点,然后暴力求背包。#include <bits/stdc+...原创 2018-04-21 23:25:06 · 1036 阅读 · 0 评论 -
Petrozavodsk Summer 2017 JOI TST 2012 Selection | Kangaroo | 动态规划
G: Kangaroo题目大意有n(1≤n≤300)n(1≤n≤300)n(1\leq n\leq 300)只袋鼠,每个袋鼠大小为aiaia_i,袋子大小为bibib_i。袋鼠袋鼠至多装1只袋鼠,且满足被装袋鼠的大小小于袋子的大小。一个装袋鼠的合法方案指的是不存在一只袋鼠可以装进其他袋鼠的袋子里。问有多少种装袋鼠的方法。题解令fi,j,kfi,j,kf_{i,j,k}表示对...原创 2018-03-28 20:20:42 · 729 阅读 · 0 评论 -
Petrozavodsk Summer Training Camp 2017, Warsaw U Contest
C: Painting题目大意你有数字1~n,对于每个数字i,用且仅用一次刷子将某个区间修改为i。每次刷子的代价为区间长度。总代价最大是多少? 比如刷后的数列是2 1 2 3,那么可以:[1,4]=3,[1,3]=2,[2,2]=1。总共代价为8是最大的。题解首先我们可以搞出区间的包含关系,那么对于被一个区间包含的一些区间,如果不和其他子区间邻接,那么就只能修改这个子区间,否则若...原创 2018-03-19 00:22:15 · 748 阅读 · 0 评论 -
UVa 104|Arbitrage|Floyd
原文地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=40题目翻译套汇是对一种货币进行的交易,希望通过发现货币间汇率的细小差别获利。比如,如果1美元可以购买0.7英镑,1英镑可以购买9.5法郎,1法郎可以购买0.16美元。那么1美元通过这样的兑换路径可以原创 2017-09-26 22:50:45 · 345 阅读 · 0 评论 -
UVa 108|Maximum Sum|动态规划
原题地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=44题目翻译通常一个在一维上很好解决的问题扩展到二维后就难解决多了。类似的还有2-SAT和3-SAT(NPC问题)。给定一个二维数组,找出一个子矩阵最大化其个元素的和。比如数组: 0 -2 -7 0原创 2017-09-26 23:33:51 · 241 阅读 · 0 评论 -
UVa 111|History Grading|动态规划|最长上升子序列
题目计算机科学中的许多问题涉及有约束的最优化问题。 考虑一个要求学生按时间顺序排序历史事件的历史考试。排序正确的学生将获得满分,但是只对了一部分的学生要怎么给分呢? 有以下一些可能: 1. 和正确答案对应相同的事件个数为其分数 2. 和正确答案相似程度最大的子序列(不要求连续)的长度为其分数。 举个例子,如果4个事件的正确顺序是1 2 3 4,那么答案1 3 2 4按第一种方法将获得2分原创 2017-10-05 21:31:07 · 269 阅读 · 0 评论 -
UVALive 7959|Gym 101201H|Paint|DP|贪心
DescriptionYou are painting a fence with n sections, numbered from 1 to n. There are k artists, each willing to paint their design on a specific portion of the fence. However, artists will never agree原创 2017-12-09 20:51:55 · 459 阅读 · 0 评论 -
UVALive 6177|HDU 4489|The King's Ups and Downs|动态规划
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4188题目翻译国王有一些身高不同的守卫。他希望给这些守卫安排一个排列,但不是简单地按身高从矮到高或者从高到矮,而是波浪形(每个人总比相邻的两个人都高或都矮),比如: 160, 162, 164原创 2017-11-05 10:27:55 · 503 阅读 · 0 评论 -
UVALive 5737|Pills|动态规划
题目翻译Lizzie阿姨每天吃半片药片。她一开始有N粒药片。第一天,她随机拿出一个完整的药片,掰成两半,吃一半丢另一半回去。接下来,她每天随机拿出一片(既可以是完整的也可以是半片),如果是半片药片,则直接吃掉,否则掰成两半吃一半扔另一半回去。她有多少种吃完所有药片的方法?我们用一个长度为2N的字符串表示一种方法,第i个字符如果为W,则第i天拿到整粒药片,否则为H,第i天拿到半粒药片。有多少种可行的字原创 2017-10-23 23:59:01 · 381 阅读 · 0 评论 -
URAL 1017|Staircases|动态规划
题目翻译一个充满好奇心的孩子有N(5≤N≤500)N(5\leq N\leq 500)个积木。这些积木可以构建不同的阶梯。阶梯由c(c≥2)c(c\geq 2)列组成,后一列的积木个数要比前一列积木个数要多(否则就不是阶梯了)。 下图包含了N=11和N=5N=11和N=5的示例: 你的任务是写一个程序,输入N,输出Q——由正好N个积木搭成的阶梯有多少种。样例输入212样例输出99564533原创 2017-10-03 22:29:29 · 344 阅读 · 0 评论 -
URAL 1009|URAL 1012|URAL 1013|K-based Numbers|高精度|动态规划
URAL 1009:http://acm.timus.ru/problem.aspx?space=1&num=1009 URAL 1012:http://acm.timus.ru/problem.aspx?space=1&num=1012 URAL 1013:http://acm.timus.ru/problem.aspx?space=1&num=1013题目考虑K进制N位的整数。我们定义一个整原创 2017-10-03 22:05:40 · 398 阅读 · 0 评论 -
POJ 3245|Sequence Partitioning|动态规划|单调队列
题意真是难懂。。一个长度为NN的序列(每个元素是(ai,bi)(a_i,b_i)这样的数对),连续地分成若干组。每组左右边界是(l1,r1),(l2,r2),⋯,(lp,rp)(l_1,r_1),(l_2,r_2),\cdots,(l_p,r_p),满足li=ri−1+1,li≤ri,l1=1,rp=nl_i = r_{i − 1} + 1, l_i ≤ r_i, l_1 = 1, r_p = n。原创 2016-04-26 17:56:50 · 1039 阅读 · 1 评论 -
机房水题欢乐赛 2016-04-25 下午
九月的彩笔Color【题目描述】九月的桌面上有一行调色板,上面有n个格子,每个格子都涂上了k种颜色中的其中一种,颜色用’A’到’Z’编号。九月想给其中一些格子重新染色,使得没有相邻格子是同一种颜色,她想知道最少需要染多少个格子可以做到。【输入描述】第一行n,k 第二行一个字符串,为初始时的颜色【输出描述】一行为答案【输入样例1】6 3 ABBACC【输出样例1】2【输入样例2】3 2 BBB【原创 2016-04-25 09:37:29 · 484 阅读 · 0 评论 -
CodeForces 283C Coin Troubles 背包问题 分析问题
汉化题意你有n种不同的硬币,每个硬币有一个价值ai(不同硬币价值可能相同) 我有这些硬币总价值为t,并且给出q对(b,c),告诉你第b种硬币的数量严格大于第c中硬币的数量。保证这q对(b,c)中所有b都不同,并且所有c都不同。 我问你我有多少种持有硬币的方案满足上面的约束?方案不同仅当存在至少一种硬币数量不同。答案可能很大,模10^9+7。Input第一行n,q,tn,q,t 第二行nn个数原创 2016-02-18 16:46:43 · 923 阅读 · 0 评论 -
CodeForces 283B Cows and Program 记忆化搜索 推导
题意:你有一个正整数序列{ai}\{a_i\},大小为nn,你还有2个变量x,yx,y,执行以下程序: x = 1; y = 0;while (1) { y += a[y]; x += a[x]; if (x <= 0 || x > n) return y += a[y]; x -= a[x]; if (x <= 0 || x > n) return}你的任务是得原创 2016-02-18 16:36:56 · 1193 阅读 · 0 评论 -
POJ 3592 Instantaneous Transference 缩点 拓扑图DP
棋盘有些格子有权值,有些不可走,还有一些是传送门可以直接传送到给定点。剩余的均只能向右或向下走。求对角最长路。首先,如果传送门产生了环,那么连通分量内的所有点都是可达的——点可以重复走,所以缩点,新点的权就是原分量内的权和。 然后的DAG跑最长路的很简单了。#include <cstdio>#include <cstring>#include <algorithm>using namespa原创 2016-03-16 18:43:14 · 477 阅读 · 0 评论 -
POJ 3249 Test for Job 拓扑图DP
求DAG上的链使其上点权和最大。 DAG当然上DP了。需要注意的是处理某个点的答案必须要其前置的点都先处理完才可。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define FOR(i,j,k) for(i=j;i<=k;++i)#define ms(i) memset(i,0,si原创 2016-03-16 18:16:48 · 816 阅读 · 0 评论 -
POJ 3635 Full Tank? 最短路DP
给出一个图(1≤n≤1000,0≤m≤100001\leq n\leq 1000,0\leq m\leq 10000),每个点有加油站费用cic_i,对于每个询问,油箱容积cc的车从ss到ee的最小费用。如果这个图是个DAG的话很显然我们可以直接使用动态规划求解。 但它现在不是DAG,回忆起有篇论文是讲SPFA的应用的,不过没负边,用Dij+Heap即可求有环的动态规划。#include <cst原创 2016-03-03 13:35:23 · 1494 阅读 · 1 评论 -
BZOJ 1064
#include #include #include const int N = 200000, M = 4000000;using namespace std;int d[N], h[N], p[M], v[M], w[M], vis[N], cnt = 0;void add(int x, int y, int z) { v[++cnt] = y; w[cnt] = z;原创 2016-01-30 23:29:06 · 415 阅读 · 0 评论 -
机房水题欢乐赛 2016-02-02
——暨GDKOI校队选拔赛T1: 简单题给出N个整数X1,X2,X3,⋯,XnX_1,X_2,X_3,\cdots,X_n,将这NN个数从小到大排序为A1,A2,A3,⋯,AnA_1,A_2,A_3,\cdots,A_n,记数列X1,X2,X3,⋯,XnX_1,X_2,X_3,\cdots,X_n的奇数项之和为PP,偶数项之和为QQ,令T=∣∣P-Q∣∣T=\left|P-Q\right|,求出TT原创 2016-02-02 14:55:16 · 1055 阅读 · 0 评论 -
BZOJ 2165 大楼 类矩阵乘法/倍增Floyd 二进制判断状态
给出n条有向边,要求从点1走到标号≥m的点的最短距离。一看和倍增Floyd很像。令dp[p][i][j]表示坐了p次电梯从i到j的最大上升高度。那么dp[0]就是题目给定的w。有dp[p][i][j]=max{dp[p/2][i][k]+dp[p/2][k][j]}发现dp[p]可以倍增得到。当dp[p][1][?]>=m时即可停止。倍增完后原创 2015-12-02 19:25:04 · 1131 阅读 · 0 评论