DP
编号21212
SSL是母校,现前往新地图开拓中。
漫游于平行线间的灰鲤,于此处激起黑色孤独的水花。
展开
-
【DG特长生2013】数字编码
一列有顺序的非负整数,需要把它们编码成一个0、1字符串进行传送。设这一列数为P={P1,P2,…,Pn},其中0<=Pi<32767,具体的编码方法为:把P分成k个段 S1,S2,…,Sk,在第i个段Si 中有a(i)个数字,且该段中每个数字都用b(i)位0、1串来编码表示,另外为了正确解码,还要在该段前面附加上一个消息头,用来指出该段有多少个数字以及每个数字的编码位数,消息头的格式规定如下:首先用8位二进制位表示a(i),这导致0<a(i)<256,另外由于0<=Pi<原创 2021-05-14 09:56:38 · 122 阅读 · 0 评论 -
【DP】【DG特长生2011】花店布置
题目解设f[i][j]为第i朵花插到第j个花盆的最大美观度。代码#include<cstdio>#include<iostream>#include<cmath>#include<cstring>using namespace std;int ff, v, w[1001][1001], f[1001][1001], ans;int main(){ freopen("flower.in","r",stdin); freopen("f原创 2021-05-13 20:42:01 · 144 阅读 · 0 评论 -
【DG特长生2012】农场主
题目有n匹白色或是黑色的马。农场主要把马分成k份放入马房,每一份中必须是连续的马。一个马房的“不高兴系数”为 (白马数量*黑马数量) 。使所有马房的“不高兴系数”和最小。求这个和。解DP。预处理black为从一到i的黑马数量。然后设f[i][j]为到第i匹马,分为j份最小的和。代码#include<cstdio>#include<cstring>#include<iostream> #define fr(i,x,y) for(int i = x; i原创 2021-05-12 21:04:47 · 96 阅读 · 0 评论 -
【DP】晨练计划
每天小明都会进行 NNN 分钟的晨跑。有一个疲劳度,不论何时,疲劳度都不能超过 MMM。在第 iii 分钟时,小明可以选择:跑步。跑 DiD_iDi 米,并且疲劳度会增加 111。休息。疲劳度会每分钟减少 111,但必须休息到疲劳度为 000 为止,若在疲劳度为 000 时休息,疲劳度不会变。开始时,小明的疲劳度为 000,结束时,小明的疲劳度也必须恢复到 000。请你计算一下,在满足所有条件下,小明最多能跑多少米。解DP。设 f[i][j]f[i][j]f[i][j] 为前 iii原创 2021-05-09 15:13:18 · 175 阅读 · 0 评论 -
【DG特长生2015】集合问题
对于从 1 到 N (1 <= N <= 39) 的连续整数集合,划分成两个子集合,且保证每个集合的数字和是相等的。求有多少种划分方法。解DP,背包——设 f[i][j] 为第 i 个数,前面那一组能合成 j 的方案数。则 f[i][j] = f[i-1][j] + f[i-1][j-(i-1)](这个数放/不放入这一组)代码#include<cstdio>#define L long longL f[50][1001], n, sum[50];int mai原创 2021-05-04 16:35:58 · 105 阅读 · 0 评论 -
【DP】【DG特长生2018】建学校问题
不开longlong痛失30分…题目大意nnn 个村庄排在一条直线上,你可以得知相邻俩村庄间的距离。告诉你每个村庄的学生个数。你要选择 kkk 个村庄建立学校,使得学生走去学校的最短路程的总和最小。其中。n<=100n <= 100n<=100k<=10k <= 10k<=10解这里DP刚刚好过…设f[z][i]为前z个村庄建立i个学校,且学生都在1-z的范围内走。(而不走到后面去)额…详见代码吧。代码#include<cstdio&原创 2021-04-17 12:58:01 · 170 阅读 · 0 评论 -
【区间DP】【DG特长生2017】T4摆渡线路
题目大意有个圆,均匀分布 100 个点。编号从 1 到 100。给你 nnn 组数对,一组数对 a,ba,ba,b 代表 aaa 与 bbb 之间有一条连线。你要保留尽可能多的连线,使得他们互不相交。解区间DP。设 ans[i][j]ans[i][j]ans[i][j] 为 iii 到 jjj 的弧间,最多可以保留的连线。那么 ans[i][j]=max(ans[i][k]+ans[k][j])+l[i][j]ans[i][j] = max(ans[i][k]+ans[k][j]) + l[原创 2021-04-03 13:52:38 · 113 阅读 · 0 评论 -
【DFS】【DP】【DG特长生2017】T2益智游戏
题目大意24点游戏。给你n组数据,要你得出这四个数是否能完成24点。需要注意的是可以使用括号且数字顺序可调换,运算过程中只能出现整数。(然而原题面上没说数字顺序可调换…导致一堆人比赛时70分…)解原题:顺序可调换由于顺序可以打乱,直接暴力dfs看看能不能合成24。顺序不可调换啊啊,挺头裂的。悄悄跑去问TJH大爷这题怎写。TJH:我不清楚对不对啊 就暴搜啊我:这题气得我想用桶…TJH:这?我用了个vector好。vector,我不会。再见。于是写了个DP。分区间处理结果…再合并原创 2021-04-03 13:33:43 · 96 阅读 · 0 评论 -
【DP】洛谷P1279 字串距离
Link解转换题意,可以得知:· 多余的空格是没有用的· 一个字母要么和另一串的字母匹配要么就与空格匹配· 无后效性设 f[i][j]f[i][j]f[i][j] 为 第一个串处理完i个,第二个串处理完j个的最小距离DP方程:f[i][j] = min{f[i-1][j]+k, f[i][j-1]+k, f[i-1][j-1]+abs(a[i]-b[j])}//第一个串的字符匹空格,第二个串的字符匹空格,上下串字符匹配代码#include<cstdio>#incl原创 2021-03-20 14:31:39 · 161 阅读 · 0 评论 -
【DP】统计蚂蚁(ants)
题目描述蚂蚁山上有T(1<=T<=1,000)种蚂蚁,标记为1…T,每种蚂蚁有N_i只蚂蚁(1<=N_i<=100),现有A(A<=5000)只蚂蚁,从中选出S,S+1,…,B(1<=S<=B<=A)只蚂蚁一共有多少种选法?如有5只蚂蚁分别为{1,1,2,2,3},一共有3种蚂蚁,每一种蚂蚁的数量分别为2,2,1,以下是选不同数量蚂蚁的方法:1个蚂蚁3种选法:{1}{2}{3}2个蚂蚁5种选法:{1,1}{1,2}{1,3}{2,2}{2,3}3个蚂原创 2020-08-21 17:18:01 · 201 阅读 · 0 评论 -
【DP】KC的瓷器(porcelain)
题目描述KC来到了一个盛产瓷器的国度。他来到了一位商人的店铺。在这个店铺中,KC看到了一个有n(1<=n<=100)排的柜子,每排都有一些瓷器,每排不超过100个。那些精美的艺术品使KC一下心动了,决定从N排的商品中买下m(1<=m<=10000)个瓷器。这个商人看KC的脸上长满了痘子,就像苔藓一样,跟精美的瓷器相比相差太多,认为这么精致的艺术品被这样的人买走艺术价值会大打折扣。商人感到不爽,于是规定每次取商品只能取其中一排的最左边或者最右边那个,想为难KC。现在KC又获知每个原创 2020-08-19 20:13:41 · 108 阅读 · 0 评论 -
【DP】送你一颗圣诞树
这题…就是很毒瘤。玄学map。玄学pair。否则大点炸掉。解DP。ans[i]为第i颗树的美观度。topx(nowt,x)为在第nowt颗树上所有点到x点的距离和disx(nowt,x,y)为在第nowt颗树上x点到y点的距离关于转移:(模拟一下,分类讨论一下,得到代码)把当前的树拆成两个树(当初拼成它的数)然后判断各种情况,递归,记忆化搜索。虽然代码繁琐(chou)了(亿)点,但还是比较好理解的(?)详见代码。(万能句)然后便是%%%%%%(只要我%得够标准WA就找不上原创 2020-08-18 21:53:13 · 176 阅读 · 0 评论 -
【DP】不知道该叫啥
题目解30分f[i][j]为第i位填j时的方案数,转移为:for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) for(int k = 1; k <= m/j; ++k) //可以填的数 f[i][j] += f[i-1][j];然后我们可以用前缀和压掉k的枚举,因为答案只跟上一行有关系所以也压掉:for(int i = 1; i <= n; ++i){ for(int j原创 2020-08-14 20:40:45 · 99 阅读 · 0 评论 -
【DP】俄罗斯套娃
题目Sample input10 1000Sample output3628800解dp:设f[i][j]为前i个,逆序对数为j的方案数。然后用前缀和和滚动优化yi下:Code#include<cstdio>#include<iostream>using namespace std;long long mod = 1e10+7;long long f[10][1000001];long long n,k,sum,ans;int main(){原创 2020-08-13 21:55:15 · 300 阅读 · 0 评论 -
【DP】中国象棋
题目描述这次小可可想解决的难题和中国象棋有关。在一个 N 行 M 列的棋盘上,让你放若干个炮(可以是 0 个),使得没有任何一个炮可以攻击另一个炮,请问有多少种放置方法。大家肯定很清楚,在中国象棋中炮的行走方式是:一个炮能攻击到另一个炮,当且仅当它们在同一行或同一列中,且它们之间恰好有一个棋中。你也来和小可可一起锻炼一下思维吧!输入一行包含两个整数 N, M,之间由一个空格隔开。输出总共的方案数。由于该值可能很大,只需给出方案数模 9999973 的结果。样例输入1 3样例输出7数据原创 2020-08-12 19:13:40 · 165 阅读 · 0 评论 -
【期望DP】洛谷P1365 WJMZBMR打osu! / Easy
Link题目Sample-input4????Sample-output4.1250思路是看着这个做的xx。然后这里期望设f[i]为完成第i个点击时期望的分数:如果c=‘x’,分数不变,继承f[i-1]如果c=’o’,总共增加的分数=连击数2如果c=’?‘,~~(开始搞期望?)~~那么f[i] = x的情况所能得到的分数50%+o的情况所能得到的分数50%。但是连击数不能按照o统计,根据折算,累计=(累计+1)/2;Code#include<cstdio原创 2020-08-10 20:50:06 · 612 阅读 · 0 评论 -
【DP】洛谷P1077 摆花
Link题目解设f[j][i]为摆完以第i种花结束摆出j盆花的方案数量。其中第I种花摆的数量可能为0.然后枚举k=0 ~ a[i],那么转移就是f[j][i] = sum(f[j-k][i-1]);注意初始化,代码如下。Code#include<cstdio> #include<cmath>#include<iostream>using namespace std;int n,m,a[1001],f[1001][1001];int main(原创 2020-08-08 21:27:59 · 199 阅读 · 0 评论 -
【DP】洛谷P1070 道路游戏O(n^3)
-Problem Link-emmmmm这里n^3卡过去了,后续会上传新的优化后的打法题目Sample-in2 3 2 1 2 3 2 3 4 1 2Sample-out5思路DP,很容易想到设一个f[t]=t的时间内所能得到的最大金币转移为:f[t]=max(f[t-j]+money-price)代码这个是没卡过的96分,便于放注释就放上来了,卡过100分的请往下拉拉。#include<cstdio>#include<cmath>#in原创 2020-08-07 00:11:48 · 171 阅读 · 0 评论 -
【DP】【多重背包】洛谷P6567 [NOI Online #3 入门组]买表(民间数据)
LinkProblemSample-In3 51 25 16 33 19 21 1 7Sample-OutNoYesNoYesYes思路多重背包,,,于是把每个面值的个数拆开,拆成20+21+22+23…2n+k,使得从1到总个数都能拼凑出来。、然后进行01背包。Code#include<cstdio>#include<cmath>#include<iostream>using namespace std;int原创 2020-07-21 21:16:31 · 284 阅读 · 1 评论 -
【DP】洛谷P5124 [USACO18DEC]Teamwork G
Link~ProblemSample 1-输入7 3115792510Sample 1-输出84思路(这题好像没有蓝题难度…(思索.jpg)敲个特别暴力的dp就过了。DP,设f[j]为到分完第j个奶牛所能获取的最大值;然后又枚举i,从i到j分为一组;主要代码如下:for(int i = 1; i <= n; ++i){ //分组起始位置 s = sp[i]; //s用于统计这段奶牛水平中的最大值 for(int j = i; j <= mi原创 2020-07-21 08:32:28 · 174 阅读 · 0 评论 -
【离散化】【DP】洛谷P4945 最后的战役
…?这是同份代码。题目描述一些样例#1输入4 11 22 31 23 83 2 1 3输出21#2输入8 31 22 53 22 31 41 62 23 31 3 2 1 4 5 2 1输出57#3输入10 39 98 85 76 65 55 53 32 21 19 91 2 3 5 5 5 6 7 8 9输出124思路100%数据:n<=5×104,m<=500,0<pi&原创 2020-07-20 20:01:53 · 111 阅读 · 0 评论 -
【DP】【斜率】jzoj1257. 滑雪场的缆车
因为数据并不是很大所以这是一个常规DP。处理一下斜率就好了。(并没有很难?)Description科罗拉州的Farmer Ron打算为他的奶牛们建造一个滑雪场(虽然需要的设施仅仅是一部缆车)。建造一部缆车,需要从山脚到山顶立若干根柱子,并用钢丝连结它们。你可以认为相对于地面,柱子的高度可以忽略不计。每相邻两根柱子间都有钢丝直接相连。显然,所有钢丝的任何一段都不能在地面之下。为了节省建造的费...原创 2019-12-21 16:57:47 · 166 阅读 · 0 评论 -
【DP】jzoj3921. 翻硬币
Description小X 离开家的时候忘记带走了钱包,掉下的硬币在桌子上排成了一列。正在等着哥哥回来的小Y坐在桌子旁边,无聊地翻着桌子上的硬币。出于某种爱好,小Y 一次一定会同时翻转M 枚硬币。由于小Y 是一个爱动脑的小学生,这样进行了若干次之后她很快想到了一个问题:有多少种方法能够在K 次翻转后把硬币由原来的状态变成现在这样呢?因为小Y 是个好学的小学生,她只需要你告诉她方案数对1000...原创 2019-12-21 10:49:40 · 126 阅读 · 0 评论 -
洛谷P5662 纪念品(csp-j2019)
…wtcl,这题居然调了2个小时,当时有思路却没敲出来。。。Link这题是个完全背包。。。然后思路什么的比赛的时候想出来了但是却没敲出来。首先,我们可以当天买,当天卖,所以可以第一天买了一个纪念品,第二天卖了再买,第三天再卖。所以我们只需处理每一天,完全背包,设f[i][j]为i个物品,成本为j时可以赚到的钱。f[i][j]=max{f[i-1][j],f[i][j-a[i-1][j...原创 2019-11-28 17:12:43 · 954 阅读 · 0 评论 -
【树状DP】没有上司的晚会
心累.jpg新知识掌握的过程不会总是顺利的。Description 题目描述Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。每个职员有一个快乐指数。现在有个周年庆宴会,要求与会职员的快乐指数最大。但是,没有职员愿和直接上司一起与会。Input第一行一个整数N。(1&lt;=N&lt;=6000)接下来N行,第i...原创 2018-12-08 15:59:33 · 303 阅读 · 1 评论 -
【DP】饥饿的WZK(hunger)
【题目背景】一中食堂的格局,同别处不大一样,都是当门一个曲形的大窗口,里面是各式各样的饭菜。平时吃饭总是叫人活泼不得,只有WZK来的时候才能偶尔欢快一下。【问题描述】同学们在食堂窗口前排好了队。食堂窗口依次用1到N编号。每天晚上,一个幸运的同学根据WZK的规则,买其中一些窗口里的饭菜。WZK提供B个区间的清单。一个区间是一对整数start-end,1<=start<=end&l...原创 2019-07-08 21:14:30 · 323 阅读 · 0 评论 -
【DP】登机
小H是机场登机的执行经理。他的工作是优化登机流程。飞机上的座位有S行,编号从1到s,每行有六个座位,标记为A到F。今天 有n个乘客陆续登机,第i名乘客的座位在第Ri行,则第i名乘客的登机难度等于在他登机时坐在1…R(i-1)行的乘客的人数。例如,如果有10名乘客,他们的座位是6A,4B,2E,5F,2A,3F,1C,10E,8B,5A,那么他们的登机困难分别是0,0,0,2,0,2,0,7,7...原创 2019-06-13 17:11:38 · 368 阅读 · 0 评论 -
【DP】删数
有N个不同的正整数数x1, x2, … xN 排成一排,我们可以从左边或右边去掉连续的i个数(只能从两边删除数),1<=i<=n,剩下N-i个数,再把剩下的数按以上操作处理,直到所有的数都被删除为止。每次操作都有一个操作价值,比如现在要删除从i位置到k位置上的所有的数。操作价值为|xi – xk|*(k-i+1),如果只去掉一个数,操作价值为这个数的值。任务如何操作可以得到最大值...原创 2019-06-01 16:01:41 · 164 阅读 · 0 评论 -
【DP】维修栅栏
农场的栅栏年久失修,出现了多处破损,晶晶准备维修它,栅栏是由n块木板组成的,每块木板可能已经损坏也可能没有损坏。晶晶知道,维修连续m个木板(这m个木板不一定都是损坏的)的费用是sqrt(m)。可是,怎样设计方案才能使总费用最低呢?请你写程序帮忙计算。Output第一行包含一个整数n(n<=2500),表示栅栏的长度。第二行包含n个由空格分开的整数(-1000~1000),如果第i个数是...原创 2019-06-06 16:38:22 · 285 阅读 · 2 评论 -
【DP】树塔狂想曲
相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和。走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1)。如下图是一个数塔,映射到该数塔上行走的规则为:从左上角的点开始,向下走或向右下走直到最底层结束。13 82 5 01 4 3 81 4 2 5 0路径最大和是1+8+5+4+4 = 22,1+8+5+3+5 = 22或者1+8+0+...原创 2019-05-31 19:18:21 · 269 阅读 · 0 评论 -
【DP】作业
光光上了高中,科目增多了。在长假里,光光的老师们都非常严厉,都给他布置了一定量的作业。假期里,光光一共有的时间是 k 小时。在长假前,老师们一共给光光布置了 n份作业,第 i 份作业需要的时间是 ti 小时。但是由于老师们互相不商量,因此光光有可能不能完成老师的作业。当可能不能完成老师的作业时,光光就事后去向老师说明,然后被老师批评一顿了事。对于一件作业,只有 2 种情况:完成或者不完成(快要完成...原创 2019-07-09 15:14:31 · 165 阅读 · 0 评论 -
【普及模拟】楼梯
有N级楼梯,第i级楼梯的高度是H[i]。你必须通过一系列的操作来爬楼梯,每一步,你只能做如下三个选择之一:1、如果后一级楼梯的高度比你当前所在楼梯的高度恰好高1,那么你可以从当前楼梯爬上后一级楼梯。2、只要你不是在第1级楼梯,如果你愿意,你可以从当前楼梯后退到前一级楼梯。3、假如你最近K步都是在后退(不妨假设现在退到了第i级楼梯),那么你可以从当前的第i级楼梯走一步到达第j级楼梯,其中j &...原创 2019-07-05 15:33:58 · 365 阅读 · 3 评论 -
【普及模拟】好数
对于一个正整数X,如果把X化成二进制数后,如果X的二进制数至少有三个连续的1或者至少有3个连续的0(不能有前导0),那么X就是“好数”。例如8就是“好数”,因为8对应的二进制数是1000,有三个连续的0。整数15也是“好数”,因为15对应的二进制数是1111,也有三个连续的1。整数27就不是“好数”,因为27对应的二进制数是11011,既没有连续的三个1也没有连续三个0。现在给出两个整数Low、...原创 2019-07-05 21:55:15 · 509 阅读 · 0 评论 -
【DP】玩具
商店正在出售小C最喜欢的系列玩具,在接下来的n周中,每周会出售其中的一款,同一款玩具不会重复出现。由于是小C最喜欢的系列,他希望尽可能多地购买这些玩具,但是同一款玩具小C只会购买一个。同时,小C的预算只有m元,因此他无法将每一款都纳入囊中。此外,小C不能连续两周都购买玩具,否则他会陷入愧疚。现在小C想知道,他最多可以买多少款不同的玩具呢?Input输入文件共2行;第一行两个正整数n和m,中...原创 2019-08-07 17:11:46 · 275 阅读 · 0 评论 -
【DP】搭积木
还是蛮简单的(因为数据不是怎么大),但今天是颓废的一天~【滑稽】【逃是中山纪念中学的题。。。题目链接戳Leo是一个快乐的火星人,总是能和地球上的OIers玩得很high。2012到了,Leo又被召回火星了,在火星上没人陪他玩了,但是他有好多好多积木,于是他开始搭积木玩。火星人能制造n种积木,积木能无限供应。每种积木都是长方体,第i种积木的长、宽、高分别为li、wi、hi。积木可以旋转,...原创 2019-08-23 16:40:05 · 264 阅读 · 0 评论 -
【树形DP】电子眼
中山市是一个环境优美、气候宜人的小城市。因为城市的交通并不繁忙,市内的道路网很稀疏。准确地说,中山市有N条马路和N个路口,每条马路连接两个路口,每两个路口之间最多只有一条马路。作为一条交通网络,显然每两个路口之间都是可达的。为了更好地管理中山市的交通,市长决定在一些路口加装电子眼,用来随时监视路面情况。这些装在路口的电子眼能够监视所有连接到这个路口的马路。现在市长想知道最少需要在多少个路口安装电子...原创 2019-08-21 22:07:40 · 217 阅读 · 0 评论 -
【树形DP】最大利润
政府邀请了你在火车站开饭店,但不允许同时在两个相连接的火车站开。任意两个火车站有且只有一条路径,每个火车站最多有50个和它相连接的火车站。告诉你每个火车站的利润,问你可以获得的最大利润为多少。例如下图是火车站网络:最佳投资方案是在1,2,5,6这4个火车站开饭店可以获得利润为90Input第一行输入整数N(<=100000),表示有N个火车站,分别用1,2。。。,N来编号。接下来...原创 2019-08-22 22:21:47 · 240 阅读 · 0 评论 -
【区间DP】加分二叉树
洛谷P1040(Link)区间DP,设f[i][j]为i到j为一棵树的最大加分。#include<cstdio>long long f[51][51];int n,ans[51][51];void dg(int q, int z){ //递归q到z的前序 if(q>z) return; printf("%d ",ans[q][z]); //输出根 d...原创 2019-09-07 09:08:28 · 104 阅读 · 0 评论 -
【DP】天平问题
小C为了试验小X,便为物竞的小X出了一道物理相关的题:现在给出n个质量的砝码,问小X能称出多少种质量的物品,可是总有好事者想要破坏,于是乎,n达到了500,远远超出了小X能够承受的范围,锲而不舍的他决定寻求你们的帮助。Input第一行输入一个的正整数N以下N行每行一个不超过200的正整数,依次表示每个砝码的质量。Output输出总共能称出多少种不同质量的物品。于是我又差点对了。。。...原创 2019-05-18 15:45:27 · 371 阅读 · 0 评论 -
【DP】I Will Like Matrix!
在一个 n ∗ m 的矩阵 A 的所有位置中分别填入 0 或 1,要求填入的数必须满足 Ai,j ≤ Ai,j+1 且Ai,j ≤ Ai+1,j。询问一共有多少种不同的矩阵,并将答案对 1, 000, 000, 007 取模。Input共一行包含两个整数 n 和 m。Output共一行包含一个整数 ans,表示矩阵个数模 1, 000, 000, 007 的值。DP(我反过来了)。...原创 2019-05-11 14:48:44 · 122 阅读 · 0 评论