自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Panasonic Programming Contest 2021(AtCoder Beginner Contest 231)

D#include <bits/stdc++.h>using namespace std ;const int N = 1e6 + 10 ;int st[N], f[N] ;int father(int x) { if (f[x] != x) f[x] = father(f[x]) ; return f[x] ;}int main(){ int n ,m ; cin >> n >> m ; for (int i = 1; i <= n; i

2022-01-03 09:07:31 466

原创 AtCoder Beginner Contest 230

Ehttps://atcoder.jp/contests/abc230/tasks/abc230_e先找出来k0=floor(sqrt(n))k0 = floor(sqrt(n))k0=floor(sqrt(n))可以发现floor(n/i)=kfloor(n / i) = kfloor(n/i)=kk<=n/i<=k+1k <= n / i <= k + 1k<=n/i<=k+1n/(k+1)<=i<=n/kn / (k + 1) <= i

2021-12-31 16:23:04 354

原创 四川大学新生赛——羊工八刀

四川大学的新生赛的一道题目感谢大佬教我的思路:让求两个1的距离的平方之和有点像(a−b)2=a2+b2−2ab(a - b) ^2 = a ^ 2 + b ^ 2 - 2ab(a−b)2=a2+b2−2ab这个公式,这样我们就可以推出柿子,两个1的距离的平方之和就是所有当1的个数为2个时(a2−a1)2=a12+a22−2a1a2(a_2-a_1) ^ 2 = a_1 ^2 + a_2 ^2 - 2a _1a_2(a2​−a1​)2=a12​+a22​−2a1​a2​当1的个数为3个时(a2−

2021-12-20 09:28:39 161

原创 Codeforces Round #751 (Div. 2)C-D题解

C题意:给一个长度为n的数组,找长度为k的子数组,在有限的操作下使数组里面的数全都变成0,输出所有可能k的情况。思路:对于每一次减法,相当于可以把1变成0,假设某一位上一共有x个1,那么为了将x个1全部变为0,那么x一定是k的倍数,所有只要保证k是所有位最大公约数的约数就行了。#include <bits/stdc++.h>using namespace std ;const int N = 2e5 + 10 ;int n ;int s[35] ;int main(){ i

2021-11-09 14:35:49 122

原创 Daiwa Securities Co. Ltd. Programming Contest 2021(AtCoder Regular Contest 128)A-B题解

A思路:贪心 看数列可以分成几部分上升子序列 子序列最小的数和最大的数(最大数的时候转换成银,最小数的时候转换金)代码:#include <bits/stdc++.h>using namespace std;const int N = 200010;int n, a[N], b[N];int main(){ cin >> n ; for (int i = 1; i <= n; i ++ ) cin >> a[i]; for (int i

2021-10-22 07:58:29 196

原创 新生赛题解

C思路:C题这道题思路就是两个for循环前后遍历一遍,但是有很多小细节会导致不能AC,比如说lljj最多做n道题,比如说数据范围是1000,数组就开到了1000,这些小细节导致很多人wa。代码#include <stdio.h>int n, k;int a[1010];int main(){ scanf("%d%d",&n,&k); int sum = 0; for (int i = 1; i <= n; i ++ ) scanf("%

2021-10-16 21:39:21 104

原创 Educational Codeforces Round 115 (Rated for Div. 2)题解

好长时间没有写过题解了,以后还是坚持写吧!!!A题意:给一个2*n的矩阵,起点是(1, 1),终点是(2, n),矩阵中的数是由0和1组成的move from cell (x1,y1) to cell (x2,y2) in one step if |x1−x2|≤1 and |y1−y2|≤1,可以左右、上下也可以斜着走,1表示不可以通过,0表示可以过,问可不可以到达终点。思路:找上下两个数如果都是1的话,就表示不能通过。代码#include <bits/stdc++.h>using

2021-10-12 20:18:51 89

原创 Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)

A、B题我就不写了C题意:给一个序列,这个序列的下标从一开始,如果iii是奇数的话,aia_iai​表示有几个左括号,iii为偶数的话的话,aia_iai​表示有几个右括号,res表示有多少个连续的括号子序列,输出res。思路:这题遇到左括号时候aia_iai​开始数量为be,sum初始为0,从ai+1a_{i+1}ai+1​开始匹配,这时候的子序列是一直包括aia_iai​的那部分。#include <bits/stdc++.h>using namespace std;const

2021-09-04 11:10:23 204

原创 牛客练习赛87题解

A思维题当k=n−1k = n - 1k=n−1的时候特判一下就行了回超intintint开longlonglong longlonglongB思维题找一个数组存一下x左右两边比x小的数有多少个前缀后缀数组的那种forforfor循环lll二分rrrCdfsdfsdfs#include <bits/stdc++.h>using namespace std;typedef long long ll;unordered_map<ll, ll>f;ll t,

2021-08-21 11:18:29 319

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

A题意:有一个数组从1开始,这个数组不存在以3结尾或者可以整除3的数,求这个数组第nnn个数是多少思路:打表100010001000个数B题意:1−n1 - n1−n 均匀分布在一个圆上(nnn是偶数),在一条直径上两端的两个点,给出一条直径上的俩个点a,ba,ba,b在给一个点ccc,求ccc对面的点是哪个点,如果不存在就输出-1.思路:先根据a,ba,ba,b找出这个圆中的最大的点,从而出现了一个平分线n,n/2n,n/2n,n/2根据这个平分线找ccc对应的值。C题意:给出一种填格方式

2021-08-20 16:59:25 95

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

A题意:一个数组长度为nnn,对数组进行操作,选取区间aia_iai​到aja_jaj​对区间的数进行与操作ai+la_{i + l}ai+l​ = ai+la_{i + l}ai+l​ & ar−ia_{r - i}ar−i​这种操作可以作用任何数组中的数,最小化最大的数,答应这个值;思路:&运算以后,aaa&bbb <= aaa(aaa > bbb)所以想要让最大值最小就让数组中最大的数&整个数组,就可以得到最小值.#include <bits/s

2021-08-17 22:25:02 107

原创 暑假训练第四次作业题解

A//提交c++ (这里我们把i定义在了for循环内部#include <stdio.h>#include <string.h>int main(void){ char a[1100]; while (gets(a) != NULL){ int len = strlen(a);//a字符串的长度 for (int i = 0; i < len; i ++ ){//判断有没有you有替换成we //

2021-08-17 11:16:24 234

原创 The 2020 ICPC Asia Shenyang Regional Programming Contest(沈阳站f题)

题意:给一个序列,这个序列的长度是nnn,现在想要把序列分段,每一小段里面排列,使总体的序列是非递减排列,打印最多可以分成多少段。思路:我们要看一个数后面最小的数是谁,也就是后缀数组存一下然后比较当前点的数字bib_ibi​是否大于maxxmaxxmaxx,如果大于的话ans++ans++ans++.#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int a[N], b[N], n;int ma

2021-08-07 09:54:25 474 2

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

A题意:找到a,b两个数这两个数满足amodn=bmodna mod n = b mod namodn=bmodn思路:看上去是个同余方程其实不用这样麻烦a=2,b=n/2a = 2, b = n / 2a=2,b=n/2就可以啦B题意:这是个象棋的题目n∗nn*nn∗n的矩阵分为我方和敌方我分棋子可以斜着吃敌方的士兵到达敌方或者对面没有敌方棋子直接到达敌方,打印到达敌方棋子的个数。思路:模拟#include <bits/stdc++.h>using namespace

2021-08-05 20:59:01 138

原创 Codeforces Global Round 15题解

A题意:找出最少的字符交换这些字符使这个字符串按照字母表的顺序排序思路:这些字符表示成数字,数组sort从小到大排序,一个一个位置的比较如果数字不和字符匹配的话,cnt++,最后输出cnt即可。B题意:给n个运动员这n个运动员参加过5次比赛,这5次比赛谁用的时间越少谁的排名就越靠前,如果A三次排名超过B的话,A比B更可能获奖,找出这n个人最可能获奖的,如果没有打印-1思路:找最快的人就像在一个数组中找最大值一样,假设第一个人是最大值然后一个一个的和后面比较,更新id,最后在确认一下这个id是不

2021-08-05 20:21:18 130

原创 Educational Codeforces Round 112 (Rated for Div. 2)题解

A题意:3种pizze要分给n个朋友每人一个,有三种披萨15分钟6份的,20分钟8份的,25分钟10份的,最少需要等多长时间思路:15分钟6份其他5分钟2份先尽可能的选择15分钟6份的剩下的选择5分钟2份的B题意:给一块空地这块空地有一张桌子,桌子的宽与空地的宽平行,现在想往空地里面再放一张桌子,可以移动第一张桌子放下第二张桌子,两张桌子不能相交,如果放不下第二张桌子打印出来-1,否则答应出来最少的移动的步数。思路:图是假图,太迷惑了;其实我们只可以向上向下向左向右移动,为什么呢?可以想

2021-08-01 10:35:31 181

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

A题意:在数组里面找出lr在这个范围里面sum = max(a[l],a[l + 1],…,a[r])*min(a[l],a[l + 1],…,a[r])自己定义lr找出最大的sum,打印sum思路:要想sum最大,min就要尽可能地大,如何规定lr使min最大呢?这个区间的长度为2这样的话一个数的两边找最大的sumB题意:在一个数组找到i,j(i<j)找到最大的ij - k(a[i]|a[j])打印最大值思路:看到数据范围1 <= n <= 3e5, k = min(n

2021-07-31 17:15:52 51

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

A题意:c1 + 2 * c2 = n;构造c1和c2思路:可以根据样例得出结论:如果n%3大于0的话,c1 - c2 = 1否则c2 = c1B1题意:两种颜色来填字符串满足两种颜色用的次数一样多,相同的字母不能涂相同的颜色,每个字母可以涂颜色可以不涂颜色,最大化被图的字母输出一种颜色使用的次数思路:用map存下每个字母遍历map计算sum += min(2, t.y);sum最后除以2就是结果B2题意:是B的hard版给定k种颜色给字母涂色,每种颜色用的次数一样多,相同的字母

2021-07-29 09:32:36 69

原创 ABC208a~d

A#include <algorithm>#include <iostream> using namespace std; long long n, m; int main(){ cin >> n >> m; if (m >= n && m <= n * 6) cout << "Yes" << endl; else cout << "No" <&lt

2021-07-14 21:45:48 138

原创 ABC209a~d题解

最近两场发现ABC前三道是签到题 第四道是图论题是简单图论第五道第六道会加大难度还有我发现一个问题abc的英语太难读了~唔A在b大于a是打印ab的差值#include <algorithm>#include <iostream>#include <cstring> #define xx first#define yy second#define ll long long#define L(i, j, k) for (int i = j; i &lt

2021-07-14 10:59:07 206

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

A#include <algorithm>#include <iostream>#include <cstring>#include <cmath>#define xx first#define yy second#define ll long long#define L(i, j, k) for (int i = j; i <= k; i ++)#define R(i, j, k) for (int i = j; i >= k

2021-07-13 11:39:14 91

原创 牛客练习赛86

A单纯简单博弈刚刚看到这个题的时候我以为看到了原题(原因就是我cf做过一道几乎一模一样的题但是不同一样就是我发现cf的那道题题目不可以减一而这道题可以单纯判断奇偶#include <algorithm>#include <iostream>#include <cstring>using namespace std;int n;int main(){ cin >> n; if (n % 2 == 1) cout <&l

2021-07-11 17:57:20 97

原创 P1044 栈题解

啊啊啊!这是一个经典题,我竟然发现了一个宝藏题解,那个大佬实在太太太牛逼了!题目链接这是我看的一种方法递归#include <algorithm>#include <iostream>#include <cstring>#define xx first#define yy second#define ll long long#define L(i, j, k) for (int i = j; i <= k; i ++)#define R(i,

2021-07-10 18:47:47 74

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

太开心了前4个虽然wa了好多次但是还是写下来了因为long long wa了好几次A#include <algorithm>#include <iostream>#include <cstring>#define xx first#define yy second#define ll long long#define L(i, j, k) for (int i = (j); i <= (k); i ++)#define R(i, j, k) f

2021-07-10 17:38:09 111

原创 P1498 南蛮图腾

题目链接分治先把第一个写出来然后更新左右两边 最后再更新上面完成一次 高度和宽度都乘二加倍#include <algorithm>#include <iostream>#include <cstring>using namespace std;int n;char a[3000][3000];int h = 2, w = 4;int main(){ cin >> n; memset(a, ' ', sizeof(a

2021-07-10 08:37:43 38

原创 div2#730题解

div#730把我打自闭了害!看开了赛后好好补题才是关键,没有翻不过的高山,只要努力成功会向我走来的!大家都一样嗷~A怎么说呢这道题是压倒我好心情的重要稻草淦·好题这道题思维 首先第一个坑你得开long long第二个不能模拟wa了3回。。。人间惨案不说了不说了#include <algorithm>#include <iostream>#include <cstring>using namespace std;typedef long lon

2021-07-09 09:30:35 109

原创 Max Sum Plus Plus

DPNow I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems.Now you are faced with a more difficult problem.Given a consecutive number sequence S1, S2, S3, S4 ... Sx, .

2021-07-07 22:30:28 74

原创 Educational Codeforces Round 110 (Rated for Div. 2)部分题解

A#include <algorithm>#include <iostream>#include <cstring>using namespace std;int a[10];int main(){ int t; cin >> t; while (t --) { for (int i = 1; i <= 4; i ++ ) { cin >>

2021-07-06 14:51:38 74

原创 牛客小白月赛35题解

一边做一边写的题解把每个题我出现的问题展现出来 防止大家踩坑了A这个题真的是一个大水题 谁来都是但是我竟然wa了一发。。。。string str;getline(cin,str);//整行读入stringchar str2[1024];cin.getline(str2,1024);//读入char数组我第一次交的时候是用的gets()编译错误(所以避坑 pat也是会编译错误#include <algorithm>#include <iostream>#in

2021-07-02 14:36:24 323

原创 一起来做题~欢乐赛6题解

这次题的还是比较注重思维(狗头A这道题我已经做过三次相同解法的题了题型很常见(位运算#include <algorithm>#include <iostream>using namespace std;long long a, b, t;int main(){ cin >> t; while(t --) { cin >> a >> b; while ((a | (a +

2021-07-01 21:51:45 50

原创 牛客一起来做题~欢乐赛5题解

真实爆零现场 好长时间没有码,手生了~(题的话说实话都是基础题 别骂了比赛不补题 等于没有比 补题抄题解 一月忘干净 训练法不对 亲人两行泪比赛不补题题解:这道题就是单纯的二分题目stl里面的二分函数安利一下binary_search:查找某个元素是否出现 binary_search(arr[],arr[]+size , indx)lower_bound:查找第一个大于或等于某个元素的位置 lower_bound(arr[],arr[]+size , indx)upper_bound:查找

2021-06-26 13:41:50 115

原创 2021届蓝桥杯B组详细题解

有的时候根本不用写代码来计算选择题,可以直接选择计算器或者是Excel;比如这次得A题我是用Excel写的,hhhA题 空间A题注意:8bit = 1B256 * 8 * (2^20) / 32 = 67108864 答案:67108864B题 卡片//暴力可解 时间复杂度不超过10^7- 10^8就ok#include <algorithm>#include <iostream>using namespace std;int a[10];int ma

2021-05-02 20:59:29 1369 1

原创 最短路(Dijkstra,Bellman-Ford,SPFA,Floyd算法)

寒假学了最短路算法,半懂不懂的,玩了一个假期以后彻底忘的干干净净;考完蓝桥杯,我要重新捡起最短路,不能再堕落了!!!这里是我一边学一边整理的自以为比较全的最短路合集了QwQ!最短路一、单源最短路1.所有边权都是正数朴素Dijkstra时间复杂度一般为O(n^2)堆优化Dijkstra算法时间复杂度一般为O(mlogn)2.存在负权边Bellman-Ford时间复杂度一般为O(nm)SPFA时间复杂度一般为O(m)最坏是O(nm)二、多源最短路Floyd算法时间复杂度O(n^

2021-04-20 12:01:30 199 2

原创 单链表的实现(数组模拟)

害,发现图论的题,那些数和图都需要用邻接表来存储,邻接表掌握不好还真难以学下去图论,所以今天来突击一下邻接表!!!在这里我们学习一种方法:用数组模拟邻接表单链表用数组模拟单链表实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k 个插入的数后面的数;在第 k 个插入的数后插入一个数。现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照

2021-04-20 10:42:40 184

原创 拓扑排序

感觉自己与别人差开好多了,好好学习,加油!!!今天就从拓扑排序开始叭拓扑排序定义拓扑排序应用于有向无环图(拓扑排序只有无环图才有,如果有环就不存在拓扑排序了)拓扑排序是图论中的一种的排序方法。拓扑排序就是把AOV图中各个顶点按照它们互相之间的优先关系排列成一个线性序列的过程。AOV图数据在定点上(用顶点表示活动,用弧表示活动间优先关系的有向图)方法1.在有向图中选一个没有前驱的顶点并且输出2.从图中删除该顶点和所有以它为尾的弧,即删除所有有关的边3.重复上述两步,直至全部已输出

2021-04-18 20:32:38 81

原创 判定质数和素数筛

首先我们来了解一下什么是素数:素数是除1以外,只有1和其本身的因数的数,比如说2,3,5,7,11如果我们平时没有学过是算法,基本上会用比较耗时的方法,就是从2穷举到n - 1第一种方法这种方法相对来说比较暴力,但是也是最容易想到的一种方法,但是对于一些数比较大的题目容易超时;时间复杂度为O(n)#include <stdio.h>int main(){ int n,c = 0; scanf("%d",&n); if (n == 1)

2021-01-30 09:29:51 93

原创 快速幂

快速幂,是真的香!!!快速幂快速幂:顾名思义就是用来计算一个数的次方的时候使用的。我们算x的n次方的时候,我们一般没有接触到快速幂的时候都会用while或者是for循环,循环n次;或者使用math头文件中的pow函数来直接计算;但是我们某一天发现数特别大的时候,以上这两种方法他会超时,这是我们就会寻找到一种解决这种问题的算法——快速幂。这里我们先列举一道题,我们学完这个知识后,我们用快速幂干掉他!!!DNA是所有真核生物的遗传物质,它由四种碱基组成。现在科学家要设计单链DNA,要穷举给定规定

2021-01-27 21:55:20 70 1

原创 stl易混点,难点对比看

stl是一种容器,里面可以用的函数非常多,所以作为初学者,str的函数不同的容器容易搞混,这里我们就整体指明一下。来吧,展示!!!STL容器vectorstackqueuepriority_queuesetstringmappair大概就这几种我在这里集中说一下~~声明vector vector <int> a; vector <string> b; vector <int> a(10); //声明长度为10的

2021-01-26 21:52:17 111

原创 二分、高精度、快排和并归排序模板及其简单例题

QWQ看这里喽!!!首先我们介绍一下二分:二分二分分为实数二分和整数二分;实数二分相对于整数二分来说简单,但是如果我们掌握了整数二分和实数二分的模板,那对你来说不是简单多了,话不多说上模板。实数二分int bsearch_0(double l, double r)\\传进去左右边界{ while (r - l > 1e-4)//r - l > 1e-4 其实这个数不是一定的根据具体情况去分析,当然了可以直接for(int i = 0; i < 200; i++)循环他2

2021-01-24 19:15:39 562

原创 C语言练习总结——二维数组和二维字符数组

二维数组和二维字符数组二维数组首先,我们来介绍一下二维数组。二维数组:int a[5][10]是内含50个int类型值的数组。可以想象一下:可以是一个5行10列的数据表。输入某一个数的行数和列数,就可以查找这个元素的数值。下面我们用一个小例子解释一下。int main(){ int a[2][10]; int b = 0; for (int i = 0; i < 2; i++) { for (int j = 0; j < 10;

2020-12-09 17:27:02 3251

空空如也

空空如也

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

TA关注的人

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