
dp
文章平均质量分 67
zhk1211
这个作者很懒,什么都没留下…
展开
-
题解 CF1409F 【Subsequences of Length Two】
看一下数据范围发现基本上标算应该是 O(n3)O(n^3)O(n3) 了、我们考虑 333 方的 dpdpdp。首先 t\texttt{t}t 的 222 个字符相等的话,答案为int s=0;for(int i=1;i<=n;i++) if(a[i]==b[1])s++;s=min(n,s+k);int x=(s*(s-1)/2);cout<<x;代码的 sss 就是结果 kkk 次操作,字符串 s\texttt{s}s 里面最多有 sss 个 t\texttt{t}原创 2020-09-05 15:48:32 · 1346 阅读 · 1 评论 -
题解 CF1409E 【Two Platforms】
写篇题解庆祝我第 111 次参加 div3div3div3,而且还 AKAKAK 了我们发现 yyy 坐标越低越好,所以答案与 yyy 坐标无关。现在问题等价于一条数轴上有 nnn 个点,求 222 条线段覆盖尽可能多的点.我们考虑类似于双子序列最大和一样的做法首先,有 222 个结论:222 条线段重叠明显是不优的,我们就需要让这两条无重叠。线段的至少 111 的端点要是 nnn 个点当中的一个,这样显然会比线段 222 段都不是 nnn 个中的一个的要优。这样就可以了代码:int原创 2020-09-05 15:18:12 · 246 阅读 · 3 评论 -
题解 CF1391D 【505】
这道题目的话看似没有头绪,我们分析一下。偶数长度平方矩阵为:2×22 \times 22×2、4×44 \times 44×4、8×88 \times 88×8……我们考虑是否可能同时满足所有 2×22 \times 22×2 的矩阵 111 的个数为奇数,所有 4×44 \times 44×4 的矩阵 111 的个数为奇数。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uD8pFpHw-1597048634801)(https://i.loli.net/2020/08原创 2020-08-10 16:37:41 · 351 阅读 · 3 评论 -
题解 CF1389B 【Array Walk】
简要题意:你前面一共有 nnn 个格子,每个格子都有它的分值 axa_xax。当你到达第 xxx 个格子就能获得第 xxx 个格子的得分 axa_xax。初始时你站在第 111 个格子,每一次移动你可以选择向左或向右,特别地,向左移动的次数不能超过 zzz。现在,请问你正好走了 kkk 步后,最大得分是多少?这道题比赛时,我先写了个正解,结果发现出了点问题,然后不知道怎么想的,去写了 222 个显然是假的的贪心,然后又跑回去重新按照第 111 次的思路写了一遍,然后就过了。于是我就丢人地做了原创 2020-07-30 17:21:56 · 1419 阅读 · 6 评论 -
题解 P2285 【[HNOI2004]打鼹鼠】
鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的。根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个nn的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气。你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死。而机器人每一时刻只能够移动一格或停留在原地不动。机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j),(i+1, j),(i,j-1),(i,j+1)四个网格,.原创 2020-05-10 18:36:25 · 599 阅读 · 0 评论 -
题解 P6512 【[QkOI#R1] Quark and Flying Pigs】
给定一个 nn 个点 mm 条边的边带权简单连通无向图,在 00 时刻你在点 11 上。假设当前是 tt 时刻,你在点 vv 上,你可以选择两种操作:仍停留在点 vv 上,操作后到 t+1t+1 时刻。选择一条边 (a,b,w)(a,b,w)(a,b,w) 满足 a=va=va=v 或 b=vb=vb=v,则你到这条边连接的另一个点上,操作后到 t+wt+wt+w 时刻。有 kkk 条信息,每一条信息形如 (ti,vi)(t_i,v_i)(ti,vi) 表示在 tit_iti 时.原创 2020-05-10 18:27:33 · 292 阅读 · 3 评论 -
路面修整的题解
FJ 打算好好修一下农场中某条凹凸不平的土路。按奶牛们的要求,修好后的路面高度应当单调上升或单调下降,也就是说,高度上升与高度下降的路段不能同时出现在修好的路中。整条路被分成了 N 段,N 个整数 A_1, … , A_N (1 <= N <= 2,000)依次描述了每一段路的高度(0 <= A_i <= 1,000,000,000)。FJ 希望找到一个恰好含 N...原创 2020-04-12 12:31:14 · 517 阅读 · 3 评论 -
斗地主的题解
可惜他们面对一个严峻的问题,因为斗地主前得选一个人先做叫/不叫地主的操作,于是csy拿出一个色(se)子(zi),打算比谁的点数高。但是作为OIer,比法得高级一点,于是zhk大佬想出了一个办法,他给出T(T<=5000)个问题,每个问题是:初始时色子的顶面是1,接下来你可以任意钦定一个点数朝上,作为第一步,下面每一步,你可以将色子的四个侧面中的任意一个旋转成顶面,使得每一步朝上的点数的总...原创 2020-04-11 22:22:31 · 491 阅读 · 0 评论 -
二叉树上的程序猿的题解
WHX发现了程序猿的惊天秘密,她喜欢吃树上的香蕉,在森林中有N棵二叉树,高度分别是a[1]-a[n],每棵树上有b[1]-b[n]棵香蕉,程序猿站在比所有树都高的山岭上,第一次可以跳到任意一棵树上,但之后只能落在与自己平行的树上或比自己所处位置低的树上,并采摘香蕉,请问程序猿一共最多能采到多少香蕉?水题!dp其实就很像导弹拦截#include <bits/stdc++.h>...原创 2020-04-11 22:19:38 · 223 阅读 · 0 评论 -
题解 P4147 【玉蟾宫】(悬线法dp+单调栈)
这道题,我们可以想一下,矩形的面积跟 222 条边有关。对于每个点,我们算出 333 个数,lft、rgt、up。lft:即此点最多能向左延伸到哪一列。(初值为j)for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[i][j]&&a[i][j-1])lft[i][j]=lft[i][j-1];rgt:即...原创 2020-04-08 13:20:16 · 444 阅读 · 4 评论 -
修建泳池的题解
这道题,我们可以想一下,矩形的面积跟 222 条边有关。对于每个点,我们算出 333 个数,lft、rgt、up。lft:即此点最多能向左延伸到哪一列。(初值为j)for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[i][j]&&a[i][j-1])lft[i][j]=lft[i][j-1];rgt:即...原创 2020-04-08 12:01:28 · 286 阅读 · 0 评论 -
2020-3-7模拟赛题解
T1做厌了乘法计算题的贝茜,自创了一种新的乘法运算法则。在这套法则里,A×BA\times BA×B 等于一个取自 A、一个取自 B 的所有数字对的乘积的和。比方说,123×45123\times45123×45 等于1×4+1×5+2×4+2×5+3×4+3×5=541\times4 + 1\times5 + 2\times4 + 2\times5 + 3\times4 + 3\time...原创 2020-04-07 11:46:04 · 1511 阅读 · 4 评论 -
题解 P1578 【奶牛浴场】
题目链接这道题我们需要用到王知昆dalao的算法。我们先要以行为第 111 关键字排序,再以列为第 222 关键字排序。我们从一个点往右扫。确定一个上边界 xxx 和下边界 yyy。扫的时候不断地去更新。我们从一个点往左扫。确定一个上边界 xxx 和下边界 yyy。扫的时候不断地去更新。还有一种情况就是所以,我们得判断这种条件。注意:边界条件,需要手动加 444 个点1...原创 2020-04-06 23:43:54 · 348 阅读 · 1 评论 -
第2题:母牛生小牛
第2题:母牛生小牛这一题呢,我用了许多种尝试,刚开始用了递归暴力模拟,我想大家都能看懂。#include <bits/stdc++.h>using namespace std;unsigned long long n;unsigned long long ss(unsigned long long x){ unsigned long long y=x+3; u...原创 2020-04-05 13:21:09 · 1252 阅读 · 1 评论 -
第一题 奶牛散步
第一题 奶牛散步这是说不清的动规还是递推,个人认为更偏向于递推递推公式:f[i]=(2*f[i-1]+f[i-2])%12345;边界条件:f[1]=3;f[2]=7;因此,代码就出来了。#include<bits/stdc++.h>using namespace std;int f[1005],n;int main(){ cin>>n; f[...原创 2020-04-05 12:58:02 · 1026 阅读 · 4 评论 -
题解 P1052 【过河】
显然是dpdpdp,是用STLSTLSTL当中的mapmapmap可以做到30分#include <bits/stdc++.h>//万能头文件using namespace std;int l,n,s,t;map<int,bool>m;//记有没有石头map<int,int>dp;//最少踩到石头的个数int main(){ cin>&...原创 2020-04-05 11:35:26 · 330 阅读 · 1 评论 -
题解 P1748 【H数】
我来讲讲 dpdpdp 的做法前言昨天 PHYPHYPHY 大佬问我,这题怎么做?考虑到他没学过 setsetset 、 priorityqueuepriority_queuepriorityqueue 和 queuequeuequeue 。之后,我就想到了可以用 dpdpdp 来解决这道题。正文设置状态很显然,我们可以用 f[i]f[i]f[i] 表示第iii个数是多少。转移第i...原创 2020-04-05 11:32:58 · 706 阅读 · 0 评论 -
题解 P4302 【[SCOI2003]字符串折叠】
讲讲我的做法题目大意:对一个字符串进行折叠是它长度最小看一眼数据范围:哇!字符串长度不超过100!这是一道省选题,不可能给你太宽裕的时限,所以,题目基本暗示你要用n3n^{3}n3多一些的算法复杂度。这是一道最优化的题目,常见求最优化问题的算法比如贪心,模拟,枚举我都想不出什么好办法,唯独觉得像一道区间dpdpdp区间dpdpdp的分析解释状态我们用f[i][j]f[i][j]f[i]...原创 2020-04-05 10:52:39 · 264 阅读 · 2 评论 -
题解 P6249 【神帖】
这道题目我一看到就想起了经典题——关路灯但是时间好像不太好搞啊!我们可以枚举时间qwq考虑 444 维 dpdpdp fi,j,t,0/1f_{i,j,t,0/1}fi,j,t,0/1 表示 zrlzrlzrl 看了第 iii 页到第 jjj 页,此时时间为 ttt。最后一维如果是 000 就是在第 iii 页。如果是 111 就是在第 jjj 页。为什么这样是对的?...原创 2020-04-04 18:09:13 · 1149 阅读 · 6 评论 -
题解 P2642 【双子序列最大和】
前言其实这道题的关键就是在于预处理,其方法类似于 合唱队形正文求最大子段和要想求出双子序列最大和,首先我们要会求出最大子段和最大子段和的求值方法很简单定义 fif_ifi 为以第 iii 个数结尾的最大子段和#include <bits/stdc++.h>using namespace std;int f[1000010],a[1000010];int main(...原创 2020-04-04 22:52:07 · 878 阅读 · 1 评论 -
题解 P3205 【[HNOI2010]合唱队】
讲讲我的做法看了题目发现要用区间dpdpdp,为什么?我们发现区间dpdpdp有一个性质——大区间包涵小区间,这道题就符合这样的一个性质所以我们要用区间dpdpdp来解决这道题。如何设计状态那么我们要怎么设计状态,我们想,每给人进入队伍里,只有2种可能,1种是从左边加入,另外1种是从右边进入,所以我们的装态是有3个数f[i][j][0]f[i][j][0]f[i][j][0]表示的是...原创 2020-04-04 22:49:28 · 395 阅读 · 0 评论 -
题解 P1002 【过河卒】
正文简单描述一下题意:士兵想要过河,他每一次可以往下走一格,也可以往右走一格,但马一步走到的地方是不能走的,问走到nnn行,mmm列有多少种走法我们显然应该先根据马的位置将不能走的格子做一下标记于是,就会写下这段代码:void work(long long x,long long y){ ma[x][y]=1; ma[x-1][y-2]=1; ma[x-2][y...原创 2020-04-04 22:42:41 · 744 阅读 · 1 评论