自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2020CCPC 长春站

A - Krypton()B - Meaningless Sequence题意:思路:AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxx=1e5+10;const ll mod=1e9+7;ll qsm(ll a,ll b){ ll ans=1; while(b) { if(b&1) ..

2021-11-23 21:35:43 373

原创 2020CCPC- 网络选拔赛

目录F - ReportsB - Express Mail TakingE - CCPC Training ClassG - 3x3 ConvolutionF - Reports题意:检查报告是否正确,当且仅当不存在两个连续且相同的报告时,一个报告序列才是正确的。思路:签到题AC代码:#include<bits/stdc++.h>using namespace std;int main(){ int t,n,x; cin>>

2021-11-18 22:59:45 475

原创 2018CCPC吉林站(部分题解)

目录HDU 6559 The Tower(解析几何)HDU 6560 F.The Hermit(思维:数学不等式判结论)HDU 6557 Justice(小根堆+并查集)HDU 6559 The Tower(解析几何)题意:给出一个圆锥,底面圆心在原点(0,0,0),给出圆锥外一点(x0,y0,z0)(保证为圆锥外一点),以及该点在各个方向上的移动速度(vx,vy,vz)。求该点撞击在圆锥面上时的时间t。思路:假设撞击到圆锥上的点是A(x,y,z)。圆锥得横截面都是.

2021-11-15 00:29:29 376

原创 2019年CCPC-江西省赛部分题解

目录B - WaveC - StringD - TrafficF - BudgetG - WorkerH - ClassB - Wave题意:给一个n个整数的序列,整数范围为1~c,求一个子序列满足偶数位上数字相同,奇数位上数字相同,且奇偶位上的数字不同。输出满足要求的最长子序列的长度。思路:简单 DP,设是以 结尾, 为结尾前一个数字的最长合法 wave,则有状态转移方程:。AC代码:#include<bits/stdc++.h&..

2021-11-10 00:18:24 252

原创 Codeforces Round #753 (Div. 3)

A. Linear Keyboard题意:一个键盘中,给你26个小写字母键的位置和一个字符串,求输出这个字符串我需要移动的距离。例如,26个位置依次是‘a’,‘b’,‘c’......,那么字符串的位置依次是,,,,,。思路:相邻字符位置差的绝对值累和。AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxx=2e5+10;map<char,int&.

2021-11-04 17:41:02 127

原创 Codeforces Round #752(Div.2)

目录A. EraB. XOR Specia-LIS-tC. Di-visible ConfusionD - Moderate Modular ModeA. Era题意:给定一个n,和一个长度为n的数组,问最少添加几个数字使得数组的每一个数字都有思路:当序列中只有一个不满足条件的元素,那么需要操作次;当有多对元素不满足情况,我们此时应当选取,在最靠近序列起点的不满足条件的元素前面插入元素即可。AC代码:#include<bits/stdc++.h>usi

2021-11-02 22:06:56 103

原创 Codeforces Round #751(Div.2)

A. Two Subsequences题意:给一个字符串,将其分为a,b两个字符串,并且使a的字典序最小。思路:找到字符串中最小的字符最为字符串a,其余字符都是字符串b。AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxx=1e5+10;int main(){ int t; cin>>t; string s; w

2021-11-01 23:04:43 123

原创 Codeforces Round #748(Div.3)

A. Elections题意:有3位被选举人参加选举,第一位有票,第二位有票,第三位有票。问分别给三位被选举人添加多少票使得他可以获胜。思路:每一位被选举人的票数大于另外两位的最大值即可获得胜利。AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxx=2e5+10;int main(){ int t; cin>>t; w.

2021-10-26 20:15:57 273

原创 Codeforces Round #574(Div.2)

A - Drinks Choosing(贪心)题意:有n个学生,k种饮料,每个学生需要一种饮料,有n/2向上取整组饮料,每组饮料有两个同种饮料,求得到满足的学生的最多个数。思路:种饮料需要几个,可以取几组两个饮料都被喝掉的。是偶数时可以被处理完,是奇数的时候,选择这种饮料的人会剩1个,如果总组数减去用掉还大于0,就可以用来来满足剩下的。AC代码:#include<bits/stdc++.h>using namespace std;int a[1005];int b[100

2021-10-14 23:31:09 86

原创 Codeforces Round #747(Div.2)

A - Consecutive Sum Riddle题意:给定一个整数 ,求一个区间满足:思路:AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ll t,n; cin>>t; while(t--) { cin>>n; //l*(r-l)+(r-l)*(r-l-1)

2021-10-12 22:48:53 324

原创 Codeforces Round #570(Div.3)

A. Nearest Interesting Number题意:找到第一个大于a并且它的每一位累和之后可以整除4。思路:模拟AC代码:略B. Equalize Prices题意:给你一个数组a,长度为n,要你求一个数,这个数满足他和数组中所有元素的差的绝对值小于等于k,并且是满足这个条件中最大的那一个。思路:将数组排序,如果K特别大,大于a[n],则能达到的最大值是a[1]+k。如果a[n]-k大于a[1]+k,则不能实现。遍历下降的高度,找满足的最大值。..

2021-10-10 23:08:06 69

原创 Codeforces Round #572(Div.2)

A - Keanu Reeves题意:一个01字符串S,把它分成K段,使得每段的0的数量不等于1的数量,让K尽可能的小。输出分成的段数和分完后的K段。思路:如果0和1的数量不等,分成一段;相等,分成两段。和。AC代码:#include<bits/stdc++.h>using namespace std;int main(){ int n; string s; cin>>n; cin>>s; int c

2021-10-09 22:05:04 66

原创 Codeforces Round #746(Div.2)

目录A. Gamer HemoseB. Hemose ShoppingC. Bakry and PartitioningA. Gamer Hemose题意:Agent有种武器,第种武器的伤害值为。他将面对一个生命值为的敌人。Agent将进行一次或多次攻击,直至敌人死亡。(敌人的生命值小于等于0就死亡。)但是,Agent不能连续两次选择相同的武器。问Agent杀死敌人至少需要用多少次武器。思路:因为连续两次选同一个武器,所以我们选择最大的和次大的来回选。AC代码:#...

2021-10-05 22:48:16 198 1

原创 Codeforces Round #745(Div.2)

A.CQXYM Count Permutations题意:1~2n的数字(不重复)序列的排列组合一共会有 ( 2 n ) ! 种不同的结果。问在这些结果中,正序下标的数量不少于n的有多少个?结果对109+7取模。正序下标:如果有下标 i 使得a[i]<a[i+1],则称 i 为正序下标。思路:2n个数全排列一共种情况,因为是全排列,具有对称性!所以满足条件的排列情况恰好是一半,也就是。把2约掉====AC代码:#include <bits/stdc++.h&g.

2021-10-04 17:07:32 401

原创 Codeforces Round #744(Div.3)(A~E2)

目录A - Casimir’s String Solitaire(思维+水题)B - Shifting Sort (暴力)C - Ticks (暴力+思维)D - Productive Meeting(贪心+思维+优先队列)E1. Permutation Minimization by Deque(双端队列+水题)E2. Array Optimization by Deque(贪心+离散化+树状数组)A - Casimir’s String Solitaire(思维+水题)

2021-10-03 23:59:05 139

原创 2021.9.12周赛(贪心+优先队列+二分答案)

目录Array Splitting(差分+贪心)Selfish Grazing(贪心)导弹拦截(贪心)操作系统(优先队列+贪心)Brownie Slicing(二分答案+矩阵前缀和)Array Splitting(差分+贪心)题意:给你a数组,有n个数,已经按由小到大的顺序排列。将数组分成k段,使最小,输出该值。思路: 1 2 3 4 5 6a[i]: 4 8 15 16 23 42 //原数组c[i]: 4 7 1 7 19

2021-09-15 00:44:34 351 1

原创 CF#742(Div2---B)

B.MEXor Mixup题意:给你两个整数a,b,构造一个长度最小的数组,该数组满足的要求是:1.MEX(不属于数组中最小的正整数)等于a2.数组中所有元素异或和等于b输出构造数组的最小长度。思路:1.a是不属于数组中最小的正整数,所以数组至少是先求~的异或和。方法一:预处理异或和,否则会超时方法二:每两个连续数字就出现一个1,所以每四个连续的数字就会出现一个0。 if(a%4==0) ans=0; else if(a%4==1) ans=a-1; e

2021-09-06 22:50:50 115 1

原创 差分(暑假训练3)

HDU1121(拉格朗日插值法)题意:给定你一个序列,要求算出这个序列的后C个数字思路:当满足数据全都是一个常数时,就可以往回进行一个序列的累加推导,就可以求出我们想到得出的序列后C位数字了AC代码:#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;typedef long long ll;.

2021-08-31 21:18:33 148

原创 CF1185C2贪心(暑期训练3)

Exam in BerSU (hard version)https://vjudge.net/contest/453034#problem/E题意:有n个人要考试,每个人通过考试需要花费a[i]分钟,如果某个不考试(很明显会挂科)则不需要时间,如果排在后面的人,前面所有人加上他自己的考试总时间超过m则直接挂科。问第i个人考试的时候,为了确保他能够通过考试,前面至少要有多少人挂科(腾出时间给他)。思路:先算出到目前为止所有人考试所需时间,如果比m小则不需要有人挂科,否则从时间需要大的往小遍

2021-08-31 20:53:14 58

原创 尺取(暑期训练3)

例1POJ2100题意:给出一个数,求一系列连续的数字使得它们的平方和等于这个数思路:简单尺取,先固定l,移动r,找到sum==n的区间,将l,r存入数组(方便输出),在移动l,向后移动,此时sum减去l*l。AC代码:#include<iostream>#include<cstring>#include<cmath>#include<cstdio>#include<iomanip>#define PI acos(-1.

2021-08-31 20:45:48 59

原创 矩阵前缀和(暑期训练3)

UVA108题意:在给出的矩阵当中,找出一个子矩形矩阵可以使得里面加起来的值是所有子矩阵中最大的。思路:枚举第i行到第j行的和,再从i到j行的各列和依次累加,存入数组b,这样就转为一维的求数组b的最大连续子序列和的问题了。AC代码:#include<iostream>#include<cstring>#include<cmath>#include<cstdio>#include<limits.h>#include

2021-08-31 20:36:46 90

原创 STL----map例题

HDU4585题意:给n个僧人,每个僧侣有id和战斗力,僧侣的id都是按升序输入的。输出每个僧侣来的时候,他和哪个僧侣战斗。战斗的原则:在已经来到的僧侣中选一个战斗力跟他相近的僧侣进行战斗,我们要关注的就这个老僧侣的id,如果出现两个与他战斗力差值相同的情况下,我们输出id小的那个。思路:在输入的时候进行处理,新数据要进去数组的话,就需要和老数据进行对比,我们先把新数据在已有的数据中进行遍历查找,找到某个位置x满足x-1的战斗力<=x的战斗力<=x+1的战斗力 cin&.

2021-08-31 19:49:15 420

原创 优先队列--堆排序思想

https://vjudge.net/contest/450928#problem/F#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>using namespace std;typedef long long ll;const int maxx=3e4+10;int a[maxx];int main().

2021-08-31 19:20:09 56

原创 DFS/BFS----迷宫专题(暑期训练2)

目录DFS求油田连通块数----Oil Deposits双向BFS----NightmareⅡ(HDU3085)两遍BFS----Fire!(UVA-11624)Find a way(HDU2612)救公主--A计划(HDU2102)DFS----棋盘问题DFS求油田连通块数----Oil Deposits双向BFS----NightmareⅡ(HDU3085)题意:男孩和女孩两人被困在一个大迷宫里,迷宫里有两个鬼魂。男孩想知道他是否能在鬼魂找到女孩之前找到她。两人可

2021-08-31 15:34:23 149

转载 DFS---奇偶剪枝

奇偶剪枝技巧原链接什么是剪枝?把不可行的一些情况剪掉,例如走迷宫时运用回溯法,遇到死胡同时回溯,造成程序运行时间长。剪枝的概念,其实就跟走迷宫避开死胡同差不多。若我们把搜索的过程看成是对一棵树的遍历,那么剪枝顾名思义,就是将树中的一些“死胡同”,不能到达我们需要的解的枝条“剪”掉,以减少搜索的时间。什么是奇偶剪枝?把矩阵看成如下形式:0 1 0 1 0 11 0 1 0 1 00 1 0 1 0 11 0 1 0 1 00 1 0 1 0 1从为 0 的格子走一步,必然走...

2021-08-31 14:13:34 48

原创 DFS/BFS专题(暑期训练2)

非常可乐(BFS)思路1.剪枝,如果S的体积是偶数才可平分 if(s%2!=0) printf("NO\n");2.bfs六个方向瓶子倒给杯子A瓶子倒给杯子B杯子A倒给瓶子杯子B倒给瓶子杯子A倒给杯子B杯子B倒给杯子A杯子A(B)倒给瓶子,因为S==N+M,倒完之后肯定不会溢出瓶子倒给杯子A(B)和杯子A(B)倒给杯子B(A)需要判断满不满AC代码#include<bits/stdc++.h>using namespace std...

2021-08-31 13:52:56 145

原创 线段树模板

题目链接HDU1166AC代码 #include<iostream>#include<cstdio>#include<cstring>#include<map>#include<algorithm>using namespace std;const int MAX=5e4+10;int a[MAX];struct Tree{ int l,r,value;}tree[4*MAX];void build(i.

2021-08-30 23:51:04 25

原创 二分专题(暑期训练4)

题意(HDU5432):给你n个四棱锥,一起放在一个平面上,然后在高度为h的位置,用一个平行平面去切所有的四棱锥,得到上下两部分,使上下两部分体积相等,求h的大小(取整数部分输出)思路:简单二分截面高度hi,check函数返回以hi切割,下半部分的体积。AC代码:#include<iostream>#include<cstdio>#include<cstring>#include<limits.h>#include<algo

2021-08-30 23:43:58 52

原创 二分---最大(小)化最小(大)值

目录Monthly Expense(POJ3273)最小化最大值Aggressive cows(POJ2456)最大化最小值题意(POJ3273)给出农夫在n天中每天的花费,要求把这n天分作m组,每组的天数必然是连续的,要求分得各组的花费之和应该尽可能地小,最后输出各组花费之和中的最大值.思路1.二分的内容,花费最大一组的值2.二分的范围,初始应该大于等于数组的最大值,初始等于所有花费和。3.check函数,假设花费最大一组的值等于x,则可以分为几组,返回组数4.如果.

2021-08-30 23:10:11 211

原创 并查集模板--How Many Tables

题意:你邀请了N个朋友来聚会 ,在他们之中有M个关系:x y :代表x和y是好朋友。如果x,y是朋友,y,z是朋友,则认为xyz都是朋友(关系的传递)你希望朋友应该坐在一起,请问最少要准备多少张桌子?AC代码:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N=1005;int parent[N];int getroot(i..

2021-08-30 22:20:01 48

原创 Cow Acrobats(暑期训练4--贪心)

POJ3045题意给n只奶牛,每只奶牛都有两个属性, 风险值(w[i])和抗压值(s[i])。现在要把这些牛垒在一起, 每个牛都有一个危险值:他上面的牛的风险值之和减去它的抗压值。问最大危险值的最小值?思路看似是最大化最小值问题,但找不到二分啥合适。对于某个牛i,假设它+它上面的牛的总重量为sum,那么它的风险就为(sum-a[i].w)-a[i].s,即sum-(a[i].w+a[i].s),从这个式子可以看出,a[i].w+a[i].s越大越好,所以我们将w+s的大小排序,大的

2021-08-30 17:22:43 81

原创 LIS模板---(O(n^2)和O(nlogn))

https://vjudge.net/contest/454120#problem/FDP法O(n^2)#include<iostream>#include<cstdio>#include<cstring>#include<limits.h>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int .

2021-08-18 19:46:20 80

原创 二分---最大化平均值

目录核心例1---K Best例2---Dropping tests核心最大化平均值类题目,一般利用的累和是否大于0来判断,然后二分。(不能用贪心分别算,再排序)https://vjudge.net/contest/454120#problem/C例1---K Best题意:Demy有n个珠宝。每一件珠宝都有一个价值()和重量()。她决定变卖一些,留下见珠宝,留下哪些珠宝可以使最大,定义为选出的K件珠宝总和和总和的比值。(即)思路:(1)小...

2021-08-18 19:36:05 141

原创 KMP 模板

KMP的理解https://segmentfault.com/a/1190000008575379(包含next数组求解,匹配过程,代码模板及其优化)A - Number Sequence(KMP模板题)题意:t组输入,n为母串的长度,m为子串的长度,求母串中首次出现子串的位置。这里的串换成了数组。(next数组在起名的时候不要用next,codeblocks编译过,vj会ce。)#include<iostream>#include<stdio.h>#include

2021-08-18 18:17:07 32

原创 Alignment ----基础DP(LIS变形)

题意:在军队中,n个士兵按编号站成一排。现在给你他们的身高,问最少让几个人出列,可以让新形成的队列中的每个士兵向左或向右看看到队伍的末端。从左到右,由低到高排,每个士兵都可以向左看看到队伍的尽头 (从0~n-1找原序列的最长上升子序列)从左到右,由高到低排,每个士兵都可以向右看看到队伍的尽头 (倒着找原序列的最长上升子序列)拐点设为i的话,i前面的士兵可以向左看,i后面的士兵...

2021-08-18 15:15:50 79

原创 #736Div2---C.Web of Lies

目录题意样例输入样例输出思路AC代码https://codeforces.com/contest/1549/problem/C题意:有个贵族,编号为1~,编号i的贵族具有的能量值。存在个朋友关系,朋友关系是相互的。(如果贵族和贵族存在朋友关系的话,a是b的朋友,b也是a的朋友。)一个贵族被定义为脆弱的,如果满足两个条件:1.这个贵族至少有一个朋友2.这个贵族的所有朋友的能量值都比他高你需要处理以下三种类型的查询:1.Add a frie...

2021-08-17 22:33:33 109

原创 STL(暑期训练1)

栈stackstack<int>ss;a=ss.top();//返回栈顶的元素ss.pop();//从栈中取出并删除元素ss.size();//返回栈中元素个数ss.push(e);//向栈中添加元素ess.empty()://栈为空时返回true队列queuequeue<int>q;q.push(x);a=q.front();q.pop();q.empty();优先队列priority_queue<int,vector<in

2021-08-17 01:53:52 118

原创 DFS--IDA*

迭代加深搜索迭代加深搜索(Iterative Deepening DFS,IDDFS)是一种结合了DFS和BFS思想的搜索方法。当搜索树很深且很宽的时候,用DFS会陷入递归无法返回,用BFS队列空间会爆炸,那么可以试试IDDFS,简单来说,就是每次限制搜索深度的DFS。比如DFS搜索k层,若没有找到可行解则立即返回,再DFS搜索k+1层,直到找到可行解为止,在层数上采用BFS思想来逐步扩大DFS的搜索深度。IDA*算法核心:寻找可达的最大深度deep,若没有到达目标状态则加深最大深度。估价函数

2021-08-17 00:06:02 178

空空如也

空空如也

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

TA关注的人

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