自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

木静音yy的博客

一起学习呀~~~

  • 博客(172)
  • 收藏
  • 关注

原创 树状数组(入门,慢慢补)

树状数组的一些简单操作要搞清楚~首先是:int lowbit(int x){ return x & -x;}它是基础噢,具体描述参考别的大佬的文章单点更新:void update(int x,int val){//单点更新 while(x<=n){ b[x]+=val; x+=lowbit(x); }}//从小到大 求区间[1,x]的和:int sum(int x){//求前缀和 区间[1,x] int sum=0; while(x>0){

2021-04-29 00:30:30 128

原创 贪心 做题

记录贪心做题P1223 排队接水P1803 凌乱的yyy / 线段覆盖P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair GP1031 [NOIP2002 提高组] 均分纸牌P2240 【深基12.例1】部分背包问题P1080 [NOIP2012 提高组] 国王游戏P1223 排队接水题目题目描述有 n 个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这 n 个人排队的一种顺序,使得 n个人的平均等待时间最小。输入格式第一

2021-01-24 00:50:54 718 2

原创 BFS类题目,从简单开始

区分用广搜还是深搜最大的区别主要在于一个解决的主要是走几步,一个解决的主要是有几种方法;即:BFS:几步路DFS:几种方法首先解决BFS类问题一定要了解queue的用法,它贯穿整个BFS类题目开始做题!做题!P1162 填涂颜色P1443 马的遍历P1135 奇怪的电梯4001:抓住那头牛P1141 01迷宫P1162 填涂颜色题目描述由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向。现要求把闭合圈内的所有空间都填写成2.例如:6×6的方阵(n=6)

2021-01-23 00:43:21 519

原创 经典01背包问题(动态规划入门题)

题目:Charm Bracelet描述Bessie has gone to the mall’s jewelry store and spies a charm bracelet. Of course, she’d like to fill it with the best charms possible from the N(1 ≤ N≤ 3,402) available charms. Each charm iin the supplied list has a weight Wi(1 ≤ Wi≤

2021-01-19 17:43:03 731

原创 做题基础~~~tips

1.拆分数字x(可以很大噢)int x,a[10005],c=0;//a[]数组存放拆分出来的每个数字,c用于标记数字在数组里存放的位置 scanf("%d",&x); while(x){ a[c++]=x%10; x/=10; } for(int i=c-1;i>=0;i--)//正序输出 printf("%d ",a[i]);2.关于长度:字符串数组长度:strlen()整型数组长度:sizeof(arr)/sizeof( int )注意:这里得到的是数组的

2021-01-01 13:03:27 1798 5

原创 UVA11021 Tribles(概率dp——全概率)

次生物生了j个后代,这些后代在。种生物,所以最后答案为。(交不了不知正误)

2022-07-29 16:45:00 227 1

原创 Football (概率dp+二进制运用)

支队伍,给出两两队伍之间比赛的胜率。问哪个队伍成为冠军的概率最大。由于此时比赛过的队伍不能重复,所以运用二进制将其按顺序比赛。第1场看其最低位不同且比最低位大的其它位相同的打比赛。第2次看其次低位不同且比最次位大的其它位相同的打比赛。(可以自己模拟一下)...

2022-07-28 20:14:59 298

原创 取包裹(对线段贪心 set+lower_bound)

有n件包裹,每次可以取k件。给出每件包裹入库时间和最晚取走时间。(入库当天和最晚取走当天都可以取快递)问最少几次可以将所有包裹取出。拿包裹的件数加一,若此时那确定去快递点的时间。一定要有一次把它取出来,所以每次在最小。拿满了,说明不能之后的包裹无法在此时刻。从小到大排序,遍历,每次都对最小的。),并且记录此时刻取包裹件数为1。一起取走,此时确定去快递点的时间。大于所有已存的确定去快递点的时间。小于等于确定去快递点的时间。当天取出包裹即最优。......

2022-07-26 23:31:34 317 3

原创 LOOPS(期望dp)

每个位置给出原地不动、向下走一步和向右走一步的概率,每走一步会消耗2能量,问从。列原地不动(0)、向下走一步(1)和向右走一步(2)的概率。,但此时其为未知数,所以将其化简到等是的一边即可求解答案。加2含义每走一步需要消耗2能量。...

2022-07-25 19:53:49 119

原创 Aeroplane chess(期望dp)

问从起点到终点掷骰子的期望次数。加一操作到达当前状态需要掷一次骰子。

2022-07-25 19:08:02 198

原创 Collecting Bugs(期望dp)

每天可以从s个子系统中查找1个bug。问发现n中bug并且每个子系统至少发现1个bug的期望。期望可以分解成多个子期望的加权和,权为子期望发生的概率,即。初始化为0,因为已经达到目标;dp[0][0]即所求答案。表示在j个子系统中找到i中bug的期望。maybe概率正推,期望逆推。状态转化为以下四种(概率)............

2022-07-24 20:49:14 186

原创 P5826 【模板】子序列自动机

序列自动机

2022-07-16 20:21:49 106

原创 Obtain The String(序列自动机/vector+二分)

序列自动机/vector+二分

2022-07-16 15:28:14 156

原创 [NOIP2013]车站分级(思维+拓扑but想不到)

拓扑

2022-07-03 18:21:51 274

原创 Stammering Aliens(哈希+二分)

LINK题目:大致翻译:在字符串s中寻找出现次数不小于m的最长子串,输出该子串的长度和在s中最后一次出现的位置。思路:运用二分的思想来查找子串的长度,相同长度子串运用哈希存入map中,map统计子串出现次数是否不小于m代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define ull unsigned long long#define pa pair<ull,ull>//

2022-05-30 13:18:43 134

原创 Hash(简单说明+记录题目)

题目:1.哈希模板为了解决哈希碰撞可以双哈希,双重保险hh2.双哈希模板

2022-05-29 23:32:17 84

原创 Birthday Cake(双哈希,思维)

LINK双哈希是为了解决哈希冲突的一种方法题目:链接:https://ac.nowcoder.com/acm/contest/16092/F来源:牛客网示例1输入3ababcabc输出3示例2输入3abcacabc输出0示例3输入4hhhhhhhhhhhh输出6大致题意:给出n个字符串,现寻找两个字符串相加后形成AA的形式,问:n个字符串中有多少满足题意。说明:AA的形式为两个相同的字符串A,例如"abcdabcd"中A=“abcd”。思路

2022-05-29 23:23:38 305

原创 马拉车(manacher)

作用:在O(n)时间内找到最长回文串1.改造字符串:字符串有奇偶之分,但偶回文串不好找对称中心,所以用此方法将字符串变为奇字符串。方法:在字符之间和两边插入 ‘#’。2.回文半径:定义:以i为中心,最长回文串长度的一半例如:此时以iii为中心的回文串长度即为p[i]−1p[i]-1p[i]−13.加速盒子:盒子范围:[l,r][l,r][l,r]维护右端点最靠右的最长回文串,利用数组p[i]对称点的值转移,从而节省时间。例如:在枚举完前i−1i-1i−1个字符后,维护盒子[l,r

2022-05-29 20:59:00 133

原创 Calendar Game(记忆化搜索、博弈)

LINK题目:样例:翻译:给出日期(年月日),两个人轮流按照规则操作,首先到达2001年11月4日的人获胜。规则如下:1.增加一天2.增加一个月(到下一个月的当天)若先手获胜输出YES否则输出NO。思路:如果日+1/月+1中有一个为非必胜态,那么当前日期为必胜态;如果日+1/月+1都是必胜态,那么当前日期为必败态。代码:#include<bits/stdc++.h>using namespace std;#define ll long long//#defin

2022-05-15 23:03:56 226

原创 B. Tokitsukaze and Meeting(滑动窗口+思维)

LINK题目大致翻译:现在有n×mn\times mn×m个位置,有n×mn\times mn×m个学生,每个学生为0或1,依次进入,依次进入规则如图问:每加入一个学生后,至少有一个1的行列之和。思路:对于行列的考虑分开进行:对于每列:每次加入一个学生列中的1要不就不变,要不就加1;对于每行:每次加入一个学生行的变化可能会增加可能不变可能减少,可以运用滑动窗口,记录行的变化和每次加入学生后当前行1的个数;代码:#include<bits/stdc++.h>usin

2022-05-14 16:37:23 351 22

原创 A. Tokitsukaze and Strange Inequality(思维+前缀和)

LINK题目:大致翻译:给一个数组PPP,其中a<b<c<da<b<c<da<b<c<d,求满足 Pa<PcPa<PcPa<Pc &Pb>PdPb>PdPb>Pd 的四元组数目。思路:枚举Pb,Pa随之更新,将Pa放入数组中,求其前缀和。枚举Pb,Pa随之更新,将Pa放入数组中,求其前缀和。枚举Pb,Pa随之更新,将Pa放入数组中,求其前缀和。作用:借助前缀和标记小于等于Pa的个数,即d[j]:此

2022-05-13 17:28:51 435

原创 Palindrome Basis(完全背包)

LINK题目:大致翻译:一个数字由数字回文串相加,问有多少种组合情况。思路:由完全背包可得:dp[i][j]:dp[i][j]:dp[i][j]:前iii个物品随意取,组成总体积为jjj的方法数。由此思路可得前iii个回文数里,相加之和为jjj的方法数。再转换为一维可得:转换公式为:dp[j]=(dp[j]+dp[j-v[i]])%mod;代码:#include <bits/stdc++.h>using namespace std;//#define ll lon

2022-05-05 16:48:52 226

原创 E. Preorder(dfs思维)

LINK题目Examplesinput4BAAAAAAAABBABABoutput16input2BAAoutput1input2ABAoutput2input2AABoutput2input2AAAoutput1大致翻译:给出一个n层一个完全二叉树以及它的前序遍历的结点上对应的字母,结点只能为A或B,现在可以任意翻转节点上的左右子树,形成一个新的前序遍历字符串,问字符串有多少种不同的情况。思路:将每个节点的左右子树构成的字符串按左小右大的顺序

2022-04-30 19:47:55 1011

原创 L2-001 紧急救援 (25 分)(最短路之dijkstra)

LINK突然发现图论一窍不通……现学现卖题目:思路:纯纯dijkstra注意一个wa点:7 9 0 60 0 2 3 8 5 00 1 11 2 11 3 12 4 13 5 14 6 15 6 12 5 13 4 1此时路径数目应该是4代码:注释很详细了#include <bits/stdc++.h>using namespace std;#define ll long longconst int N=500+10;const int inf

2022-04-21 23:30:04 247

原创 AC 反悔贪心,priority 难

LINK题目示例1输入9 2arakbacca输出3acacbacca翻译:给一个长度为 n 的字符串, 最多有 k 次修改字符串的机会, 每一次只能将任意一位字符修改为其他字符, 输出修改后的字符串最多有多少个"ac", 并输出字符串思路能想到这个思路就很NB!!!此题和种树有很大的关系,都用到了缩点,更难的一点是需要另开两个数组标记一下改变的位置。具体解说用一个例子稍作解释:代码:#include<bits/stdc++.h>using namespac

2022-04-15 21:15:57 531

原创 P1792 [国家集训队]种树(反悔贪心+priority)

LINK题目:思路:参考种树一点点区别在于:特判种不满的情况,将首尾的左右位置稍作修改,在循环时一定要种满K棵树代码:#include<bits/stdc++.h>using namespace std;#define ll long long const int N=5e5+10;const int inf=0x3f3f3f3f;struct node{ int a,pos; //priority_queue中自定义的比较函数的效果和sort()是相反的 boo

2022-04-14 20:34:57 262

原创 P1484 种树(反悔贪心,priority)

LINK题目:思路:反悔贪心,将所有坑都放在优先队列中。先从值最大的开始贪,在贪的时候还要记录它的左右,因为存在一种情况,如:处理左右位置不可选的坑:代码:#include<bits/stdc++.h>using namespace std;#define ll long long const int N=5e5+10;const int inf=0x3f3f3f3f;struct node{ int a,pos; //priority_queue中自定义的比

2022-04-14 20:14:13 567

原创 Cities(区间dp)

LINK题目样例:示例1输入284 3 1 2 1 1 3 351 2 3 2 1输出32大致题意:给定n个城市,每个城市都有一个数字,你可以使用一次魔法把相同且连续的一串数字变成任意一个数字,问最少使用多少次魔法能使所有城市变成同一个数字。区间dp模板:for(int len=2;len<=n;len++)//区间长度 for(int i=1;i<=n;i++){//枚举起点 int j=i+len-1;//区间终点 if(j>n)break;

2022-04-13 21:13:38 281

原创 集合中的质数(容斥原理+状态压缩)

LINK题目思路:由于集合中均为素数,有:由概率加法公式(简单证明)得:即:除以奇数个素数时加;除以偶数个素数时减。代码:#include <bits/stdc++.h>using namespace std;#define ll long longconst int N=8;int a[30],n;ll m;int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n&gt

2022-04-05 17:47:25 450

原创 锁(状态压缩+思维)

LINK题目:样例示例1输入4 31 1 1 1输出6说明106号房共有4名居民,只有3人在场时才能打开门。这时共需6把锁。思路:找每一组临界组合(即:再加上剩余的任意一个居民重要度一定大于或等于k),每组临界组合所缺的钥匙必须不一样。即求临界组合的数目即所需锁的数目。原因:若存在两组不同的临界组合所缺的钥匙相同,那么这两个组合合并时重要度一定大于或等于k但是他们缺了一把钥匙无法开所有的锁,不符合题意。代码:#include <bits/stdc++.h>usi

2022-04-05 15:14:15 174

原创 指纹锁(set 自定义比较用法)

LINK、题目样例示例1输入4 3add 1add 10query 5query 4输出NoYes示例2输入4 3add 1query 4del 1query 4输出YesNo示例3输入6 3add 10query 10add 5query 5del 7 //系统将指纹10和指纹5全部删除query 8输出YesYesNo备注:对于100%的测试数据:1 ≤ k,m ≤ 1000000数据量较大,注意使用更快的输入输出方式。

2022-04-05 12:59:27 453

原创 栈和排序(思维)

LINK题目思路:先从后往前找到此时的最大值,存入数组b中然后从前往后遍历,当此时i位置的值为最大值时入栈,入栈后还需要比较此时辅助栈中的数值和下一个遍历到的位置的b[i+1]中的值的大小比较,若栈顶数值大于b[i+1]就入栈;若此时i位置的值不为最大值,就将此值存入辅助栈中。代码:#include <bits/stdc++.h>using namespace std;#define ll long longconst int N=1e6+10;stack<int

2022-04-04 20:04:55 370

原创 「土」巨石滚滚(有趣的一道贪心)

LINK思维转不过来题目:思路:一开始想错了一直卡着几个点。想法挺有意思的。一开始目光短浅在排序的时候:1.若回馈>=丧失,则丧失小的排在前面;2.若回馈<丧失,则(回馈-丧失)小的排在前。第一点没问题,但第二点有问题。首先举个例子反驳一下第二点:当m=10此时还剩两个障碍:3 0,9 2;按2所说此时应该先撞击3 0(0-3=-3),此后剩下7不足以撞9 2(2-9=-7);但如果先撞击回馈值大的,即9 2,此后剩下3刚好可以撞3 0,即可以全部撞击完成。所以2

2022-04-01 19:56:53 226

原创 P2564 [SCOI2009]生日礼物(尺取法/双指针)

LINK不得不说 双指针用法nb题目输入输出样例输入6 31 52 1 73 1 3 8输出3思路:建议看尺取法代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;//#define int long longconst int mod=1e9+7;const int N=1e6+10;int n,k,x,y,num,minn,maxx;int vis[N];struc

2022-03-30 01:31:49 186

原创 Serval and Rooted Tree(树形dp)

LINK题目:样例:样例解释:题意:现有一棵树(根节点为1),树上每个结点上有一个flag值(flag=0 :表示这个点的权值是所有子节点权值中的最小值;flag=1:表示这个点的权值是所有子节点权值中的最大值)。有k个叶子节点,可以给每一个叶子节点安排1——k中的值且每个值只能放置一次。问:根节点值的最大值是多少。思路:想复杂了,看了一下大神们的题解,只能说:nb哇!!!运用树形dp。dp[i]:i结点值最大时需要叶子的数量;在每个叶子节点上dp[叶子]=1(只要叶子自己

2022-03-20 00:16:02 995

原创 I. Power and Zero(二进制,思维)

LINK题目样例思路:将二进制存起来,从高位向低位变成一个不下降序列,此时最低位次数即所需次数(从高位到地位,相邻进位为2)代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;//#define int long longconst int N=1e5+10;const int nn=1e6+10;const ll mod=998244353;#define eps 1e-8int

2022-03-19 17:27:14 529

原创 摘桃子(思维)

LINK题目思路:先将每个人拥有的桃子数量减1,再将其求出前缀和(求的同时直接modk)先将每个人拥有的桃子数量减1,再将其求出前缀和(求的同时直接mod k)先将每个人拥有的桃子数量减1,再将其求出前缀和(求的同时直接modk)这样就可以将连续x个人的桃子数之和modk等于人数转换为求前缀和数组相同数字时的组合情况,(1.注意:此时的长度不能超过k,由题意可得,桃子和mod的值一定小于k这样就可以将连续x个人的桃子数之和mod k等于人数转换为求前缀和数组相同数字时的组合情况,(1.注意:此时的

2022-03-06 18:18:29 210 1

原创 树形dp(+换根dp+dp结合)

求数的重心(重心:指树中的一个结点,如果将此结点删除后剩余各个连通块中点数的最大值最小。那么此结点被称为树的重心)LINK题目:思路:遍历每一结点,在此结点中判断是此结点的最大子树比较大还是非此结点子树的节点数比较大下面用图来稍作解释:代码:#include<bits/stdc++.h>using namespace std;const int N=1e5+10;vector<int>g[N];int f[N];//以u为根的子树的结点总数(不包括根)

2022-02-28 20:42:05 154 3

原创 D. Infinite Set(dp+二进制)

LINK题目:样例&说明:大致翻译:给出nnn个不同数和ppp(集合SSS中所有元素均小于2p2^p2p),维护集合SSS,该集合里的元素xxx满足:1.x=ai1. x=a_i1.x=ai​2.x=2y+1,y∈S2.x=2y+1,y \in S2.x=2y+1,y∈S3.x=4y,y∈S3.x=4y,y \in S3.x=4y,y∈S问集合S中满足条件的数有多少。思路:由于1<=p<=2∗1051<=p<=2*10^51<=p<=2∗1

2022-02-23 16:35:48 767

原创 163小孩(数学)

写个数学排列组合的方法LINK题目大意:忽略花色,从扑克牌(排除大小王)中任意抽6张,有几种组合?思路:由生活常识得每个数字只有4张牌,所以抽取六张时可以的组合有以下几种:如果此时就直接得到以下式子就错了:C132+C133+C_{13}^{2}+C_{13}^{3}+C132​+C133​+C132+C133+C134+C_{13}^{2}+C_{13}^{3}+C_{13}^{4}+C132​+C133​+C134​+C133+C134+C135+C_{13}^{3}+C_{13}^

2022-02-11 21:07:08 447

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除