比赛
文章平均质量分 93
...
Hypoc_
这个作者很懒,什么都没留下…
展开
-
2023牛客暑期多校第三场部分题解
于是问题变成了如何快速进行一条路径的贪心,其实这个贪心并不好拆成两段贪并且合并,所以考虑在lca处枚举一个颜色,然后看看这个颜色最多能往。其实仔细考虑马拉车的话思路是很简单的,考虑每一行,枚举上下匹配对少列,然后直接跑马拉车,每次比较就是比较两段列,这个用哈希整一下就行。接下来为了不改变第一行已经合法的状态,所以不能再翻转列了,看下面每一行需不需要翻转即可,假如有一行既有。一段子孙到祖先的贪心时很好求的,每个点向上二分一下找到最远能延伸到的点,然后倍增跳一下就求出步数了。再判一下无解的情况。原创 2023-08-06 16:01:31 · 540 阅读 · 1 评论 -
2023牛客暑期多校第六场部分题解
A每个点只有变和不变两种情况,容易想到dp,但是dp顺序是个问题,要保证没有后效性,需要每次从当前权值最大的边处断开,将两边分治下去dp,然后再在这条边上合并。状态很显然,当前子图中有 jjj 个点是黑色的最优解。代码如下:#include <bits/stdc++.h>using namespace std;#define maxn 3010int n,a[maxn],cost[maxn];int u[maxn],v[maxn],w[maxn];struct edge{in原创 2023-08-06 11:08:50 · 462 阅读 · 0 评论 -
2023牛客暑期多校第五场部分题解
先去构造儿子,假如儿子的逆序对数异或和恰好等于自己的要求,那么就什么也不用做了,否则可以找两个相邻的儿子交换一下左边的最大值和右边的最小值,这样不会影响两个儿子内部的逆序对个数,也不会影响两个儿子之间的逆序对个数,而且显然不会影响其它儿子之间。那么怎么找到一个逆序对数最少的环呢,肯定要研究一下环和逆序对数的关系,不可能枚举一个环然后去暴力算逆序对数的,肯定是根据环和逆序对数的关系,然后为了满足逆序对数最少而寻找构造环的方式。的左右端点都在环上,容易证明,只考虑环的话,环上的点产生的逆序对个数至少是。原创 2023-08-02 16:15:32 · 428 阅读 · 0 评论 -
2023杭电多校第二场部分题解
剩下还有些题以后再补……原创 2023-07-30 20:54:43 · 475 阅读 · 0 评论 -
2023杭电多校第一场部分题解
还有些没补的题以后回来补。原创 2023-07-29 18:01:47 · 469 阅读 · 0 评论 -
2023牛客暑期多校第二场部分题解
首先可以发现每个人的决策一定会想办法利用后面的人来使自己利益最大化,那么利用肯定利用到极致,比如最后选菜的人最喜欢的菜一定是没人选的,因为这样他就一定会选这个菜,前面的人就可以利用这一点。后来想到直接不管长度限制,统一直接用一个 unsigned long long 来做,加一就正常加一,翻转后的加一变成减一,翻转就用。把欧拉路径先限制成欧拉回路,虽然看起来更难了但其实这样不需要考虑图的实际连通情况了,只需要保证每个点的度都是偶数。的位置,然后每次一个一个位置往后跳,应该是可以做的,但实现很麻烦。原创 2023-07-26 20:57:03 · 344 阅读 · 0 评论 -
2023牛客暑期多校第一场部分题解
好像很多人猜结论直接就冲过去了,当时没往猜结论上想,就一直在试图找最优的操作方式,实际上不如先猜结论再尝试构造,也是一种找最优操作方式的好途径。但是确定了第三个点之后,第一个点又不一定合法了,再用二三点确定新的第一个点,然后用新的第一个点和第三个点确定新的第二个点……但有一种特殊情况,就是这条边是叶子边,并且叶子不和任何非树边相连,那么往这条边上加点就没有额外影响,直接加满即可。有了这个结论,先用扩欧求一个解,然后要使答案尽可能小,那么最优的解一定是离原点最近的几个,都试试就行了。这个过程可以用个三分。原创 2023-07-23 17:26:42 · 492 阅读 · 1 评论 -
AGC048 部分题解
A先判断 SSS 字典序是否大于atcoder,是就输出 000。否则往后面找到第一个不为a的字母,移到第一位即可。假如这个字母字典序比t还大,那么移到第二位就够了。代码如下:#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define maxn 100010int T,n;char s[maxn];char s2[9]={' ','a','t原创 2020-10-19 15:08:10 · 399 阅读 · 0 评论 -
2020牛客暑期多校训练营(第八场)题解
文章目录I. Interesting Computer GameI. Interesting Computer Game有 nnn 组数字,每组两个数,你可以从每组中选一个数,问你最多能选出多少个不同的数。这题看起来酷似网络流,但是你硬跑的话大概是会T飞的。考虑每组内的两个数连边,那么对于一个连通块,如果边数为点数减一(即是棵树),那么能拿的点只有 n−1n-1n−1 个,否则总是能拿完每个点,策略大概就是每次取叶子,有环的话怎么取都行。代码如下:#include <cstdio>原创 2020-09-21 11:00:18 · 344 阅读 · 0 评论 -
2020牛客暑期多校训练营(第十场)题解
文章目录A. PermutationE. GameI. TournamentJ. Identical TreesA. Permutationppp 是一个质数,找到 111 ~ p−1p-1p−1 的排列 aaa,满足 ∀i∈[1,n),2ai≡ai+1(modp)\forall i\in[1,n),2a_i\equiv a_{i+1}\pmod p∀i∈[1,n),2ai≡ai+1(modp) 或 3ai≡ai+1(modp)3a_i\equiv a_{i+1}\pmod p3ai≡ai+1原创 2020-09-21 10:58:49 · 522 阅读 · 0 评论 -
牛客挑战赛43 部分题解
A容易发现每一个数分一段是最优的,因为两个数或起来可能变小而绝不可能变大。代码如下:#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;int n;int main(){ scanf("%d",&n); long long ans=0; for(int i=1;i<=n;i++){原创 2020-09-21 10:08:33 · 259 阅读 · 0 评论 -
【LGR-076】洛谷 ⑨ 月月赛 I & Cnoi2020 题解
背景有史以来发挥最好的一次?不过最后卡常能力不行所以完全进不了前三,我还是太菜了……T1容易发现就是找出现次数最多的字母。只贴主要代码了,贴上一些板子会很长,有些函数意义也很明显自己脑补一下就好了:char s[10000010];int t[27];void main(){ scanf("%s",s+1); int n=strlen(s+1); for(int i=1;i<=n;i++)t[s[i]-'a']++; int ans=0; for(int i=0;i&l原创 2020-09-20 18:58:13 · 1349 阅读 · 5 评论 -
2020牛客暑期多校训练营(第九场)题解
文章目录A. Groundhog and 2-Power RepresentationB. Groundhog ans Apple TreeC. Groundhog ans Gmaming TimeD. Groundhog and Golden AppleE. Groundhog Chasing DeathF. Groundhog Looking DowdyI. The Crime-solving Plan of GroundhogJ. The Escape Plan of GroundhogK.The F原创 2020-09-18 15:26:03 · 762 阅读 · 0 评论 -
2020牛客暑期多校训练营(第七场)题解
文章目录D. Fake NewsD. Fake NewsTTT 组询问,每次问 ∑i=1ni2\sum_{i=1}^n i^2∑i=1ni2 是不是平方数。题面好评有一个广为人知的柿子:∑i=1ni2=n(n+1)(2n+1)/6\sum_{i=1}^n i^2=n(n+1)(2n+1)/6∑i=1ni2=n(n+1)(2n+1)/6。也就是说要满足 n(n+1)(2n+1)/6n(n+1)(2n+1)/6n(n+1)(2n+1)/6 是平方数,除法不好解决,先乘上个 363636 变成原创 2020-09-16 21:41:27 · 509 阅读 · 0 评论 -
Educational Codeforces Round 95 题解
背景T1出了大锅导致unrated了……最后排名在70左右,如果不算橙名及以上的那些,那就排到第10左右了,小号错失一波上分的好机会QAQ……A算一下需要的总木棍数,然后就能算出交易次数,要注意精度问题,需要用long double。代码如下:#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#define原创 2020-09-15 15:44:54 · 1153 阅读 · 5 评论 -
Codeforces Round #670 (Div. 2) 题解
A简单的贪心,就直接上代码了:#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#define maxn 110int T,n,a[maxn],b[maxn];int main(){ scanf("%d",&T);while(T--) { scanf("%d",&n); mem原创 2020-09-13 19:32:56 · 227 阅读 · 0 评论 -
2020牛客暑期多校训练营(第六场)题解
文章目录B. Binary VectorC. Combination of Physics and MathsE. Easy ConstructionG. Grid ColoringK. K-BagB. Binary Vector问你随机选出 nnn 个 nnn 维向量,他们线性无关的概率是多少,要求选出的向量每一维只能是 000 或 111。假设现在已经选出 iii 个线性无关的向量了,那么这 iii 个向量一定张成了一个 iii 维的空间,在这个 iii 维空间内任意向量都可以被这 iii 个原创 2020-09-07 16:35:27 · 689 阅读 · 0 评论 -
Codeforces Round #668 (Div. 1) 题解
A容易发现一个结论:每隔 kkk 位的字符应该是相同的。于是就可以确定这个字符串的一部分。剩下的部分只需要保证 字符串前 kkk 个字符中 010101 数量相同即可,剩下的 ? 也就确定了,代码如下:#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#define maxn 300010int T,n,k;原创 2020-09-07 16:21:33 · 449 阅读 · 0 评论 -
2020牛客暑期多校训练营(第五场)题解
文章目录A. PortalB. GraphD. Drop VoicingE. Bogo SortF. DPSI. Hard Math ProblemA. Portal给一张 nnn 个点 mmm 条边的无向图,边有长度,有 kkk 个任务,每个任务要去 aia_iai 捡一个物品送到 bib_ibi,你可以开传送门,每个时刻最多只能有两个传送门,你可以随时在脚下开个传送门,也可以随时关闭图中任意一个传送门,假如你脚下有一个传送门,你可以从这个传送门无代价地走到另一个传送门,求按顺序完成所有任务的最原创 2020-09-03 10:49:10 · 909 阅读 · 0 评论 -
Codeforces Round #666 (Div. 1) 题解
A假设第三次操作范围是 [1,n][1,n][1,n],那么前两次操作的目标就是把每个数变成 nnn 的倍数。假设前两次目标的操作范围都是 bbb,那么对于每个数 aaa,需要找到一个 xxx,满足 a+bx≡0(modn)a+bx\equiv 0\pmod na+bx≡0(modn),即 x≡−abx\equiv -\dfrac a bx≡−ba,那么就需要保证 bbb 在模 nnn 意义下有逆元,所以 bbb 需要是个质数。而两次操作要覆盖整个序列,所以 b>n2b>\dfrac n原创 2020-09-01 18:54:14 · 311 阅读 · 0 评论 -
Codeforces Round #665 (Div. 2) 题解
A稍微分类讨论一下即可。代码如下:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define maxn 1000010int T,n,k;int main(){ scanf("%d",&T);while(T--) { scanf("%d %d",&n,&k); if(n<k)printf("%d\n",原创 2020-08-27 15:07:06 · 186 阅读 · 0 评论 -
Educational Codeforces Round 94 题解
A由于整个串长度为 2n−12n-12n−1,所以每个长度为 nnn 的串都肯定会覆盖到第 nnn 个位置,所以直接令答案字符串全部为为第 nnn 个字符即可。代码如下:#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#define maxn 100010int T,n;char s[maxn];in原创 2020-08-27 11:12:41 · 228 阅读 · 0 评论 -
2020牛客暑期多校训练营(第四场)题解
A. Ancient Distance给出一棵树,选定 kkk 个关键点,每个点往根方向走到的第一个关键点为最近关键点,令 f(k)=maxi=1n(if(k)=\max_{i=1}^n(if(k)=maxi=1n(i 到最近关键点的距离))),求 ∑k=1nf(k)\sum_{k=1}^n f(k)∑k=1nf(k)。他要的是枚举关键点数量,容易转化成枚举最大距离,然后求出需要的最少关键点数。枚举出最大距离 xxx 后,就是个比较简单的贪心了,每次取深度最大的点,往上跳 xxx 步,将这个原创 2020-08-25 14:46:39 · 999 阅读 · 0 评论 -
AGC047部分题解
A问有多少个数对 (i,j)(i,j)(i,j) 满足 i<ji<ji<j 且 ai×aja_i\times a_jai×aj 是个整数。将所有数乘上 10910^9109 之后,就转化成了 ai×aja_i\times a_jai×aj 是 101810^{18}1018 的倍数。xxx 是 101810^{18}1018 的倍数,需要满足 xxx 质因数分解之后 222 和 555 的数量不少于 181818 个,那么将所有 aia_iai 分解一下得到 222 和原创 2020-08-20 15:21:23 · 590 阅读 · 0 评论 -
Codeforces Global Round 10 部分题解
A假如全部都一样,那么显然不能操作,否则肯定存在一个最大值,它旁边的值比他小,将他们合并之后最大值唯一,可以用这个新的最大值与其他全部合并起来。代码如下:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define maxn 200010 int T,n; int main(){ scanf("%d",&T);while(T--) {原创 2020-08-17 15:22:01 · 250 阅读 · 0 评论 -
2020牛客暑期多校训练营(第三场)题解
A. Clam ans Fish有nnn 个鱼塘,每个鱼塘是四种鱼塘中的一种,这四种分别是啥都没、有鱼饵、有鱼、都有,每次可以选择四种操作之一:不动、拿鱼、拿鱼饵、用鱼饵钓鱼(可以在没鱼的鱼塘里钓),求最后的最大鱼数。有饵没鱼的肯定拿饵,有鱼没饵的肯定拿鱼,啥都没有的肯定尝试钓鱼,都有的肯定拿鱼,因为不知道鱼饵后面能不能有机会钓。然后后面还剩了 kkk 个饵,可以考虑只要前 k2\dfrac k 22k 个,在遇到后面的 k2\dfrac k 22k 个饵时,由于是多余的,就不拿了,操作换成钓原创 2020-08-12 12:22:19 · 345 阅读 · 0 评论 -
Codeforces Round #660 Div. 2 题解
A最小的四个近似素数为 6,10,14,156,10,14,156,10,14,15,容易发现,当 n≤30n\leq 30n≤30 时,是一定无解的,因为最小的三个近似素数加起来就有 303030。否则的话,我们一定可以用 6,10,14,n−306,10,14,n-306,10,14,n−30 或 6,10,15,n−316,10,15,n-316,10,15,n−31 来表示出 nnn,因为当第一种方式表示不出来时,一定满足 n−30n-30n−30 等于 6,10,146,10,146,10,1原创 2020-08-11 15:43:43 · 177 阅读 · 0 评论 -
Codeforces Round #659 Div. 2 题解
A随便构造一下就好了。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define maxn 100010 int T,n,a[maxn];char s[maxn]; int main(){ scanf("%d",&T);while(T--) { scanf("%d",&n);int ma=1; for(int i=原创 2020-08-10 11:38:35 · 143 阅读 · 0 评论 -
2020牛客暑期多校训练营(第二场)题解
F .Fake Maxpooling给出一个 n×mn\times mn×m 的矩阵,第 iii 行 jjj 列的数为 lcm(i,j)lcm(i,j)lcm(i,j),求出每个 k×kk\times kk×k 的子矩阵中最大值的和。优先队列比较裸的应用了,先横着跑一遍再竖着跑一遍即可。代码如下:#include <cstdio>#define maxn 5010int n,m,k,a[maxn][maxn],ma[maxn][maxn];int gcd(int x,int原创 2020-08-06 10:44:35 · 424 阅读 · 1 评论 -
AtCoder Beginner Contest 174 题解
废话这篇博客只是本着不写白不写的想法写的,所以比较水qwq……T1按题目说的做就好了。#include <cstdio> int n; int main(){ scanf("%d",&n); if(n>=30)printf("Yes"); else printf("No");}T2判断一下每个点是否满足就好。#include <cstdio>#define ll long long int n,ans=0;ll d; int原创 2020-08-03 11:07:08 · 262 阅读 · 0 评论 -
2020 年百度之星·程序设计大赛 - 初赛二 题解
废话丑话说在前头,T8我不会。(没错是指我会出丑……)T1既然要玩尽可能多轮,那么每轮投入的钱就要最少,也就是 mmm 元,那么可以算出每轮游戏会亏损 ⌈x×p%⌉\lceil x\times p\%\rceil⌈x×p%⌉ 元,算一下可以玩几轮即可。代码如下:#include <cstdio>#include <cmath>int T,n,m,p;int main(){ scanf("%d",&T);while(T--) {原创 2020-08-02 13:29:42 · 388 阅读 · 0 评论 -
2020 年百度之星·程序设计大赛 - 初赛三 题解
T1第 iii 种套餐在第一次吃饭时省了 (1−ci)×a(1-c_i)\times a(1−ci)×a 元,本来应该付的钱就是 bi×a+(1−c)×ab_i\times a +(1-c)\times abi×a+(1−c)×a,除一下得到优惠比例 1−cibi+(1−ci)\dfrac {1-c_i} {b_i+(1-c_i)}bi+(1−ci)1−ci。话说这题我居然看了三分钟才看懂题意啊……(最后还是靠一手样例才get到它的意思qwq)代码如下:#include <cstd原创 2020-07-30 17:11:43 · 360 阅读 · 0 评论 -
2020 年百度之星·程序设计大赛 - 初赛一 题解
废话虽然说是题解,但是并没有贴代码……因为只写了部分的题,剩下的题因为种种原因 (太懒了) 没有写代码,于是想着全部都不贴好了qwq。最后的排名是 595959,在这里记录一下。T1 Drink枚举每种饮料,求出只喝这种需要的数量,更新一下答案即可。T2 GPA枚举每一科成绩即可,可以注意到,对于同一个绩点,只需要枚举成绩为该绩点对应的最低分就够了。T3 Dec一开始以为是什么神奇的数论,写了发贪心交上去WA掉了嘤嘤嘤。然后一看数据范围,a,ba,ba,b 只有 100010001000原创 2020-07-26 11:05:24 · 361 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2) 题解
废话赛时写了前 555 题,拿了个五十几的排名当时沾沾自喜,然后重测时 T3,T4 数组开小同时爆炸了……T1只需要找到 a,ba,ba,b 数组的一个相同元素即可。(大概只有我这种菜逼才会在这题WA一发吧……)代码如下:#include <cstdio>#include <cstring> int T,n,m;bool v[1010]; int main(){ scanf("%d",&T);while(T--) { scanf("%d %d原创 2020-07-23 11:37:29 · 179 阅读 · 0 评论 -
2020牛客暑期多校训练营(第一场)题解
7.157.157.15 前还在搞文化课,错过了前两场,现在回来补qwq。然而很多题并不会。比赛传送门文章目录A. B-Suffix ArrayB. Infinite TreeG. BaXianGuoHai,GeXianShenTongF. Infinite String ComparisionH. Minimum-cost FlowI. 1 or 2A. B-Suffix Array给出一个字符串,定义一个字符串 s1s_1s1 ~ sms_msm 对应的 B1B_1B1 ~ BmB_m原创 2020-07-22 17:40:15 · 571 阅读 · 0 评论 -
AtCoder Regular Contest 090 题解
比赛传送门T1求一下前缀后缀和然后找个最大值即可。代码如下(板子部分可以忽略不看):#include <cstdio>#include <cstring>#include <map>#include <vector>#include <algorithm>using namespace std;namespace my{ //-------------------------------------------------原创 2020-06-09 09:51:17 · 173 阅读 · 0 评论 -
LGR-072 div2 小结
T1签到题,但是注意读入要用 long long 而不是 unsigned long long,以及负数的答案为 000。代码(略去了原代码中多余的东西):ll n;void main(){ scanf("%lld",&n); if(n<=0)printf("0"); else printf("%llu",((ull)n-1llu)*2llu+1llu);}T2这题爆搜出每一段座位,然后每一段座位中,第一个座位有 kkk 个学校可选,后面的座位由于不能和上一个座位学校原创 2020-05-31 20:57:34 · 154 阅读 · 0 评论 -
大概是个人介绍的东西&友链
介绍一名苦逼高一OIer,每天在巨佬的光辉下兢兢业业地苟着。虽然很菜,但是在努力变强。大概也是个老二次元? 当然不算啦,要看的番越来越多,越来越觉得自己阅番量太少了……学OI的现状也是这样,要学的算法越来越多,不会的东西越来越多,每天只能刷刷水题勉强维持一下生活这样子。座右铭是东京喰种中那句很帅的话:世界上所有的不幸都是当事人的能力不足造成的,大概我最喜欢的男主就是金木研了吧。啊,还有不能不说的东西,最最喜欢白羽和惠惠了!友链神仙师兄们春学家:Zory King神仙:Rose King原创 2020-05-28 16:20:19 · 652 阅读 · 4 评论 -
CodeChef December Challenge 2019 Division 2 小结
背景打完这场 ratingratingrating 终于上 180018001800 了,下个月可以打 Div 1Div~1Div 1 了~虽然连 Div 2Div~2Div 2 都不一定能 AKAKAK,但是打 Div 1Div~1Div 1 总归要好一点吧。这次做得比较急,最后一题然而根本没有看……但是最遗憾的还是 T7T7T7...原创 2019-12-19 13:25:44 · 211 阅读 · 0 评论 -
CodeChef November Challenge 2019 Division 2 小结
背景因为没怎么上这个网站导致 ratingratingrating 为 000,于是只能打 DIV2DIV2DIV2 了……正题记录一下每题的做法吧。T1发现两个人对战无论哪个人获胜结果都是一样的,因为如果将武器序列看成一个二进制数,那么每一次对战就是两个人异或起来,所以答案就是所有人异或起来之后那个数的二进制下 111 的个数。代码:#include <cstdio>...原创 2019-11-11 20:18:17 · 253 阅读 · 1 评论