牛客竞赛
文章平均质量分 58
&稚始稚终
这个作者很懒,什么都没留下…
展开
-
飞马祝福语(线段树维护区间动态规划)
飞马祝福语题目传送门思路:线段树维护区间动态规划。设祝福信为s,FeiMa为x,s的下标从1开始,x的下标从0开始。使用线段树维护区间动态规划。另dp[rt][i][j]表示线段树的rt节点包含的字符子串的范围内,拥有字符串x的第 i 位到第 j 位区间子序列的数量(例如, i=0,j=0表示 rt节点中 F 的数量,i=1,j=1 表示节点中 e 的数量, i=2,j=3表示节点中子序列为 iM 的数量),那么状态转移方程为:AC Code#include<bits/stdc++.原创 2021-05-31 21:05:11 · 165 阅读 · 0 评论 -
背包+bitset
题目描述题解:(参考于此)这个题是个典型的分组背包。f[i][j] 为前i个数能否构成 j ,考虑第i个数选还是不选。显然 f [ i-1 ][ j-x[i]2]==1的话f[i][j]就是可以的,x[i]的取值范围是 l[i] 到 r[i]。这样的话其实有点浪费——f数组是一个只有01两种值的数组,哪怕表示成bool类型都有点多余,于是我们可以考虑用bitset来优化它。bitset你可以理解为一个长度很长的01数字串(实际上它是用int拼接而成),也可以理解为可以用位运算的bool数组转载 2021-05-28 15:32:01 · 321 阅读 · 0 评论 -
牛客练习赛83 C.集合操作
C.集合操作(思维,后缀)题目传送门:C.集合操作题目:思路:数据量很大,操作数和每次减去的数<=1e18。那么如果模拟的话肯定妥妥的爆炸。我们比较容易可以想到如果很多个数在同一个p的区块时(这些数中的最大值和最小值的差小于p)那么将这里面的所有数同时减去p时,他们的相对大小是不变的。那么我们就可以先把原来的数排个序,从后往前操作,将后面的数不断并到前面的区块上,当并到不能操作时再退出。剩下的操作再进行暴力模拟,剩下的操作数量必然小于n。所以时间复杂度为nlogn。AC Code#i原创 2021-05-23 15:52:12 · 326 阅读 · 3 评论 -
2021牛客寒假集训营4
武辰延的字符串思路:比赛的时候一直想着要用到kmp,其实并不需要。题目要我们求的其实就是t i+j = s i+s j。那么只要枚举s和t的所有相同前缀,然后二分查找 t - si ,找到能匹配上s的前缀 sj 的最大长度,计入答案即可。具体算法就是哈希和二分:哈希能够快速O(1)判断两个子串是否匹配二分是因为我们在找到某个前缀匹配时,前缀的前缀也一定匹配,所以可以二分找到最长前缀,因为比它长的前缀都不匹配,比它短的所有前缀都匹配,这就满足二分使用前提的单调性。AC Code#i原创 2021-02-20 21:42:10 · 178 阅读 · 0 评论 -
E.买礼物(线段树查询区间是否有重复的值)
买礼物题目传送门:买礼物思路:pre[i]表示第i个礼物的上一个相同礼物的位置nex[i]示第i个礼物的下一个相同礼物的位置我们要维护的就是区间 l ~ r 间nex[i]的最小值或者pre[i]的最大值。我这里维护的是pre[i]的最大值,当删除位置i的物品时,把pre[i]置成0,但需要注意的是因为删除了当前位置的礼物,所以我们还需要修改下一个位置的相同礼物的上一个位置,及 pre[ nex [i] ] = pre[i]。查询时看区间最大值是否大于等于r即可。AC Code#incl原创 2021-02-08 23:28:11 · 281 阅读 · 0 评论 -
浙江农林大学第十九届程序设计竞赛暨天梯赛选拔赛部分题题解
B.每日咕咚题目传送门每日咕咚题意见题干思路:每个同学在每个位置的概率都为1/n,那么简单求期望就好。#include<bits/stdc++.h>using namespace std;int main(){ int n; double x,v; scanf("%d%lf%lf",&n,&x,&v); double dis=n*x; double ans=0; for(int j=1;j<=n;j+原创 2020-10-24 23:41:49 · 435 阅读 · 0 评论 -
牛客练习赛68题解 A-C
A.牛牛的mex题目传送门牛牛的mex题目大意给你一个长度为n的序列a1~an(0<=ai<n且ai互不相同),有q次询问,每次想询问区间[l,r]中最小的未出现的自然数。思路由于每个0~n-1每个数字都只出现了一次,于是我们可以记下每个数字出现的位置,然后每次询问都从小到大进行遍历,如果该数不在询问范围内,那么它就是答案。AC Code#include<bits/stdc++.h>using namespace std;const int N=1e5+10;i原创 2020-08-29 17:05:56 · 2138 阅读 · 0 评论