自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 D - Frog and Portal 斐波那契+思维构造,超详细,看完就会

全文比较啰嗦,但是看完保证你可以ac你当前位于0,中间有一条河,对岸是陆地200。给定你1到199号的荷叶,你每一次可以跳1~2片荷叶,问你到达陆地200的方法数目,也就是斐波那契数列。你可以创建传送门,使得你到达传送门之后,直接传送。现在问你怎样去创建传送门,可以使得从0到200的方法种类为m。斐波那契数列的性质:任何正整数都可以由斐波那契数组成。所以,我们可以用斐波那契数去构成m。问题来了,创建传送门会打乱斐波那契序列:比如在3建立传送门到6,那么4,5的方法个数一定会受到影响。所以,我们

2020-10-03 14:49:34 170

原创 2020 CCPC - 网络选拔赛 签到计划

1010签到,判断序列相邻的数字是否不同#include <iostream>#include <algorithm>#include <map>#include <vector>using namespace std;const int maxn = 15;long long a[maxn];int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

2020-09-21 16:42:51 126

原创 2019江西省省赛补题报告

K:签到,解方程一开始直接n方暴力,一直wa,可能是数据范围给错了,不清楚。改成解方程就可以了#include <iostream>#include <algorithm>#include <cstring>#include <vector>using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long x,y;

2020-09-06 13:44:47 165 2

原创 2020牛客暑期多校训练营(第十场) A E D I

A:给你一个整数n,写出一个n-1的序列(1~n-1每个数出现一次),使得 a[i+1] % n = 2a[i] % n或者 a[i+1] % n = 3a[i] % n写题时直接暴力,先考虑2倍再考虑3倍,但是不明白证明如果打表的话,你会发现,从1开始,一直翻2倍的会形成一个环,同理,一直翻3倍也会形成一个环。所以,优先翻2倍,发现2倍的已经使用过(回到环的起点),需要翻3倍进入到3倍的环当中。一直到2倍3倍的环都走过为止。(若n-1没有达到,环便不能走了,输出-1)#include <i

2020-08-12 10:54:58 137

原创 Codeforces Round #663 (Div. 2) ABC题解

A:给你一个整数n,输出一个长度为n的序列(1~n每个数都只出现一次),使得所有子数组的 或操作之和 大于子数组的长度。子数组长度也就是1,2,3…n-1.所以我们直接让序列为1,2,3,4,5,6…n即可这样子,选取的子数组 或操作之和 最小也会等于 子数组的最后一位。#include <iostream>#include <algorithm>using namespace std;int main(){ ios::sync_with_stdio(0); cin

2020-08-10 00:38:40 107

原创 2020牛客暑期多校训练营(第九场)A I F E K 补题

I题签到:给你n个数,用n位数字去组成2个整数(不含前导0),输出两个数乘积的最小值。思维题,选择最小不为0的数给 整数a,其他的数字按从小到大给 整数b(注意前导0),输出乘积即可。使用桶排对0到9进行计数。注意,数据范围过大,需要使用大数。#include <iostream>#include <algorithm>#include <stack>using namespace std;const int maxn = 1e5 + 50;int vis

2020-08-09 17:04:03 167

原创 CF 661 DIV3 C - Boats Competition

昨晚咕咕咕,看到队友Cwa了6发,来看看这道题果不其然,不会写…找到多个数对,使得数对的和相等。根据题意,数对和的范围为 2 ~ 2*n。所以,我们可以针对数对的和先写一重循环。得到数对和i之后,再写一重循环j去枚举所有物品,通过减法可以知道与当前物品配对的重量 i - a[j]。所以,我们判断一下重量为 a[j],i - a[j] 的两个物品是否存在即可。amazing,思维题真难搞#include <iostream>#include <algorithm>#i

2020-08-06 10:00:00 159

原创 2020牛客暑期多校训练营(第八场)IKG补题

K:已知n道菜,已知每道菜的利润与数量。对于每个客人,必须从第一道菜开始连续吃,每道菜只能吃一次。问:最多可以招待多少客人,在招待最多客人的时候最大可以获得多少利润。很显然,每个客人都必须从第一道菜开始连续吃,那么第一道菜的数目就是最大招待客人的数目。之后就是如何求最大利润。由于每个人都必须连续吃菜,那么后面的菜即使比前面的菜数量多也没有意义。我们可以直接预处理,将后面多的菜直接定义为等于前面的菜,形成一个递减序列很显然,最大利润就是每一步都贪心地找最大前缀和。使用结构体排序,对每个前缀和的数目

2020-08-03 20:51:03 253

原创 2020牛客暑期多校训练营(第七场) DBH补题 (H整除分块)

D:对于Σi^2,求前n项和,1~n是不是完全平方数。心路历程:上面前n项和的公式为 n (n+1) (2n+1) / 6,直接用double计算wa了,精度不够。用long long存储n的话可以ac,但是应该是数据没有想到(longlong溢出后还是可能是一个完全平方数)只有1和24,严格证明实在不会。B:你现在有n*m个口罩,你需要把这n * m个口罩装箱,保证可以平均分给n个医院或者m个医院,使得箱子数目最少。队友A的,回来补上假设n < m,所以,每个箱子最多n个(一旦大于n,

2020-08-02 16:11:34 138

原创 2020牛客暑期多校训练营(第六场)E C K

E:给定 n,k,问是否可以构造一个 1~n 的排列 P,使得对于 1~n 中任意的数 i,P 都存在一个 长为 i 的子区间,其和模 n 余 k。有解输出任意一组,无解输出 -1。等差数列求和,从1到n所有元素的和 = n*(n+1)/2.所以,如果想结果存在的话,一定要满足所有元素的和 n*(n+1) / 2 % n = k可得:如果n为偶数:那么k必须为n/2; 如果n为奇数,那么k必须为0接下来就是序列的构造,因为要求长度从1到n的所有子序列和 % n = k。所以,我们需要凑n。

2020-07-28 10:24:28 118

原创 2020牛客暑期多校训练营(第五场) FIE补题报告

F:按照题意输出所有人的伤害柱形图,并用星号标出mvp(伤害最高的人),厂长4396虎2200风评被害。注意0伤害不要输出多余空格。#include <iostream>#include <algorithm>using namespace std;const int maxn = 150;int a[maxn];double l[maxn];int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0

2020-07-26 16:04:29 120

原创 2020牛客暑期多校训练营(第四场)FBH补题报告

F:已知AB两点在一条直线上,CD两点在同一条直线上,已知两条直线平行,已知AC,AD,BC,BD距离,求从AB方向看为CD还是DC分情况讨论的方法#include <iostream>#include <algorithm>using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while(t--) {

2020-07-21 16:04:14 122

原创 2020牛客暑期多校训练营(第三场) BAC补题报告

L签到B:已知一个字符串s,下列有q个操作,按题意的操作输出。模拟肯定会超时,没有发现规律的我自闭。将字符串看成一个首尾相连的环。由于操作的时候,字符串的顺序并没有发生变化,所以,我们可以定义一个字符串的起始地址。每一次操作,只改变起始地址即可。本题的时间卡得比较死,cout也会超时,白白送了好几发t。#include <iostream>#include <algorithm>#include <cstring>#include <cstdio

2020-07-19 16:49:32 143

原创 Omkar and Circle

2100的题一开始给我劝退了擦给一个长度为n的环,其中n为奇数,你可以选择一个数,把他替换成相邻两个数的和,再把相邻两个数删除,问执行多次操作之后,最后结果的最大值为多少?也就是进行 n / 2 次操作,每次操作可以视为删除你选中的那个数。因为操作的时候,选择的数字被替换为相邻两数的和,所以,本题可以理解为删除 n/2个不相邻的最小的数字。问题来了!如果两数合并替代中间数之后,会不会被当成最小的再次被替代?不会!!!因为选定值相邻两数过小的话,相邻的这两个数会被优先选定删除,剩下的中间的比较

2020-07-16 18:20:58 210

原创 Omkar and Last Class of Math 有感

又一次被CF的B题思维给卡住了,白白WA了好几发我绝对不会再被卡住!!!!!!不再白给!!!!题目给出一个n,求两个整数a,b: a+b=n,并且lcm(a,b)为最小。很显然可以知道,如果ab之间存在倍数关系,那么lcm最小所以,设b = ma, 得到(m+1)a = n;最终的lcm就是b = ma。所以,我们需要让m最小,即让a尽可能大。代码不上了。丢人简单思路:直接o(根号n)枚举n的因数,得到第一个因数i之后,输出n/i与n-n/i即可。注意特盘n为质数的情况,为1和n-1..

2020-07-15 20:45:40 127

原创 2020牛客暑期多校训练营(第二场)DFCB补题报告

本篇仅用来监督自己补题D:模拟,给你两个时刻,取两个时刻之间相差多少秒。#include <iostream>#include <algorithm>using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int a,b,c; int x,y,z; char t; cin >> a >> t >> b >&gt

2020-07-14 16:14:16 127

原创 2020牛客暑期多校训练营(第一场) FJ补题报告

F:给出两个字符串a,b。定义x ∞=xxx…,问: a ∞和b ∞按字典序比较的结果1.我自己当时的思路如果两个字符串的无限延伸相同,那么,这两个字符串一定有相同的循环节。(直觉)所以,我取ab两字符串长度的gcd作为循环节长度,(如果存在循环节,那么gcd也一定是一个循环节)特判完相等之后,o(n)比较不同就可以了。#include <iostream>#include <algorithm>using namespace std;int gcd(int a,in

2020-07-14 15:36:21 181 1

原创 牛客编程巅峰赛S1赛季第1场 - 青铜&白银局 补题报告

函数式编程,打力扣打得少,需要补足A:给你一个字符串,把字符串中的所有a移动到末尾即可。简单模拟,记录一下a的个数,最后再加上就行。class Solution {public: /** * * @param s string字符串 * @return string字符串 */ string change(string s) { // write code here string ans = "";

2020-07-10 10:45:20 115

原创 西南科技大学第十六届ACM程序设计竞赛暨绵阳市邀请赛 补题报告

本补题报告仅供参考,顺序由简到难C:给你一个数字n,你需要输出一个字符串,该字符串长度必须小于等于n,并且含有n个“AR”子序列。贪心或者思维。直接就想到每一个“A”后面有多少个“R”,那么就可以贡献多少个“AR”。所以,只需要凑出n个“AR”即可。默认长度为n。直接命令第一个字母为“A”,显然,后面如果全是“R”,只有n-1个“AR”,所以,只需要在倒数第三的位置填上一个“A”即可。如此,第一个“A”贡献n-2个“AR”,倒数第三位置上的“A”贡献2个“AR”,凑成n个。并且,通过思考,或者

2020-07-07 10:43:34 1688

原创 Codeforces Round #634 (Div. 3)题解ABCDE1E2

A:你有n个东西,全都分给两个人,确保一个人得到的a,一定比另一个人得到的b多,问:有多少种给的方式?直接分半就行了,记得判断奇偶数#include <iostream>#include <algorithm>using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); cout....

2020-04-14 20:12:23 299

原创 博弈取石子总结

1.一堆石子共有n个,A先手拿,B后手,要求每次最少拿1,最多拿k,拿到最后一个的获胜如果n <= k,A胜!如果n%(k+1)==0,B胜!否则A胜#include <iostream>#include <algorithm>using namespace std;int main(){ ios::sync_with_stdio(0); cin....

2020-04-01 16:07:14 467

原创 Codeforces Round #628 (Div. 2) C

给定你一棵树,n个节点以及n-1条边。现在定义,mex(u,v)为u到v的简单路径当中没有出现的最非负整数求:如何给各个边标号来使得任意的mex(u,v)都是最小的(边的标号为从0到n-2)表面上这是一个关于树的问题,实际却是一个贪心每一次求mex(u,v)都是求简单路径当中没有出现的最小非负整数,即将问题转化成如何使小的标号分散开,尽可能不要在同一条路里面出现。先选取最小的两个标号0,1...

2020-03-15 14:49:46 250

原创 背包一遍过

01背包:n种物品,你的背包容量m,每种物品最多取一次,求最大的价值完全背包:同01,不过,每种物品可以拿无限次多重背包:就是在原本的背包基础上,对每种物品的个数进行限制。即:给出物品的重量、价值以及个数。统一解释:w[i]表示i物品的重量(体积) v[i]表示i物品的价值01背包我们直接对于所有物品遍历,再遍历所有的剩余容量递推即可。#include &...

2020-03-01 14:47:34 1465

原创 Codeforces Round #624 (Div. 3)ABCD

昨晚D被队友给HACK了,上分半路夭折…A:就是给你两个数a,b可以对a进行操作:加一个奇数,或者减一个偶数。问最少操作多少次,使a变成b直接看ab的差值b-a差值=0,不需要操作了差值>0,说明a需要加来达到b,判断差值是不是奇数。是·奇数,加一个奇数就可以了是偶数,则需要加两个奇数差值<0,a需要减来变成b,同上#include <iostream&gt...

2020-02-25 13:42:43 225

原创 Codeforces Round #619 (Div. 2) C.Ayoub's function

题目的意思是长度为n的01串,知道里面有m个1,为这个串中最多有多少个子串含有1脑残的我都想到了插空,就是最后没打出来,==想要含1的子串最多,可以先把1的序列写出来,之后向1序列的空中去插入0,为什么?因为均匀分布的1,可以使得长度大的子串中必定有1,对于长度小的子串也减少了1的重复使用。还不懂?例子:n = 5,m = 2样例中字符串是 : 01010,这样子所有长度...

2020-02-14 01:07:02 1206 2

原创 Codeforces Round #616 (Div. 2)

A:对一个大数进行操作,使得不被2整除,各位之和被2整除先操作最后一位,最后一位必须为单数,之后各位只保留一个单数即可,其他单数都删掉。#include <iostream>#include <algorithm>using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); co...

2020-02-10 14:47:45 138

原创 Codeforces Round #615 (Div. 3)

A:把n个硬币分给三个人,判断三个人最后的硬币能不能相同。先将原本三个人有的硬币abc取最大值,想要相同最起码少的两个人要达到最大值,之后,三人一人一个,对3取模即可。#include <iostream>#include <algorithm>#include <string.h>using namespace std;int main(){...

2020-02-10 14:18:42 212

原创 2020牛客寒假算法基础集训营3

A题,bfs会爆队列,我用的dp建一个二维数组,表示到dp[i][j]有多少种路径dp[1][1] = 1;之后只需要双重循环进行遍历:1.一个点如果可以从上面下来,就需要加上上面那个点的所有路径2.一个点如果可以从左边过来,就需要加上左边那个点的所有路径#include <iostream>#include <algorithm>using namespa...

2020-02-10 13:55:50 141

原创 2020牛客寒假算法基础集训营2

A,小贪心(注意,三个数相加会爆int)#include <iostream>#include <algorithm>using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long a,b,c; cin &...

2020-02-09 21:31:17 145

原创 2020牛客寒假算法基础集训营1总结

A题,找符合条件的三角形,脑抽想少了。符合条件的三角形有许多种:1.底为1,高为2,底与x轴平行2.底为1,高为2,底与y轴平行3.底为2,高为1,底与x轴平行4.底为2,高为1,底与y轴平行每种的计算只需要枚举高所经过的顶点即可,但是在边界处的直角三角形会计算重复,需要减去。还应注意:中间部分三角形的方向可以翻转,*2.#include <iostream>#incl...

2020-02-09 21:18:07 163

原创 2020 CCPC Wannafly Winter Camp Day5 A

给定你每场比赛参加的账号,判断最少有多少个人在使用账号。一个人一场比赛只用一个账号,一个账号只可以属于一个人。则对每个账号分情况:1.三场全都参加2.只参加了12/13/233.只参加了1/2/34.没参加过答案ans = 0则没参加过的直接忽略掉,三场全参加的肯定确定了一个人 ans+=全参加之后,只参加12的可以和只参加3的匹配 ans += min(12,3)同理 13与...

2020-01-17 10:56:57 515 1

原创 2020 CCPC-Wannafly Winter Camp Day3 E

两个人都希望火山哥赢,不断地翻棋子可以知道:最左上角那个棋子,不管翻哪里,都会跟着反转。所以结论是根据最左上角棋子的初始状态判断输赢。博弈赛神仙#include <iostream>#include <algorithm>using namespace std;const int maxn = 505;int main(){ ios::sync_wi...

2020-01-17 10:50:06 289

原创 2020 CCPC-Wannafly Winter Camp Day2 A C

A:求元音字母在子串中的长度占比的期望字符串长度n,则子串的数目为(n*(n+1))/ 2利用前缀和,使用数组sumn[i]来记录到第i位有多少个元音字母,利用前缀和就可以计算区间和。例:2~6区间和 = sumn[6] - sumn[1]在使用数组f[i]表示长度为i的子串共有多少个元音字母。f[i+1] = f[i] + sumn[n-i+1] - sumn[i-1]因为长度为i的...

2020-01-17 10:46:42 417

原创 2020 CCPC Wannafly Winter Camp Day1 H

题目好像不能公开,所以我只写个题解…开场签到题丢给队友,转而开了H题。H的思路是选定一个数y通过gcd(y,k)来 在1到n 内唯一地确定k的值。不难发现,通过gcd来唯一确定k所以:1.y必须是k的倍数,否则无法区分gcd(y,k)与k。2.对于1~(n/kk)内的每一个素数p,y/k必须是p的倍数,否则无法区分k与pk。最终答案等于k(1~n/k*k内所有的质数)质数累乘会超出...

2020-01-17 10:12:13 234

原创 2019icpc上海B灯泡(差分,思维题)

#include #include #include <string.h>using namespace std;const int maxn = 1e6 + 5;int main(){int t;scanf("%d", &t);for(int k = 1; k <= t; k++){int n, m, ans = 0;int c[2005] = ...

2019-09-16 20:20:09 243 2

空空如也

空空如也

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

TA关注的人

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