
ACM - 杂题题解
文章平均质量分 68
ACM - 杂题题解
行码棋
ZZUer -> USTCer,退役ACMer。个人站点:wyqz.top
展开
-
2022牛客多校3补题
2022牛客多校3补题原创 2022-09-07 22:34:50 · 998 阅读 · 0 评论 -
AtCoder Beginner Contest 266 A-G
我们首先需要找到这个环,标记一下环上的点,那么以环为树根,单颗子树上的节点(除环上的点)都有单一路径,我们使用并查集将他们连成一个集合即可。叉积计算的是三角形面积,当在右手系的情况下, 叉积计算出来的值就是三角形的正面积,如果计算出的值为负值,即三角形不存在。即为对应的三角形面积, 只需判断上面分母的叉积是否小于等于 0 即可。处,那么首先可以暴力的想怎么转移, 就是我们可以两层循环, 对于每一个。部分,每部分可以为空, 等价于我们先让元素个数添加上。但是本题有一个特点,位置数极少,只有5个,那么。...原创 2022-08-30 09:13:04 · 800 阅读 · 0 评论 -
2022牛客多校2补题
即为存在边权和大于等于0的环即是无限转换,我们把边权取符号,即存在小于等于0的环即为无线转换。然后进行状态转移,转移时候利用的是转移到当前世界的数组(即下面代码的。长度为n的括号序列a是长度为m的合法括号序列的子序列,给定a,求b的数量。,如果图中出现边乘积大于 1 的环,即存在无限转换的方式,否则不存在。判断负环使用SPFA,建立一个超级源点,使其可以到达所有点。个字符是b串的子序列,还有k个左括号未匹配的数量。注意:转移的时候,是先进行走边,然后再到下一个世界。个点的无向图,从第一个世界的编号为。原创 2022-08-23 22:19:56 · 656 阅读 · 0 评论 -
2022牛客多校1
题解有六题。题解纯属自己玩,更多详细解释还请看官方题解。原创 2022-08-21 23:05:58 · 493 阅读 · 0 评论 -
【“战疫杯”大学生程序设计在线邀请赛4】核酸排队
核酸排队在疫情到来的时候,做核酸成了大多数同学们的日常。做核酸也是需要时间的,而且在一个核酸检测点做核酸的人数往往很多,等待时间有时候会比较长。在一个核酸检测点基本都安排有两个队列(默认两个队列的长度都为无限大):扫码队列:在该队列中,我们等待志愿者扫码录入核酸检测信息,志愿者每扫一个同学的码需要xxx单位时间。核酸队列:在该队列中,我们等待医生为我们做核酸,每个同学做核酸需要yyy单位时间。一位同学做核酸的过程可以认为是先到达扫码队列等待志愿者扫码录入信息,录入信息之后到达核酸队列等待做核酸原创 2022-05-12 21:35:55 · 1639 阅读 · 1 评论 -
计算机学术交流协会程序设计新生赛题解
计算机学术交流协会程序设计新生赛题解比赛链接:https://vj.wangyaqii.top:8888/contest/4/problems密码:jsjxsjlxh1️⃣A 数组的飞升对于两个数ai,aja_i,a_jai,aj 来说,假设ai≤aja_i \leq a_jai≤aj,如果要满足题目中总和不下降,即任意两个数之间满足2(aj−ai)≥ai+aj2(a_j-a_i) \geq a_i + a_j2(aj−ai)≥ai+aj解得aj≥3aia_j \geq原创 2022-03-15 23:51:12 · 1092 阅读 · 0 评论 -
【2022牛客寒假训练营1】题解(除G和K)
【2022牛客寒假训练营1】题解(除G和K)原创 2022-01-25 23:32:56 · 675 阅读 · 0 评论 -
Educational Codeforces Round 121 (Rated for Div. 2)A-D题解
Educational Codeforces Round 121 (Rated for Div. 2)A-C题解原创 2022-01-20 07:00:00 · 697 阅读 · 0 评论 -
Codeforces Round #765 (Div. 2)A-C题解
Codeforces Round #765 (Div. 2)原创 2022-01-19 22:29:43 · 735 阅读 · 0 评论 -
Codeforces Round #764 (Div. 3) A-E题解
Codeforces Round #764 (Div. 3) A-E题解原创 2022-01-16 22:33:46 · 706 阅读 · 0 评论 -
【2021CCPC河南省赛】欢度佳节
博客主页: https://blog.youkuaiyun.com/qq_50285142欢迎点赞????收藏✨关注❤留言 ???? 如有错误,敬请指正????虽然生活很难,但我们也要一直走下去????调bug调了一下午,中午调通了,真是太不容易了,以此发现自己对dfs的理解并不是很深刻,递归时某些逻辑出错(统计连通块的个数时),导致bug一时没有调出来题目链接思路:可以发现一共只有17个块,我们可以把所有块的情况列举出来,一共才217=1310722^{17}=131072217=131072种情况原创 2021-11-03 17:53:17 · 630 阅读 · 0 评论 -
2021年ZZUSOFT新生赛(第一场)题解
2021年ZZUSOFT新生赛(第一场)题解比赛链接注意:数据类型范围,题目中有很多体现A直接输出对应的的ASCII码'A' + 0 代表'A''A' + 1 代表'B'#include<stdio.h>#include<math.h>int main(){ for(int i=1;i<=26;i++) { int x; scanf("%d",&x); printf("%c",'A'+x-1); } return 0;}原创 2021-10-22 23:03:10 · 571 阅读 · 4 评论 -
Educational Codeforces Round 115 (Rated for Div. 2) A-D
博客主页: https://blog.youkuaiyun.com/qq_50285142欢迎点赞????收藏✨关注❤留言 ???? 如有错误,敬请指正????虽然生活很难,但我们也要一直走下去????A只要路途不被堵住就行,也就是只要同一列不都是障碍物就行#include<bits/stdc++.h>#define fi first#define se secondusing namespace std;typedef long long ll;typedef pair<原创 2021-10-11 19:43:03 · 356 阅读 · 1 评论 -
【思维】【多项式系数】CodeCraft-20 (Div. 2) C. Primitive Primes
博客主页: https://blog.youkuaiyun.com/qq_50285142欢迎点赞????收藏✨关注❤留言 ???? 如有错误,敬请指正????虽然生活很难,但我们也要一直走下去????题目链接思路:考虑xi+jx^{i+j}xi+j的系数ci+jc_{i+j}ci+jci+j=(a0∗bi+j+a1∗bi+j−1+...)+ai∗bj+(ai+1∗bj−1+ai+2∗bj−2+...)c_{i+j} = (a_0 * b_{i + j} + a_1 * b_{i + j - 1}原创 2021-10-04 17:46:38 · 118 阅读 · 0 评论 -
Codeforces Round #746 (Div. 2)A-C
博客主页: https://blog.youkuaiyun.com/qq_50285142欢迎点赞????收藏✨关注❤留言 ???? 如有错误,敬请指正????虽然生活很难,但我们也要一直走下去????题目链接A思路:找最大值和次大值就可,不断在这两个值之间选择#include<bits/stdc++.h>#define fi first#define se secondusing namespace std;typedef long long ll;typedef pair原创 2021-10-04 11:54:45 · 127 阅读 · 0 评论 -
【二进制】【构造】Codeforces Round #628 (Div. 2) D. Ehab the Xorcist
题目链接题意:给两个数u和v,u为数组中元素的异或,v为数组中元素的和,求满足条件的最小长度的数组思路:二进制构造一般是利用了巧妙的公式或者某二进制位几个数之间的特定关系进行构造。我们考虑寻找与题目相关的公式。从简单的式子开始想:假设两个数a和b,a+b=v,a⊕b=ua+b=v,a \oplus b=ua+b=v,a⊕b=u,寻找这两个式子之间的公式,可以通过列举二进制位进行推导a+b=a⊕b + ?1 1=0+?1 0=1+?0&nbs原创 2021-10-03 21:44:34 · 188 阅读 · 0 评论 -
Codeforces Round #744 (Div. 3) A-F
博客主页: https://blog.youkuaiyun.com/qq_50285142欢迎点赞????收藏✨关注❤留言 ???? 如有错误,敬请指正????虽然生活很难,但我们也要一直走下去????题目链接A#include<bits/stdc++.h>#define fi first#define se secondusing namespace std;typedef long long ll;typedef vector<int> vi;const int原创 2021-09-29 20:58:30 · 127 阅读 · 0 评论 -
AtCoder Beginner Contest 220 A-F
题目链接A#include<bits/stdc++.h>#define fi first#define se secondusing namespace std;typedef long long ll;typedef pair<int,int> pii;typedef pair<ll,ll> pll;typedef vector<int> vi;typedef vector<ll> vl;const int dx[]={-1原创 2021-09-27 18:58:18 · 412 阅读 · 5 评论 -
2021 ICPC 网络赛2
A#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e3 + 7;int a[N], b[N], id[N];int n, m, tot;vector<int> G[N], ans;int c[N];int lowbit(int x) { return x & -x;}void add(int x, int v) { whi原创 2021-09-27 09:22:55 · 496 阅读 · 0 评论 -
2021 ICPC网络赛第一场 A
博客主页: https://blog.youkuaiyun.com/qq_50285142欢迎点赞????收藏✨关注❤留言 ???? 如有错误,敬请指正????虽然生活很难,但我们也要一直走下去????A.set+priority_queue题意:为了形象,我把题意换成洗衣机了,换汤不换药。一共有n台洗衣机(0到n-1),m件衣服,规定每件衣服只能用一台洗衣机洗,每件衣服都有一个洗衣的开始时间和洗衣持续的时间,要求编号为i的衣服选择洗衣机时,要从i%n开始选,往后直到选择到空闲洗衣机为止,到末尾原创 2021-09-23 22:12:54 · 278 阅读 · 0 评论 -
Educational Codeforces Round 114 (Rated for Div. 2) A-D
博客主页: https://blog.youkuaiyun.com/qq_50285142欢迎点赞????收藏✨关注❤留言 ???? 如有错误,敬请指正????虽然生活很难,但我们也要一直走下去????A.Regular Bracket Sequences题意:给一个n,让你构造n个互不相同的括号对,能够让数字和符号填进去让表达式成立思路:我们就这样构造,比如n=4()()()()(())()()((()))()(((())))每次都有一个括号对在左边的括号对里面,每个都不一样#i原创 2021-09-22 21:14:58 · 329 阅读 · 3 评论 -
Codeforces Global Round 16 A-D2
A. Median Maximization题意:一个长度为n的序列必须单增(不减),且数列的和,且序列的总和为s,求位置⌈n2⌉\lceil \frac{n}{2} \rceil⌈2n⌉处的数字最大为多少思路:我们就保证⌈n2⌉\lceil \frac{n}{2} \rceil⌈2n⌉前面的位置都为0,然后后面的元素均匀分配#include<bits/stdc++.h>using namespace std;typedef long long ll;const i原创 2021-09-17 20:53:25 · 238 阅读 · 0 评论 -
Educational Codeforces Round 113 (Rated for Div. 2) A-C
A题意:找a和b个数相等得一个子区间思路:我们找前后相邻两个字母是否是a和b即可#include<bits/stdc++.h>using namespace std;char s[55];int n;int main(){ int t; cin>>t; while(t--) { cin>>n; cin>>s+1; int f = 0; for(int i=1;i<n;i++) if((s[i]=原创 2021-09-09 19:35:23 · 87 阅读 · 0 评论 -
Codeforces Beta Round #49 (Div. 2) A-D
博客主页: https://blog.youkuaiyun.com/qq_50285142欢迎点赞????收藏✨关注❤留言 ???? 如有错误,敬请指正????虽然生活很难,但我们也要一直走下去????A. Autocomplete题意:给一个标准的字符串,然后给出n个字符串,问这n个字符串中前缀能和标准的字符串能够匹配上的最小字典序的那个字符串思路:首先是匹配字符串前缀,需要一个一个字符比较,匹配不上就结果就为假然后就是找最小字典序的字符串,我们构造一个字典序最大的字符串(“zzzzzzz原创 2021-09-04 10:25:12 · 228 阅读 · 4 评论 -
【最大子矩阵】扫描法和悬线法
最大子矩阵问题在一个给定的n∗mn*mn∗m矩形网格中有nnn个障碍点,要找出网格内部不包含任何障碍点,且边界与坐标轴平行的最大子矩形。扫描法例题:奶牛浴场题意:n∗mn*mn∗m的牧场里有一些产奶点,先要建造一个矩形的浴场,里面不能包含产奶点,产奶点可以在浴场边缘,求建造的最大面积性质:1.极大有效子矩形的四条边无法向四边拓展, 也就是说四条边都存在障碍点或与大矩形边界重合2.存在一个障碍点的矩形中最大有效子矩形一定是极大有效子矩形算法复杂度:O(n2)O(n^2)O(n2)我们先原创 2021-09-01 22:34:49 · 638 阅读 · 22 评论 -
Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2) A-D
A题意:两个数为0,问把两个数进行题目上的操作变为给出的数的最小次数思路:找规律1.优先将两个数变为给出两个数的中间值(a+b)/2(a+b)/2(a+b)/2,然后一加一减就能变成目标值2.如果两个数之和为奇数则不能操作3.两个数相等,一次操作即可4.为0,不需操作#include<bits/stdc++.h>#define fi first#define se secondusing namespace std;typedef long long ll;t原创 2021-08-31 19:37:44 · 201 阅读 · 0 评论 -
Codeforces Beta Round #48 A-C
A.Cheaterius’s Problem题意:就是给2×2的方格,每个格子里面有一个数,这个2×2方格可以任意旋转(不能翻过来),然后问总共出现了多少种这样不同的方格思路:一共才就四个数字,直接开四维数组,存储一下对应的位置,每个位置的数字顶多只有10种,每次出现一个没有出现过的就对结果加一,然后对所有的旋转的四种情况标记为出现过#include<bits/stdc++.h>#define fi first#define se secondusing namespac原创 2021-08-27 23:03:15 · 232 阅读 · 0 评论 -
Codeforces Beta Round #46 (Div. 2)A-D
A.Sleuth题意:只要一行字符串最后一个字母为元音字母答案就为是,反之为否#include<bits/stdc++.h>#define fi first#define se secondusing namespace std;typedef long long ll;typedef pair<int,int> pii;typedef pair<ll,ll> pll;typedef vector<int> vi;typedef ve原创 2021-08-25 20:16:57 · 141 阅读 · 1 评论 -
Codeforces Beta Round #43 A-D
A.Ball Game题意:n个人围一圈,一个球从第一个人开始往后传,每次间隔的人数都不断加一,初始间隔为0,共传n-1次,输出每次传球时得到球的人思路:环形问题,涉及到取模操作的话,我们可以把数组的[0,n−1][0,n-1][0,n−1]位置存储相关数据,因为模数小于n,初始位置为当前数据在数组中的位置。例如:1这个人初始位置位于0,往后传球加一后位于1位置,该位置刚好对应2这个人,可以避免n位置模n为0的问题#include<bits/stdc++.h>#define原创 2021-08-23 12:41:34 · 157 阅读 · 1 评论 -
J. Planting Trees(构造)
原题链接题意:在n×mn×mn×m的方格中填数,填的所有数必须都在[1,n∗m][1,n*m][1,n∗m]之间,且只出现一次,并且保证两个数之间的差的绝对值大于1思路:任意相邻的两格之间的数的差绝对值要大于1,对于一格(x,y)(x,y)(x,y)来说,周围四格(x−1,y),(x+1,y),(x,y−1),(x,y+1)(x-1,y),(x+1,y),(x,y-1),(x,y+1)(x−1,y),(x+1,y),(x,y−1),(x,y+1)横纵坐标之和的奇偶性都和(x,y)(x,y)(x,y)原创 2021-08-22 17:44:32 · 142 阅读 · 1 评论 -
AtCoder Beginner Contest 213 A-E
A异或具有自反性A⊕B=CA \oplus B = CA⊕B=C可以得到B=A⊕CB = A \oplus CB=A⊕C#include<bits/stdc++.h>#define fi first#define se secondusing namespace std;typedef long long ll;typedef pair<int,int> pii;typedef vector<int> vi;const int N = 1e5+5,原创 2021-08-19 18:20:35 · 143 阅读 · 1 评论 -
Codeforces Round #739 (Div. 3)A-F2
A直接暴力枚举即可#include<bits/stdc++.h>#define fi first#define se secondusing namespace std;typedef long long ll;typedef pair<int,int> pii;typedef pair<ll,ll> pll;typedef vector<int> vi;typedef vector<ll> vl;const int inf原创 2021-08-19 16:38:44 · 188 阅读 · 0 评论 -
Educational Codeforces Round 111 (Rated for Div. 2) C
题意:两个点的曼哈顿距离为∣x1−x2∣+∣y1−y2∣|x_1-x_2|+|y_1-y_2|∣x1−x2∣+∣y1−y2∣,有一个数组a,求a数组的所有子数组中好数组的数目为多少?好数组定义为不存在三个点(ai,i)(aj,j)(ak,k)(a_i,i)(a_j,j)(a_k,k)(ai,i)(aj,j)(ak,k),有两个点之间的距离相加等于另外两个点之间的距离。数组长度为1和2也算作好数组思路:可以发现单增的序列是永远满足存在两个点之间的距离等于另外两个点之间的距离。.原创 2021-07-25 16:14:13 · 158 阅读 · 0 评论 -
Codeforces Round #721 (Div. 2)A,B1,C题解
A求能够使and位运算为0的最大值,只要知道这个数的二进制有多少位,把第一位变成0,后边的全变成1就行了。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e6+5;int a[N];void solve(){ int n; cin>>n; int nn = log2(n);//二进制位数 ll s = 0; for(int i=0;i<n原创 2021-05-21 11:20:52 · 382 阅读 · 0 评论 -
Codeforces Round #700 (Div. 2) B(简单思维)
B思路:骑士有一个生命值,先把所有怪兽的伤害值减掉,然后加上所有怪兽的最大攻击值,判断其与0的大小。为什么呢?可能最后一次骑士打死怪兽之后就会死亡,只要加上最大的攻击值就会回到进行最后一次攻击前的状态,如果此时骑士的生命值大于0,就可以打死所有怪兽。注意:数据要开ll,因为乘法会爆int#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef vector<int> vi;t原创 2021-05-11 22:45:51 · 119 阅读 · 0 评论 -
AtCoder Beginner Contest 214 A-E
A比较简单#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5+5;int main(){ int n; cin>>n; if(n<126) cout<<4<<'\n'; else if(n<212) cout<<6<<'\n'; else cout<<8<<'\n';原创 2021-08-15 22:13:32 · 208 阅读 · 0 评论 -
区间问题(区间贡献问题超全详解)
题目链接题源大概题意:给定你n个数字aia_iai,请你求出有多少个区间[l,r],满足该区间的数字之和等于其区间长度。n<=1e5,-1e9<=<=1e9思路:前缀和+思维对于两个数ai,aja_i,a_jai,aj来说,如果满足以aia_iai为左界,以aja_jaj为右界包含的区间和等于区间长度则满足sum[j]−sum[i−1]=j−i+1sum[j]-sum[i-1]=j-i+1sum[j]−sum[i−1]=j−i+1将公式转换一下就是原创 2021-05-31 14:02:16 · 2742 阅读 · 23 评论 -
河南省第十三届大学生程序设计竞赛热身赛 C
题意:给定一个序列,求所有不相同的子序列的个数,要求子序列的长度必须为3样例:输入:61 2 3 1 2 3输出:17输入:41 4 4 2输出:3思路:维护三个数组l[i]代表aia_iai左边出现的不同数的个数r[i]代表aia_iai右边不同数的个数last[i]代表上一个出现a[i]的下标固定中间的位置,从前往后开始枚举每个数,对于当前数作为中间数贡献的结果为 这个数前面的不同数的个数乘上这个数后面的不同数的个数,但是考虑到可能后面会出现相同的.原创 2021-05-22 21:31:56 · 859 阅读 · 15 评论 -
Codeforces Round #719 (Div. 3) A-E
A存下来每个字符出现的次数,如果当前字符与前面的字符不相同时,说明是一个新的开始,如果字符访问过,就为NO#include<bits/stdc++.h>using namespace std;typedef long long ll;void solve(){ int n,vis[200]{}; char s[55]; cin>>n>>s; for(int i=0;i<n;++i) { if(i&&s[i]!=s[i-1]原创 2021-05-07 17:06:15 · 109 阅读 · 0 评论 -
codeforces/Atcoder思维题总结
思维题汇总原创 2021-04-28 11:17:50 · 2175 阅读 · 9 评论