综合题(比赛)
文章平均质量分 75
AtCoder,CF,POJ,USACO等网站
睡神...
一切伟大的思想,都有一个微不足道的开始。。。
展开
-
AtCoder 196 C,D
C - Doubled传送门题目意思很简单:就是问1-N中有多少个像12341234,1212,3434这样的折叠的数又是解释跟没解释似的N最大是10^12,其实我们直接暴力一半10610^6106就行了。将每一个数构造出它的折叠数,看是不是在1-N以内就行了。#include <bits/stdc++.h>using namespace std;typedef long long ll;ll rebuild(ll x){ ll num=1,y=x; while(y)原创 2021-03-28 11:53:10 · 214 阅读 · 0 评论 -
CF 1497:A-C2
Codeforces Round #708 (Div. 2)A题B题C1C2A. Meximization其实说白了,这道题就是把数组按从小到大输出,重复的放在最后本人用的set,略显复杂#include <bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { int n; set<int> s1; multiset<int>原创 2021-03-25 21:55:49 · 177 阅读 · 0 评论 -
[USACO12MAR]Tractor S
Tractor S洛谷题号思路:本题数据不是很大,顶多1000^2;再加上本题没有要求路径最短,只是要求最小挪动干草堆的代价。最好的解法就是:01BFS1、两个队列,一个是代价为0的队列,一个是代价为1的队列。2.进行BFS,不断改进松弛3.大思想:尽量走没有干草堆的地方,避开有干草的地方,直到走不下去为止。#include <bits/stdc++.h>using namespace std;const int MAXE=1002;struct Poin.原创 2020-08-05 21:38:30 · 353 阅读 · 0 评论 -
POJ 2411 Mondriaan‘s Dream
Mondriaan's DreamPOJ题目一道看起来超级难,但代码很短的状压DP还是用01来刻画图,每一个11的小正方形是0,所以说横着放的12的长方形0的个数总会是2的倍数,也就是说不可能有连续的奇数个0;竖着放的1*2的长方形看做是1,比如说第1行是1,那么第二行的那个位置就是0,竖着放,上下各一半嘛。f[i,j]表示第i行的形态为j时,前i行的方案总数,j是用十进制数记录的N位二进制数。第i-1行的形态k能转移到第i行的形态j,只有一下两种情况:1.j和k位与运算的结果.原创 2020-08-11 21:23:09 · 195 阅读 · 0 评论 -
POJ 2353 stars:一维树状数组
一维树状数组POJ 2353 stars 题址 记住一句话:在我左边的,且高度小于等于我的星星的数量就是我的 level主要任务是统计一颗星星的左下方的星星数量因为数据是按照y坐标递增顺序排列的,所以y坐标已经没有用了。所以一维树状数组就可以搞定了。下面直接贴代码:#include <bits/stdc++.h>using namespace std;const int MAXV=32010;int c[MAXV];int star[15005];int i,t,n,原创 2020-06-27 15:07:28 · 210 阅读 · 0 评论 -
Codeforces Round #660 (Div. 2)
A题https://codeforces.com/contest/1388/problem/A我们发现第一个nearly prime是6,第二个是10,第三个是14。所以说6+10+14=30以上的都可以满足。但是第四个数,假设是d,不能和6,10,14重复。那怎么改呢?15也是一个nearly prime,所以我们只要将14+1,d-1即可。#include <bits/stdc++.h>using namespace std;int main(){ int .原创 2020-08-01 21:57:38 · 244 阅读 · 0 评论 -
Codeforces Round #653 (Div. 3) AB 题解
A. Required Remainder解法很简单,是个人应该都知道#include <bits/stdc++.h>using namespace std;int main(){ int n,x,y; int t; cin>>t; while(t--) { cin>>x>>y>>n; int div=(n-y)/x; if(div*x+y<=n) cout<<div*x+y<<原创 2020-07-03 22:45:31 · 212 阅读 · 0 评论 -
AtCoder 195 B,C,D
AtCoder 195https://atcoder.jp/contests/abc195/tasksC - Commac题题面很简单,就是三位一断,加逗号。问1到n这些数中,一共要加多少个逗号?翻跟没翻差别不大n是<=10^5,所以可以直接暴力。D - Shipping Center我们有n个背包,m个盒子。每个背包都会有个容量和价值,每一个box也会有一个容量。然后会有q个查询,每个查询中,都会给个l,r,意思是这个区间的box都不可用,问用剩余盒子装出的最大价值为多少?原创 2021-03-22 19:07:05 · 329 阅读 · 0 评论 -
AtCoder ABC 190 ABCD
a原创 2021-02-08 19:15:17 · 452 阅读 · 2 评论 -
AtCoder 189 ABCDE(思路+代码)
AtCoder ABC189 简单记录…A题#include <bits/stdc++.h>using namespace std;int main(){ char c1,c2,c3; cin>>c1>>c2>>c3; if(c1==c2&&c1==c3) cout<<"Won"; else cout<<"Lost"; return 0; } B题#include <bits/st原创 2021-01-28 19:30:22 · 400 阅读 · 0 评论 -
AtCoder 184 E
184 E题目地址虽然是E题,但其实就是一个标准的bfs不用走重复路线,因为bfs总是选择最优,走重复毫无意义具体细节,在代码里标注了。#include <bits/stdc++.h>using namespace std;#define please return#define AC 0struct node{ int x; int y; int step;//步数 };node make_node(int d,int e,int f){ node ret;原创 2020-12-21 20:01:53 · 156 阅读 · 0 评论 -
AtCoder 184 C
AtCoder 184C - Super Ryumahttps://atcoder.jp/contests/abc184/tasks/abc184_c典型的分类讨论①1或0步到直接特判。②2步到与终点距离不大于3的点存在数组A,与起点距离不超过3的点存在数组B。(1)横坐标值差与纵坐标之差的奇偶性相同;(判断斜线的可能性)(2)对于A中的一个点可以一步走到终点;(3)对于B中的一个点可以一步走到起点;(4)A与B有共同区域。③把棋盘按照国际象棋的方式黑白染色,容易发现两次斜.原创 2020-12-13 20:50:44 · 555 阅读 · 0 评论 -
AtCoder 183 C
AtCoder 183 Chttps://atcoder.jp/contests/abc183/tasks/abc183_c题目大意:有n个城市,从第i个城市到第j个城市,所需的时间是T[i][j]。你现在要从第一个城市出发,遍历所有城市,并最后回到第一个城市。问在这所有路径中,所需的时间总和正好等于k的有几条?n最大是8,问题不大。解法1:全排列分析样例1,我们就能发现:头尾两个1肯定是雷打不动的,只是中间的2 3 4在全排列。我们可以用next_permutation()函数全排原创 2020-12-13 20:42:51 · 225 阅读 · 0 评论 -
AtCoder 176 E
E - Bomber题目网址首先考虑导弹所在最多的行和列,然后如果交叉重叠那就行+列-1即可。但后来发现可能会有很多组同样多的行和列,这时候如果一个一个去判断将会很慢(30万)但其实如果你看到题目说的导弹最多数量为30万,你就会发现本题关键。#include <bits/stdc++.h>using namespace std;int p1,p2,a[300005],b[300005];set<pair<int,int> > st;vector&l原创 2020-09-15 20:19:30 · 119 阅读 · 0 评论 -
AtCoder 176 C
C-Step题目网址题目解释:给你一个有n个数的数列,保证每第i个数都要>第i-1个数,如果小于那么第i个数要一直加到第i-1个数的值为止,这就是题目中所说的要添加的板凳数。代码很简单:#include <bits/stdc++.h>using namespace std;typedef long long ll;int n,a[200003],last;ll ans;int main(){ cin>>n; for(int i=1原创 2020-09-14 20:58:23 · 160 阅读 · 0 评论 -
AtCoder 176 D 求各位大佬帮忙
D - Wizard in Maze题目网址题目解释:简单来说就是有一个H*W的格子,你有两种走法:1.上下左右走 2.在5*5的格子里穿梭(消耗魔法)问最少需要用多少魔法才能走到目标格子双端队列这题解法应该就是双端队列,能走方案1不走方案2方案1放在队首,方案2放在队尾。还请大佬帮我看一下我的程序到底哪里有问题?#include <bits/stdc++.h>using namespace std;int h,w,sx,sy,ex,ey;int ma..原创 2020-09-14 20:23:02 · 177 阅读 · 0 评论 -
AtCoder 177 D题
D-Friends题目连接简单翻译:有n个人,给你m条事实:如果a和b是朋友,b和c是朋友,那么a和c也是朋友。现在想要把这n个人分成若干个小组,每个小组中的每一个人都不是朋友,至少要分多少组?简单并查集求并查集中最大的元素个数便是最少的分组数量。#include<bits/stdc++.h>using namespace std;const int N=2e5+5;int n,m,ans,fa[N],sum[N];//fa[i]表示元素i的父节点 inl..原创 2020-09-13 18:02:08 · 192 阅读 · 0 评论 -
Atcoder172 C - Tsundoku 题解
C - Tsundoku题目描述:两个书桌:A和B。A书桌上有N本书,B书桌上有M本书。读A书桌上的第i本书需要a[i]分钟,读B书桌上的第i本书需要b[i]分钟。选择一个书桌,从最上面的书开始读,读完就放到最下面(至于是A的开头还是B的开头,无所谓,可以交叉)。最多给你k分钟,按照这样的规则拿书,最多可以拿多少本书?样例解释:3 4 240 //A上有三本,B上有4本,一共给你240分钟60 90 120//a[]80 150 80 150//b[]3第一次:读A最上面的书,原创 2020-06-29 19:53:51 · 993 阅读 · 4 评论 -
Atcoder171 ABC 解题报告
171 Tasks这次的AB两题简直太水了,直接贴代码A题:#include <bits/stdc++.h>using namespace std;int main(){ string s; cin>>s; for(int i=0;i<s.size();i++) if(s[i]>='A'&&s[i]<='Z') s[i]='A'; else s[i]='a'; cout<<s<<endl原创 2020-06-29 19:55:37 · 345 阅读 · 0 评论 -
Atcoder169 ABCD 解题思路报告
ABC 169A题太水,无需解释,跳~B题 B - Multiplication 2题目解释:就是A1A2…An,让你计算结果,如果大于10^18,就输出“-1”*思路非常简单,与其做乘法不如做除法#include <bits/stdc++.h>using namespace std;typedef long long ll;ll n;int main(){ std::ios::sync_with_stdio(false); cin>>n; ll a原创 2020-06-27 19:14:47 · 303 阅读 · 0 评论 -
Atcoder151 D-Maze Master 题解
这是一道较为规整的BFS,代码有点长Maze Master 题址题目解释:就是有一个长为H,宽为W的二维表,全部都是’.‘或’#’。你任意从一个‘.’走到另一个’.’(不可以斜着),在所有的路中,最长的那条是多少?宏观思路:在主函数中枚举每一组起、止点,记录下他们的行列坐标,以此来做宽搜。宽搜返回来的值,还要比一下max。宽搜很好做,用queue队列就OK了配合代码讲一下:struct pos{ //结构体,行列号和步数(值) int x; int y; int step;};原创 2020-06-27 09:14:38 · 441 阅读 · 0 评论