![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
各种题题解
文章平均质量分 50
iuk11
我想去更远的地方看看,现在还缺少载具。
展开
-
【蓝桥杯国赛】游园安排
最长上升子序列 LIS 优化 二分与贪心 单调队列数据范围 1e6,如果用普通的LIS会超时。现在介绍优化版本:在单调队列中,保证所有字符串按照字典序单增。首先对题目进行字符串处理,按照顺序依次入队。入队满足两个条件:当前元素比队尾元素大,直接入队;当前元素比队尾元素小,二分找到第一个大于等于该元素的元素,替换它。最终的队列长度一定是该序列的最长子序列长度。(结论1)在每一次入队操作时,同时更新len序列(表示以第i个元素结尾的序列的最长子序列的长度):当前元素比队尾元素大,长度为队列原创 2022-05-14 14:32:40 · 360 阅读 · 2 评论 -
计数dp cf1426f Number of Subsequences
题目题意很简单,输入n(字符串长度),s(字符串),字符串只包含a b c ? 四种字符。如果遇到? 字符串序列会分裂成三个,? 位置分别由a,b,c代替。问全部字符串序列中,abc子序列的数量。dp[i][0] 表示 到i位为至,a的数量dp[i][1] 表示 到i位为至,ab的数量dp[i][2] 表示 到i位为至,abc的数量数量转移有dp[i][j]=dp[i-1][j]+dp[i-1][j-1] j>=1dp[i][j]=dp[i-1][j]+1 j=0对于?产生的分裂,可以原创 2022-04-14 18:39:12 · 203 阅读 · 0 评论 -
计数dp cf404d
蓝桥杯两道我愿称为全是计数dp,昨天找了一道d,不敢练f。计数dp就是找规律,把情况找全进行转移即可。题目题意见题目。一开始设的情况不够用,后面补充全了。dp[i][0] 到第i位结尾,当前位为0dp[i][1] 到第i位结尾,当前位为1,且s[i-1]是一个雷dp[i][2] 到第i位结尾,当前位为1,且s[i-1]不是一个雷dp[i][3] 到第i位结尾,当前位为2dp[i][4] 到第i位结尾,当前位为雷如果是?就把?可以替代的情况都填一遍。#include<bits/原创 2022-04-14 14:38:52 · 138 阅读 · 0 评论 -
第十三届蓝桥杯省赛b组 两道dp补题
画积木推导见上图因为画布为2*n,只有两行,所以可以考虑每一种占满两行的方式,对每种方式做一个状态转移,得到的就是总方案数。#include<bits/stdc++.h>using namespace std;const int N=1e7+100;const int mod=1e9+7;typedef long long ll;ll f[N],sum[N];ll n;int main(){ cin>>n; f[0]=1;f[1]=1;f[2]=原创 2022-04-12 22:04:45 · 171 阅读 · 0 评论 -
codeforce#edu125d 补题
现在是每日一题。最近争取能想出来个d。【题意】总共金币为 CCC ,士兵种类为 nnn 。每个士兵有三个属性 h 生命 d 攻击 c 购买费用有 mmm 次查询,每次查询:给出一个野怪的 H 生命 D 攻击需要满足:{h[i]∗d[i]∗cnt>H∗Dcnt∗c[i]≤C \left\{ \begin{array}{ll} h[i]*d[i]*cnt>H*D \\ cnt*c[i] \leq C \原创 2022-03-24 02:06:02 · 1154 阅读 · 0 评论 -
【桂林信息科技学院第一届程序设计大赛】完整题解 C++
目录A.Hello 小明B.博学多识的小明C.小明爱偶数D.小明爱打单词E.小明打篮球F.小明爱数学G.小明与张三H.小明拿宝藏I.小明的考试成绩J.小明与鲜花K.小明与小红的增删图游戏后记A.Hello 小明本题作为本场最简单的签到题,改编于hello world,想考察大家的字符串输入输出能力。#include<bits/stdc++.h>using namespace std;int main(){ string s; cin>>s; cout原创 2021-12-05 17:00:00 · 1094 阅读 · 0 评论 -
acwing 1204 剪格子
本来想手写一个hash的,发现自己写的运行时间直接爆了。没处理好,学完再补一个。用了unordered_set,看y总代码学了一手。代码分了四部分:读入部分读入值的同时也要累加,用于判断一半的值是多少。可以观察到要想两部分数值和相等,一定是这个累加值是个偶数,所以奇数的情况直接输出0,因为不可能被平均分成两份。然后初始化一下标记数组(vis)与点集数组§,进去深搜。深搜部分我一开始没想明白为啥要用深搜,我一想深搜是搜一条路径呀,但是题目要求的是一个连通区域呀。就比如这种图在左上角深搜肯定原创 2021-04-28 22:35:41 · 74 阅读 · 0 评论 -
Codeforces - 1000 C Covered Points Count 差分
打卡 day 10题意:给出一条n个点的线段,问被重复覆盖1,2,3…n次的点的个数是多少。这题和我写的博客的上一题一样,poj3263,唯一的区别是它区间给的太大,要离散化处理,啥是离散化,就是别遍历,直接处理左端点和右端点,然后看这个区间里有多少个点,代码里写的是it->firsrt-x,就是这次的左端点减上次的左端点,看隔了多少个点,这些点不被新的这个区间覆盖,所以相减相隔的这段的被覆盖个数要比新的这个左端点开始的区间个数少一个,计数就这么计。为啥要r+1,是因为在r的时候,这个点还被覆盖着原创 2021-04-01 21:26:47 · 118 阅读 · 0 评论 -
POJ3263 Tallest Cow 差分
打卡 day 10今天写牛客比赛,刚学完tarjan就想用,发现数据范围好小,解决叶子节点后,发现暴力就行,难的是怎么传递权值。。还要接着补一下了,感觉自己学会了,其实差的还很多。这题的题意是:给n个牛,给一个最高的牛它的下标和它的高度,再给出区间,一左一右两头牛,这两头牛中间的牛都比它们两个矮,问每头牛最高是多高。我其实就是想知道怎么用差分。。思路就是把这两头牛想象成线段的端点,这n个牛排成一排想象成一条线,我们把左端点的下一位-1,直到右端点为止且右端点+1,其实是为了给前缀和数组做初始处理原创 2021-04-01 20:57:28 · 66 阅读 · 0 评论 -
连通图 P3387 缩点 模板
打卡 day 9看题意就很好理解什么叫缩点,有一定的引导作用。缩点就是把强连通分量(一个环)缩成一个点,因为要找最长一条路的权值,而且可以重复走,我们就可以把一个强连通分量内的权值都累加到它们的根的权值上,然后在新建的图中做广搜,或者拓扑排序+DP(我想先弄明白Tarjan,这个之后再补)我这次把细节写在注释里吧。AC代码:#include<bits/stdc++.h>using namespace std;const int maxn=1e5+10;int n,m;int d原创 2021-03-28 11:24:25 · 113 阅读 · 0 评论 -
HDU 1541 Stars
是刷树状数组的题单,看到了这道题,所以一开始就想怎么套进树状数组里,但是自己理解的又不是太好,写完了有点小爽,记录一下吧。题意n行n个点(1~n),每行两个坐标,找出比当前点数小的点且在当前点的非右边(横坐标小于等于当前的横坐标),而且所有坐标是按照纵坐标不一制,纵坐标从小到大;纵坐标一致,横坐标从小到大的顺序排序好的。问等级,等级就是当前点有多少个其它满足条件的点。思路两个数组a[],p[],a[]存当前下标之后的i都等级+1,query(i)查询当前的i之前有多少满足条件的点,都已经预存进了a原创 2020-12-11 17:29:49 · 52 阅读 · 0 评论