解题报告
文章平均质量分 64
MoYingo
菜狗
展开
-
AtCoder Beginner Contest 234 G - Divide a Sequence
AtCoder Beginner Contest 234 G - Divide a Sequence题目给定一个长度为N的序列,任意的将其划分为任意长度大于零的若干个子串,对于任意一个子串SiS_iSi有一个权值max(Si)−min(Si)max(S_i) - min(S_i)max(Si)−min(Si),将其设为ViV_iVi,对于整个序列,其权值W=V1∗V2∗V3…∗VkW = V_1 * V_2 * V_3 \ldots * V_kW=V1∗V2∗V3…∗Vk,现求对于长度原创 2022-01-18 23:21:41 · 493 阅读 · 1 评论 -
Codeforces Round #752 (Div. 2) (A to D)
Codeforces Round #752 (Div. 2)A题目:向一个序列中任意位置插入元素,求把一个序列变成满足对任意的元素有,ai<=ia_i<=iai<=i,的最小操作次数。思路显然往头部插入,对答案有最大的贡献,只要对所有元素操作次数取max即可###AC代码#include <bits/stdc++.h>#define yes puts("yes");#define inf 0x3f3f3f3f#define ll long long原创 2021-10-31 16:56:47 · 80 阅读 · 0 评论 -
A*练习..
A*练习#include <bits/stdc++.h>#define D 1000#define N 10#define INF 0x3f3f3f3f#define D2 D*sqrt(2)using namespace std;void show();struct Node{// 节点结构体 int x,y; double f,h,g;// 启发函数值。 void setH(Node e){ int dx = abs(x - e.x原创 2021-10-26 12:29:57 · 82 阅读 · 0 评论 -
计数类DP
计数类DP——整数划分整数划分大体上可以分为3类考虑顺序的拆分方案(即1,1,2;和2,1,1 是两种不同的方案)这种问题一般转化为完全背包即可解决。不考虑顺序的拆分方案,可以划分出空集(也就是可以有对拆分完全没贡献的东西存在(0))不考虑顺序的拆分方案,要求划分出的集合不为空集(不可以拆出0)主要讨论2,3类DP问题空集存在的情况对于n的m划分,可以定义dp[m][n] 为所求答案, 考虑任意的拆分序列ai{a_i}ai,可以分为两类1. 所有aia_iai都大于0,我们可原创 2021-10-22 17:37:30 · 311 阅读 · 0 评论 -
2019CCPC 网络预选赛——Windows Of CCPC
Windows Of CCPCAC代码水题一道 ,可以研究研究怎么把代码更简洁一些。#include <bits/stdc++.h>#define yes puts("yes");#define inf 0x3f3f3f3f#define ll long long#define linf 0x3f3f3f3f3f3f3f3f#define debug(x) cout<<"> "<< x<<endl;#define ull unsign原创 2021-10-19 20:55:10 · 160 阅读 · 0 评论 -
Codeforces Round #749 (Div. 1 + Div. 2, based on Technocup 2022 Elimination Round 1)
Codeforces Round #749 (Div. 1 + Div. 2, based on Technocup 2022 Elimination Round 1)A题目互不相同的n个数字,求它们的最大的一个子集合,使它们的和是一个合数 , 保证n>=3思路1. 除2外的质数都是一个奇数2. 一个奇数减去一个比它小的奇数,一定可以得到一个偶数n>=3 , 所以答案只有n或者n-1两种可能, 因为 质数除2都是奇数,又因为给的所有数字都是不同的且它们的总数都大于二,所以加出原创 2021-10-18 10:36:54 · 258 阅读 · 0 评论 -
Dropping tests (01分数规划)
Dropping tests题目给一个二元组,可以扔掉这个二元组的k个元素,求取扔掉后的二元组的比值最大值。思路新学的01分数规划 写写题解理理思路。想学习的参考这篇博客即可首先把这个分式化成便于数学语言表达的形式,所以引入一个辅助符号函数sgnsgnsgn,取值只有0,1.引入辅助参数r,显然rmaxr_maxrmax为答案,那就是说找到rrr的值使得这个方程成立,这个过程可以二分。以上述的核心思想,对等式进行变形,由于要删去k个元素,在引入sgnsgnsgn函数后,可以得到最后要原创 2021-10-07 18:08:26 · 196 阅读 · 0 评论 -
AtCoder Beginner Contest 221(A~E)
AtCoder Beginner Contest 221A略BAC代码#include <bits/stdc++.h>#define yes puts("yes");#define inf 0x3f3f3f3f#define linf 0x3f3f3f3f3f3f3f3f#define ll long long#define ull unsigned long long#define debug(x) cout<<"> "<< x<<原创 2021-10-03 19:46:59 · 193 阅读 · 0 评论 -
Codeforces Round #744 (Div. 3)(A~F)
Codeforces Round #744 (Div. 3)AAC代码#include <bits/stdc++.h>#define yes puts("yes");#define inf 0x3f3f3f3f#define ll long long#define linf 0x3f3f3f3f3f3f3f3f#define debug(x) cout<<"> "<< x<<endl;#define ull unsigned long原创 2021-10-03 10:47:46 · 75 阅读 · 0 评论 -
Codeforces Round #744 (Div. 3)
Codeforces Round #744 (Div. 3)AAC代码#include <bits/stdc++.h>#define yes puts("yes");#define inf 0x3f3f3f3f#define ll long long#define linf 0x3f3f3f3f3f3f3f3f#define debug(x) cout<<"> "<< x<<endl;#define ull unsigned long原创 2021-10-01 13:28:09 · 184 阅读 · 0 评论 -
AtCoder Beginner Contest 220(A~F)
AtCoder Beginner Contest 220A题目略思路lueAC代码#include <bits/stdc++.h>#define yes puts("yes");#define inf 0x3f3f3f3f#define linf 0x3f3f3f3f3f3f3f3f#define ll long long#define ull unsigned long long#define debug(x) cout<<"> "<<原创 2021-09-28 08:27:25 · 280 阅读 · 0 评论 -
Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))(A-D2)
Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))A - Simply Strange Sort(模拟)简单模拟,没什么好说的。#include <bits/stdc++.h>#define inf 0x3f3f3f3f//#define int long longusing namespace std;typedef pair<int,int> PII;const int N =原创 2021-08-26 11:16:28 · 188 阅读 · 0 评论 -
Fire!(多源BFS)
Fire!link思路跑两遍bfs ,第一遍跑火,得到被烧的时间, 以此跑第二遍人的bfs##AC代码#include <bits/stdc++.h>#define inf 0x3f3f3f3f//#define int long longusing namespace std;typedef pair<int, int> PII;const int N = 10 + 1e3, mod = 1e9 + 7;int n, m;char g[N][N];int原创 2021-08-20 18:55:00 · 107 阅读 · 0 评论 -
CF C. Make Good(异或位运算+思维构造)
C. Make Good题目link给一个序列最多加3个数,使该序列的和S与异或和X满足S=2X的关系。思路明确异或的两个小结论: 0异或其他数,该数不改变 ;两个相同数异或为0,那么用就可以尝试构造两个相同的数保证X不变同时改变x当S<=2X,且S为偶数时,构造两个(2X-S)/2 即可。那么对于S>2X ,想办法让其转化到第一种,因为第一个性质 ,我们可以用一个尽量大的且除最高位都是0的数字a保证 S<=2X ,因为S增加了a,而X也增加了a ,乘2后 ,显然比S大。之原创 2021-08-17 10:23:50 · 234 阅读 · 0 评论 -
CF C. Phoenix and Towers(贪心构造)
C. Phoenix and Towers题目link把一个序列分成m组,保证任意两组和之差不小于 x (x一定大于序列中的最大值)。求分组方式。思路既然让任意两组和之差最小,那么越平均越好,那么就每次都更新最低的塔就好。证明的话用数学归纳法证明一下就好。关注最高的塔和最低的塔差值不超过x就好。挺坑的是写完发现因为x的范围 根本没有NO的情况。。。##AC代码#include <bits/stdc++.h>#define inf 0x3f3f3f3f//#define int原创 2021-08-14 20:27:54 · 277 阅读 · 1 评论 -
CF B. Applejack and Storages(统计每组元素个数的模拟)
B. Applejack and Storages题目link大意就是说一个人要4根长相同的板子和两对长度相同的板子,现给你板子长度,你可以统计他们的出现次数,之后给出q次更新,可以增加板子也可以减少,问每次更新后能不能找到符合要求的8块板子扯淡模拟题,但模拟写法太直的话会TLE,因此不能每次更新后再把所有板子出现次数扫一遍。思路记录不同板子出现次数,每次更新后 只需统计 这次更新的长度的木板是否能多分一组(2个一组,或者4个一组),再注意一下判断时把重复的减去就行##AC代码#inclu原创 2021-08-13 17:05:40 · 124 阅读 · 0 评论 -
CF B. Quasi Binary(暴力 / 记录方案的dp)
B. Quasi Binary题目传送门题意 给一个数 ,将其分解成一些只有1和0组成的数字和,输出最小个数和这样的数字。扯淡暴力其实就能过,主要练习一下dp和这种初始化的方式思路dp,定义其为凑出数字i 所需的最小数量。同时定义一个pre 记录前驱状态。AC代码#include <bits/stdc++.h>#define inf 0x3f3f3f3f//#define int long longusing namespace std;typedef pair<原创 2021-08-13 16:54:02 · 94 阅读 · 0 评论 -
CF D.Epic Transformation(思维 优先队列)
Epic Transformation题目传送门题中给出长为n的序列 ,定义操作:可以一次删除两个不同的元素,次数不限。求最少剩下几个。扯淡一开始只想到记录相同元素的出现次数,用队列模拟一下,喜提wa,然后才发现模拟时,应当用出现最多的的元素 去删去其余的,sort后又一发wa。 本题出现次数最多的元素是随着删除操作不断更新的。。。需要用到优先队列进行维护。。。思路每次用出现次数最多的元素去和其他元素凑对后删去,每次删去后要调整出现次数最多的元素,并且每次只能删除一个,不能删除多个 否则相当原创 2021-08-13 16:42:17 · 142 阅读 · 0 评论 -
CF C. Rotation Matching(偏移量 思维)
C. Rotation Matching题目传送门给一个元素互不相同的序列,给出两种它的排列,可以将任意一个向左或者向右偏移,求最大匹配元素个数。扯淡第一次看见和偏移有关的,懵逼了。思路可以先只看其中一个元素,可以得到偏移多长能和模板序列对上。再看整个序列,偏移相同长度,匹配最多的就是所求,所以找偏移量中重复最多元素的个数就行AC代码#include<bits/stdc++.h>using namespace std;typedef pair<int,int>原创 2021-08-10 12:02:00 · 206 阅读 · 0 评论 -
CF B. Phoenix and Beauty(构造循环节)
B. Phoenix and Beauty题目传送门在一个元素可能相同的序列中 插入一些数字,让其所有长度为k的子序列的和都相等。输出构造的序列 。扯淡一道构造题,一开始想着从1~n跑一遍,通过某些判断逐个构造,最终死的很惨···思路根据要求,应当联想到只要构成一个周期序列,那么只要这个区间是最小循环区间的整数倍,和一定能相等,因此,问题就转化为如何通过插入操作构成循环序列插入操作的特征是不改变原序列的相对位置,但是如果将原序列改成周期序列,只要不断更换起始点,一定可以把原序列所有的排列找出原创 2021-08-10 11:50:53 · 169 阅读 · 0 评论 -
CF B. Moamen and k-subarrays(思维)
B. Moamen and k-subarrays题目传送门大意上,就是给一个长为n的数列,其中元素互不相同,给定k ,可将数列划分为k个子序列 把这些序列重排后,能否得到 一个升序数列。扯淡一开始看错题,直接毙掉显然关键是看如何划分k个区间,每个区间必须升序才行,然后就开始搞模拟分割,交了,然后WA了,然后发现我模拟出来的东西,无法保证全局升序,就开始打各种标记瞎搞,成功把自己干掉。。。思路首先,可以将问题转化为求分割区间数量的最小值,只要这个k比最小值大或相等,一定可以达成目标。然后,原创 2021-08-10 11:27:26 · 456 阅读 · 0 评论 -
CF B2. Wonderful Coloring - 2
B2. Wonderful Coloring - 2题目传送门大意为给一个数列,和k个颜色 ,对这个数列进行染色 ,使得满足以下规定:每种颜色染色数量同样多相同的数字只能染不同的颜色,相同的颜色只能染不同的数字,换句话说,不能相同数字染相同颜色。比如不能出现多个红色的1。可以有不染色的数字存在,但要保证染色的数量最大扯淡一开始写的模拟很复杂,然后一直WA,看了大佬的题解发现,还是分类的边界和关键属性没抓对,逻辑性还是不够,无法抽出一个简洁的思路,导致后面越改越乱。思路显然如果同一个数原创 2021-08-07 21:56:42 · 166 阅读 · 0 评论 -
CF B. Permutation Sort
Permutation Sort题目传送门大意为给定一个长度为n的自然数乱序数列。你可以选定一个区间,可以随意对其中数字排序,求最少通过多少次操作,可以把数列排成升序。(当然,[1,n]不能选)扯淡一开始按从n=1,2,3…分类看能不能找到一个可以递推的规律。后来仔细想想 ,如果在长为n的数列上插入一个n+1,它可以随便放在哪一个数后面,会对前状态造成影响,我们不能用“前n个已经知道,现分析加入前n+1的情况”将其概括…并且给的操作效果太强,应该更倾向找规律。思路思想是贪心,显然每次排的越多越原创 2021-08-07 20:32:10 · 119 阅读 · 0 评论 -
Walker(分类模拟 + 二分)
Walker(分类模拟 + 二分)题目:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uoofWeHP-1628258683303)(https://z3.ax1x.com/2021/08/06/fuDkPf.png)]给定一个数轴,其上有两个可以自由向左向右前进的人,询问什么时候整个数轴至少有一个人来过。AC代码#include <bits/stdc++.h>using namespace std;double get_time(double n原创 2021-08-06 22:05:28 · 179 阅读 · 0 评论