自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 牛客练习赛101

牛客练习赛101

2022-06-26 16:09:32 319 1

原创 HUSTPC2022

HUSTPC2022

2022-06-10 14:41:26 206

原创 AtCoder Beginner Contest 254

AtCoder Beginner Contest 254

2022-06-06 16:26:54 286

原创 CodeCraft-22 and Codeforces Round #795 (Div. 2)D,E

CodeCraft-22 and Codeforces Round #795 (Div. 2)

2022-06-04 11:33:17 150

原创 第十七届黑龙江省大学生程序设计竞赛

文章目录C.Tree DivisionD.Collision DetectorG.Chevonne's Necklace比赛链接C.Tree Division题意:有一颗n(1≤n≤105)n(1\leq n\leq10^5)n(1≤n≤105)个节点的树,树上每个位置都有一个值aia_iai​,将树上的节点分入A,BA,BA,B两个集合,要求以111为根节点的树,能否使集合AAA在树链上递增,集合BBB在树链上递减。思路:考虑如果在单个直线数组上进行这个问题怎么办。如果我们可以在每次将一个数

2022-05-18 23:40:47 1783 2

原创 POJ - 2396 Budget(上下界网络流)

Budget 题目链接题意:有n∗mn*mn∗m的数字矩阵,告诉你每行和每列的数字之和,接下来有ccc行约束条件,第ccc行会告诉你第iii行第jjj列的格子应该有怎样的约束(>,<,=)(>,<,=)(>,<,=),请输出任一种满足所有约束的矩阵或者输出不可能思路:经典的建图模型:将每行每列都抽象为111个点,源点与行相连,汇点与列相连,流量上下界均为suml/sumcsum_l/sum_csuml​/sumc​每行每列直接的连线流量代表这些位置的约束范围

2022-05-18 14:32:21 108

原创 2021 Xinjiang Provincial Collegiate Programming Contest(A,B)

文章目录B. cocktail with hearthstone写在最前面,单纯的想吐槽一下这场的题面读起来是真的绕B. cocktail with hearthstone题意:一个计数器(a,b)(a,b)(a,b)记录的是进行了a+ba+ba+b局游戏,胜了aaa场,负了bbb场,每次游戏开始会匹配两个胜负场次完全相同的玩家游戏,玩家数量2n+m(1≤m<n≤2×105)2^{n+m}(1≤m<n≤2×10^5)2n+m(1≤m<n≤2×105),当有一个玩家在赢了nnn场或输

2022-05-15 19:39:39 601

原创 Codeforces Round #789 (Div. 2) F

文章目录F. Tokitsukaze and PermutationsF. Tokitsukaze and Permutations题意:给你长度为n(n≤106)n(n\leq10^6)n(n≤106)的排列,可以进行k(k<n)k(k<n)k(k<n)次操作,每次操作从111遍历到nnn,如果ai>ai+1a_i>a_{i+1}ai​>ai+1​,则交换两个数字。给你数组v(vi<i)v(v_i<i)v(vi​<i),viv_ivi​表示a1

2022-05-12 23:45:00 200

原创 Codeforces Round #787 (Div. 3)F(糖果传递)

文章目录F.Sorting PancakesF.Sorting Pancakes题意:给你n(n≤250)n(n\leq 250)n(n≤250)个整数的序列a(∑ai≤250)a(\sum a_i\leq250)a(∑ai​≤250),你可以用111的花费将ai−1a_i-1ai​−1,使ai+1a_{i+1}ai+1​或ai−1 +1a_{i-1}\text{ }+1ai−1​ +1,问最小用多少的花费可将序列变为不上升序列思路:由于本题数据范围极小,于是想到费用流,但是由

2022-05-08 16:45:54 260

原创 Codeforces Round #786 (Div. 3)(E,G)

文章目录E. Breaking the WallG. Remove Directed EdgesE. Breaking the Wall题意:有nnn面连续的城墙,其都有自己的耐久aia_iai​,你的大炮可以攻击墙iii,使ai−2,ai−1−1,ai+1−1a_i-2,a_{i-1}-1,a_{i+1}-1ai​−2,ai−1​−1,ai+1​−1,请问最少攻击多少次能最少破坏两堵墙思路:一共三种情况:(1)破坏两面距离超过222的墙x,yx,yx,y,只要⌈x2⌉+⌈y2⌉\left\lc

2022-05-05 10:50:38 76

原创 Codeforces Round #785 (Div. 2)(D,F)

文章目录D. Lost Arithmetic ProgressionF. Anti-Theft Road PlanningD. Lost Arithmetic Progression题意:三个数组A,B,CA,B,CA,B,C为等差数列,其中C=A⋂BC=A \bigcap BC=A⋂B给你B,CB,CB,C的首项,差值,长度,问符合题意的AAA有多少种构成方式,或者判断是否无解或者无限解思路:显然dc=LCM(da,db)d_c=LCM(d_a,d_b)dc​=LCM(da​,db​)首先

2022-05-04 14:49:50 112

原创 Codeforces Global Round 20(F,H)

文章目录F1. Array ShufflingF1. Array Shuffling题意:给你长度为nnn的数组aaa,请你用aaa的排列构造出一个新的数组bbb,你可以任意交换数组bbb上的任意两个元素,要求用数组bbb通过交换,复原数组aaa所需要的次数最多,构造出这个bbb思路:一个结论:如果bib_ibi​可以移动到bjb_jbj​的位置,则可以将点i∼ji \sim ji∼j连一条边,连好边后可以得到cntcntcnt个环,最终的操作数为n−cntn-cntn−cnt那么,只要我们有最

2022-04-27 23:33:25 423

原创 The 15th Jilin Provincial Collegiate Programming Contest

文章目录F. CookingG. Matrix RepairF. Cooking题意:给定若干010101串,求它们的最长公共前后缀长度之和。思路:多模式串匹配,首先考虑ACACAC自动机如果我们不考虑最长的限制,只需要对所有的字符串从结尾开始跳failfailfail,跳到的点一定是一个公共前后缀。于是我们每跳到一个点会产生贡献si∗lenis_i*len_isi​∗leni​,其中sis_isi​是节点iii出现的次数,lenilen_ileni​是这个位置代表的子串长度,最终答案就是∑si

2022-04-27 21:50:25 481 2

原创 AtCoder Beginner Contest 249(E)

E - RLE题意:有一种字符串转换方式,例如“aaabbcccc”“aaabbcccc”“aaabbcccc”可以转换为“a3b2c4”“a3b2c4”“a3b2c4”求长度为nnn的字符串,有多少种不同的字符串可以使转换后的字符串长度小于nnn思路:动态规划令f[i][j]f[i][j]f[i][j]为长度为iii的字符串,转换后的长度为jjj,有多少种情况cal(x)cal(x)cal(x)表示连续xxx个相同的字母组成的字符串转换成新串后的长度最最简单的dpdpdp转移办法即f[

2022-04-25 20:27:47 389

原创 Educational Codeforces Round 127(D~E)

文章目录D. Insert a ProgressionE. PreorderD. Insert a Progression题意:给你长度为nnn的数组aaa以及一个数字xxx,要求你将1∼x1\sim x1∼x的所有xxx个数字随意插入数组aaa中,要求插入完毕后新获得的数组aaa的∑i=1n+x−1∣ai−ai+1∣\sum _{i=1} ^{n+x-1}|a_i-a{i+1}|∑i=1n+x−1​∣ai​−ai+1∣值尽可能的小,输出这个值思路:在nnn个数字中最大的数字为maxmaxmax,

2022-04-24 15:09:52 1643

原创 Codeforces Round #783 (Div. 2)(D~F)

文章目录D. Optimal PartitionE. Half Queen CoverF. Edge EliminationD. Optimal Partition题意:给你长度为nnn的数组aaa,将其划分为任意数量的连续子串,一个子串l∼rl \sim rl∼r的价值为sign(∑i=lrai)∗(r−l+1)sign(\sum_{i = l}^{r}a_i)*(r-l+1)sign(∑i=lr​ai​)∗(r−l+1)问可以划分出来的子串价值之和最大是多少思路:考虑dpdpdp,定义dp

2022-04-21 12:11:44 583 3

原创 Codeforces Round #782 (Div. 2)

文章目录A. Red Versus BlueB. Bit FlippingC. Line EmpireD. Reverse Sort SumE. AND-MEX WalkA. Red Versus Blue题意:红队和蓝队比赛,红队赢rrr局,蓝队赢bbb局(r>b)(r>b)(r>b),由于比赛过程势均力敌,请你构造出合适的字符串使红队的最长连胜最小思路:考虑在蓝队的bbb局共b+1b+1b+1个空位均值插入rrr即可#include<bits/stdc++.h>

2022-04-20 10:57:45 194

原创 2020ICPC昆明题解

最近VP了2021年的昆明区域赛,补几道题并总结一下教训文章目录前言C. CitiesM.Stone Games前言本次总共写出来四题,其中HHH题大水题一个,III题是计算几何二维平面中的板子题而且以前写过,所以在还算比较快的时间开出来了,JJJ题强行当了一把ddlddlddl战神,样例都没测就交了,LLL题连结论都没有好好推出来,就让sglysglysgly上机写了个树状数组,稀里糊涂的过了C. Cities对于一个长度为mmm且没有相同元素的区间,需要操作m−1m-1m−1次才可维护.

2022-04-15 10:00:17 1043 1

原创 强连通分量(tarjan)割点

有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(strongly connected components)。——百度百科可以将tarjan想象为有向图中,图中各点互相可以联通的一种高级查并集。通过tarjan可以将带有环的图缩减为无环图,从而简化题目的判断

2021-09-25 10:00:13 91 1

原创 基础 莫队

HH的项链n个数字,对其进行q次询问,每次一个l和r,输出l到r区间内不同元素的个数莫队解法:考虑使用双指针遍历这n个数字,通过移动指针来删减区间内元素的数目,从而不断更新答案。那么对于多次的查询,莫队的关键就在于使用排序,使排序过后的查询能够移动指针最少次数,达到想要的效果,这样后一次查询就可以建立在上一次移动的基础上,减少了运算次数排序方法:对于右指针,对其进行数字下标的单调排列。对于左指针,对其进行分块处理,按照分块的序号进行排序,这样就缩减了两条指针的移动距离。#include<b

2021-09-18 21:33:56 91

原创 双端队列BFS(BFS+迪杰特斯拉) 双向广搜

电路维修题意:如图所示的图像为一块电路板每个格子中 的电路 有 ‘’ 和 ‘/’ 两种情况要求从左上电极连接到右下电极可对 所有格子里的电路进行操作,求最少进行多少次操作,可以使电路联通图示答案为1操作为解法:想象该模型为 从左上角到右下角的最短路模型,若对角线电路联通,则这两点的距离为0,否则,需要操作一次电路使其改变,视作两点距离为1考虑使用迪杰斯特拉算法解决该最短路问题那么在迪杰斯特拉 最短路的松弛过程中,如何确保每次都能拿出 图中与左上点距离最短的点 进行松弛操作呢?于是考

2021-08-24 22:10:13 397

原创 Manacher 马拉车板子

Manacher算法是一种通过O(n)的时间复杂的算出字符串最长回文串的一种算法因为回文串可能是奇数也可能是偶数,不好判断,为了保证字符串回文串总是一个奇数,先对字符串进行预处理,每隔一个字符,插入一个特殊的字符,保证其总是一个奇数用p[i]表示字符串中以i为中心的最长回文串半径对于奇数回文串偶数回文串同理可以发现max(p[i]-1)就是我们要的最大回文串长度那么如何计算p[i]呢?令mx为上一次操作的最长回文子串的最右端的下一位,mid为mx对应回文串的中心点。如果i大于等于mx,先

2021-07-15 15:06:13 169

原创 ZPP试图掌握DP

自己写的笔记,不建议其他人参考学习不自量力警告1.1数字三角形模型说白了,就是数塔,简单粗暴在此基础上,我们很容易就可以 想出来它的进阶版本[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XbLAsBoy-1625646456263)(C:\Users\86176\AppData\Roaming\Typora\typora-user-images\image-20210706203744477.png)]同样简单无脑双重for循环再配上,简单的动态转移方程f[i

2021-07-07 16:28:30 200 5

原创 博弈 SG打表

nim游戏一共有N堆石子,编号1…n,第i堆中有个a[i]个石子。每一次操作Alice和Bob可以从任意一堆石子中取出任意数量的石子,至少取一颗,至多取出这一堆剩下的所有石子。两个人轮流行动,取走最后一个的人胜利。Alice为先手。对于该博弈,我们知道若a[1] xor a[2] xor a[3]…xor a[n]==0先手必败反之 先手必胜SG函数(打表)sg[n]代表对于一堆只有n个的石子,两人轮流拿,若sg[n]==0,则先手必败,反之,必胜首先易知 sg[0]=0,没有石子,先

2021-06-19 19:52:46 491

原创 使用prim算法随机构造迷宫

使用prim算法随机构造迷宫对于一个n*m的地图,我们可以先对地图进行初始化,如图。地图中黑色区域代表墙壁,白色代表通路,橙色代表可以挖开的墙壁所以,我们可以对已经连接的通路,随机凿开四周橙色的墙壁,最终的通路便是我们想要的迷宫。首先,我们选择一个白色单元格作为起点(点B)然后把他的邻墙A放入列表。然后在所有的列表中,随机挑选一堵墙壁,将其打通(变成通路),并得到新的起点B。再反复将B的邻墙加入列表,随机打破,反复进行。当一堵墙的两侧,均变成连起来的通路时。为了避免出现回路,我们将该墙从

2021-06-01 21:21:29 803

原创 哈希hash

好久不见。出于某方面的原因,以及自己近两个月的无所事事实力下降,让我意识到了写博客来监督自己的学习成果是十分重要的。也希望各位哥哥们发现我经常摸鱼的时候直接骂我。以下内容可能有许多错误,仅供个人学习参考什么是哈希?可以理解成对一串字符串的处理,将一串字符串处理为一个数字,即该数字就可以代表该字符串,类似于密码的加密过程。那么,我们便可以通过一个字符串得到一个哈希值(反过来不行),相同的字符串一定拥有相同的哈希值。该如何得到哈希值呢?将字符串转化成一个p进制的数字,然后对其模q。为了减少哈希值

2021-05-27 21:05:52 198

原创 最短路111

Floyd算法三重for循环配合数组暴力求解很容易理解,但是也很容易tle,核心代码三重for循环顺序没有要求最好别用?? memset(mp,0x3f,sizeof(mp)); for(int i=1;i<=n;i++) mp[i][i]=0; for(int i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&c); mp[a][b]=mp[b][a]=c; } for(int j=1;j<=n

2021-03-08 15:29:22 125 3

原创 背包问题思路以及滚动数组

01背包for(int i=1;i<=n;i++){ for(int j=0;j<=c;j++) { if(j<power[i]) dp[i][j]=dp[i-1][j]; else dp[i][j]=max(dp[i-1][j],dp[i-1][j-power[i]]+val[i]); }}dp[i][j]表示对于第i件物品,放入大小为j的背包中可以存在的最大价值滚动数组写法for(int j=c;j>=power[i];j--)dp[j]=m

2021-03-04 09:46:00 218 1

原创 最大最小 二分实锤

经常能遇见一些题目,题面都是求最大值最小的情况,对于这种题目,我们直接在答案可能的范围内二分找答案并对其进行验证建立火车站题目描述新冠疫情,导致了各个城市之间物资输送的障碍。假设有N个城市在一条直线上,为了物资能顺利抵达各个城市,可以在路线上建立最多个数为K个暂时停靠站,由于火车在两个站台(城市也算站台)之间的距离越近,需要的总花费越少,因此我们需要让火车相邻两个站台之间的最大距离最小,求出距离L,2 ≤N ≤100000, 0 ≤K ≤100000,所有城市坐标小于等于10^12,且不存在负值。提醒

2021-01-31 22:15:55 235 1

原创 查并集

int find(int x){ while(fa[x]!=x) x=fa[x]; return fa[x];}void lianjie(int x,int y){ int a=find(x); int b=find(y); if(a!=b) { fa[a]=b; }}

2021-01-17 21:28:50 142 1

原创 矩阵

typedef long long ll;ll mod = 1e9 + 7;const int maxn = 10;struct Matrix{ long long a[maxn][maxn]; //矩阵 int n, m; //n为行数 m为列数 Matrix(int n, int m) //构造函数 { memset(a, 0, sizeof(a)); //清空矩阵 this->n = n; //赋值行数 this->m = m; //赋值列

2021-01-13 20:13:44 70 1

原创 西南民族大学第十二届程序设计竞赛(同步赛)补题题解

E 数菌落分析本题需要用到一个思想,叫做查并集思想。标程#include<bits/stdc++.h>using namespace std;struct jl{ int x,y;}q[1005];int main(){ int n,d,a[1005]; scanf("%d%d",&n,&d); for(int i=0;i<n;i++) { a[i]=i; scanf("%d%d",&q[i].x,&q[i].y

2021-01-03 10:12:56 254 1

原创 简单搜索题型

棋盘问题在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n当为-1 -1时表示输入结束。随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, .

2020-12-22 20:16:48 394

原创 动态规划类题型

法兰要塞(zzulioj周赛7)题目描述“分享狼血,与子同胞”“漫步深渊,心怀正义”“侍奉光明,斩杀黑暗”“因剑而生,因剑而死”“深渊无尽,我等将不娶妻,不生子,只求一世荣耀”“光阴有时,我等必守此誓,献此生,但愿诸界太平”无火的余烬,你追随者古老的誓言来到了法兰要塞,为了通过烽火试炼,你必须收集足够多的灵魂。已知要塞里有n个怪物,不同的怪物有着不同的血量a。每次,你可以选择消灭一只怪物,同时所有血量为a+1和a-1的怪物也会死去。同时你可以获得a个灵魂。输入第一行输入一个整数n(1&

2020-12-21 17:15:36 258

原创 NY12.20程序设计

1.hello world有手就行2.a+b记得开long long#include<stdio.h>int main(){ long long a,b; scanf("%lld%lld",&a,&b); printf("%lld",a+b); } 3.判断奇偶#include<stdio.h>#include<string.h>int main(){ char a[100000]; scanf("%s",a); in

2020-12-21 10:40:10 1039 1

原创 考前抱佛脚

会场安排#include<bits/stdc++.h>using namespace std;struct hc{ int b,e;}a[10005];bool cmp(hc a,hc b){ return a.e<b.e; if(a.e==b.e ) { return a.b<b.b; }}int main(){ int m; scanf("%d",&m); while(m--) { int n,i; scanf("%d",

2020-12-21 10:19:42 73

原创 深度优先搜索(dfs)

深度优先搜索(Depth-First-Search)是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。对于上述图像中的数据,我们可以对其进行dfs方式的全面搜索,首先以a为顶点,从顶点开始,将一个支路走完再走下一条路,搜索过程为a-b-e、a

2020-12-21 10:19:26 380

原创 nyoj新生周赛(5)快乐的串串

卡了很久都没有思路的一道题(还是太菜了)感谢cry和dzw学长的指点。题目描述当小羽拿着你的代码过五关斩六将之后, 心情非常激动.于是乎那位机房的dalao就给他说,这有一个01串,当这个字串0和1的数量相等的时候这个子串是稳定的.并且价值会随着长度增加而增加,现在小羽想知道这个字符串其中的子串在稳定的情况下最长的长度是多少.输入格式一行一个01字符串str输出格式最长稳定字串的长度样例样例输入00001111样例输出8数据范围与提示01串长度<=1e6周赛的时候我就

2020-12-18 22:36:28 130 1

原创 zzulioj新生周赛(6) 2733: 键盘霸主hrs

题目描述众所周知,hrs学长实力强悍,就没有我hrs不会的题。打比赛的时候经常占着键盘不下来。队友第一次来借键盘:hrs:“等会儿,这道题我快A了”。几分钟过后,队友第二次来借键盘:hrs:“慌啥,刚刚题意弄错了,我改下”。十分钟过后,队友又来催了,hrs:“你在教我做事”。。。。。。几分钟后,hrs学长极不情愿地离开他心爱的键盘。队友成功地摸到了键盘,看着手下熟悉而又陌生的键盘,队友一时间竟不知道该做些什么。就在这时,hrs的声音响起。“给你10分钟写这题,写不完就换我来”,hrs学长太强了

2020-12-09 14:33:22 255

原创 快速幂算法

当我们在求a^b,即a的b次方时,我们轻易的就会想到使用for循环将a个连续相乘求到我们想要的结果long long normalPower(long long base,long long power){ long long result=1; for(int i=1;i<=power;i++){ result=result*base; } return result;}对于一些题目求a^b的最后三位表示的数字这题其实好办,只要对1000

2020-11-27 13:49:48 202

空空如也

空空如也

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

TA关注的人

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