![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
acm
qq_45712954
这个作者很懒,什么都没留下…
展开
-
map+思维:B - Journey Planning
题目链接:https://vjudge.net/contest/399382#problem/B题解:相同一串的满足的条件是bj-bi=j-i,所以通过移项可以得到bj-j=bi-i,所以是个一对一关系,所以自然想到了map,相同的累加即可,最后得出最大值输出。代码:#include<iostream>#include<map>#include<string>#include<algorithm>#define maxx 400000using原创 2020-10-07 18:47:06 · 134 阅读 · 0 评论 -
水题+模拟:B - Fix You
题目链接:https://vjudge.net/contest/398579#problem/B题解:因为只有R和D,所以最后一定会到达最右边一列,或者最下边一行。所以只需要统计这两行即可。代码:#include<iostream>#include<algorithm>#include<cstdlib>#include<string>#define maxn 120using namespace std;typedef long long l原创 2020-10-05 20:36:45 · 55 阅读 · 0 评论 -
水题+尝试:A - Suborrays
题解:输出1——n的数,并且满足或运算大于等于j-i+1,即随便输出,怎么输出都对代码:#include<iostream>#include<algorithm>#include<cstdlib>using namespace std;typedef long long ll;int main(){ int n; int k; cin>>n; for(int i=0;i<n;i++) { cin>&g原创 2020-10-05 20:17:51 · 66 阅读 · 0 评论 -
题意+思维:C - Celex Update
题目链接:https://vjudge.net/contest/398291#problem/C题意:给出图形,只能向下向右原创 2020-10-05 19:54:49 · 79 阅读 · 0 评论 -
水题:B - Maria Breaks the Self-isolation
题目链接:https://vjudge.net/contest/398291#problem/B题意:一个人请客,每个客人到达条件是至少有ai个人到达(包括请客的人),试求最大的到达人数排序和序号比较即可#include<iostream>#include<algorithm>#include<cstdio>#include<string>#define maxn 110000typedef long long ll;ll a[maxn];原创 2020-10-05 17:51:03 · 86 阅读 · 0 评论 -
水题:A - Park Lighting
题目链接:https://vjudge.net/contest/398291#problem/A题解:一个灯能照亮相邻两个格,判断如果照亮所有格,需要几个灯代码#include<iostream>#include<algorithm>#include<cstdio>#include<string>using namespace std;int main(){ int t; scanf("%d",&t); whi原创 2020-10-05 17:48:01 · 47 阅读 · 0 评论 -
C组group4:B - Sequential Nim
题目链接:https://vjudge.net/contest/397850#problem/B题解:简单博弈题,后手赢,无论是否为1,都会交换先后手,但当输入大于1的时候,后手赢。所以谁是后手,谁赢代码:#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<algorithm>#define maxn 100100typedef原创 2020-09-30 21:32:00 · 74 阅读 · 0 评论 -
二分模板
一、查找某个数(1<=i<=n)代码:int erfen(int k)//假设数组是递增数组,精确查找是否存在k,下标在(0<=i<n)范围里{ int left=0,right=n; while(left<right) { int mid=(left+right)/2; if(a[mid]<k) { left=mid+1; } else原创 2020-09-28 19:30:29 · 55 阅读 · 0 评论 -
B组group1:M - Maratona Brasileira de Popcorn
题目链接:https://vjudge.net/contest/397282#problem/M题解:这个题的意思时:c个人比赛吃东西,吃的东西必须满足两个条件:1.一个人吃的东西必须相邻2.每个地方的东西必须一个人全吃完求最小的时间这个题其实就是判断:把一段连续的数切c份,判断最大值最小是多少。对于这种求最小值得问题来说,可以二分总的大小来判断代码:#include<iostream>#include<algorithm>#include<string&g原创 2020-09-28 16:46:37 · 100 阅读 · 0 评论 -
B组group1:A - Artwork
题目链接:https://vjudge.net/contest/397282#problem/A题解:一个人能否从左下角到达右上角,而不经过圆形连接的区域。算法是储存左下角的点,逐个判断与他相邻的点,如果能4够到达右上角,那么该人到达不了右上角,注意每次路径都需要重置。代码:#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace原创 2020-09-27 21:21:59 · 986 阅读 · 0 评论 -
B组group1:H - Hour for a Run
题目链接:https://vjudge.net/contest/397282#problem/H题意:水题,给定总长度,判断他的1/10,2/10……9/10是多少。(不能小于这个值)代码:#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;int main(){ int n;//圈数个数 int k原创 2020-09-27 19:45:17 · 91 阅读 · 0 评论 -
B组group1:B - Buffoon
题目链接:https://vjudge.net/contest/397282#problem/B题解:水题,判断是否输入的数比第一个数大代码:#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;int main(){ int n;//个数 int maxn,fl=0;//最大值,标志量 int原创 2020-09-27 19:34:49 · 147 阅读 · 0 评论 -
C组 group3:D - Grid-00100
题目链接:https://vjudge.net/contest/397104#problem/D题解:填一个01矩阵,满足sum和为k,且f(A)=(max®−min®)2+(max©−min©)2最小。这个题思路是尽可能让每一行,每一列的1的个数都相等,因此f(A)只存在两种情况,一种是每一行,每一列个数相等,那么的话f(A)即为0;当无法满足的时候max减去min也是1,所以f(A)即为2。现在考虑如何分布,因为均匀分布,所以每一行至少分布sum/n个。当无法整除时,前几行应该分布sum/n+1个原创 2020-09-27 19:04:03 · 49 阅读 · 0 评论 -
C组group3:C - A Cookie for You
题目链接:https://vjudge.net/contest/397104#problem/C题解:两类饼,两类人,一类人只吃多的,一类人只吃少的,判断会不会有人不够吃我们可以设两类饼为maxx,minn。当minn<只吃少的一类人数的时候,肯定不够吃。剩下的情况只吃少的够吃,我们发现当两类饼的个数相同时,如果饼的个数小于人的个数,那么不行,反之,可以。但这时候需要考虑能率能不能吃到一样多,即只吃多的那个人数是否大于等于maxx-minn,当满足这个条件就只需要判断maxx+minn与两类人原创 2020-09-27 16:56:34 · 50 阅读 · 0 评论 -
C组group3:B - Magical Calendar
题目链接:https://vjudge.net/contest/397104#problem/B题解:这个题意是日历有k天,判断当标记i天(1<=i<=r)时有多少种情况,每种情况需要满足以下两个条件:1.r天时连着的,不能断2.每一种情况不能通过平行移动变成其他种情况所以需要分两种情况跨行和不跨行。当跨行时,因为需要满足第一个条件,所以i必须大于r,并且此时有k种情况。当不跨行时,因为需要满足第二个条件,所以只有1种。然后循环累加即可。因为当i小于r时,是个等差数列,所以等差数列求和公原创 2020-09-27 16:45:10 · 88 阅读 · 0 评论 -
C组group3:A - Magical Sticks
题目链接:https://vjudge.net/contest/397104#problem/A题解:给定数字k,判断数字1,2,3,……,k。当经过两个数相加成另一个数,所得的数最多的个数。因为时是等差数列,当k为奇数时,因为会落下一个数,此处为最大的数,所以此处的和即为(n-1)/2+1,结果即为(n+1)/2当k为偶数时,当加和为中间的数相加时,个数最多。其实就相当于,如何从1加到100,是(1+100)*50,这样的话就是101的个数最多,那么个数即为(k)/2。所以答案为(n+1)/2。原创 2020-09-27 16:32:30 · 54 阅读 · 0 评论 -
C组group2 C - Game On Leaves
题目链接:https://vjudge.net/contest/396831#problem/C题解:给你一个连通无向图,可以选择去除某个点,与他相邻的边也会去掉。判断两个人如果选择最优算法的话,谁会赢。当x相邻的点的个数小于等于1时,直接先下的人会赢。当x相邻的点的个数大于1时初始的可以画为这样。最后会变成这个样子:当遇到这种情况时,谁先下谁输,所以只需要判断之前下的点的个数。即n-3个点的奇偶性。当为奇数时先下的赢;偶数时后下的赢代码:#include<iostream>#in原创 2020-09-27 16:20:01 · 99 阅读 · 0 评论 -
C组group2 A:Subsequence Hate
题目链接:https://vjudge.net/contest/396831#problem/B题解:判断经过多少步1变成0或者0变成1的转换可以不出现101,010这样的序列。即只出现全是0,或者全是1,或者一边全是0,一边全是1的序列。循环0的终点即可,然后在从开头循环到终点判断第一个数,从终点+1序列循环到字符串的终点判断第二个数需要变化的次数,然后综合四次取最小值即可。代码:#include<iostream>#include<string>#include<原创 2020-09-27 09:42:23 · 124 阅读 · 0 评论 -
C组group2 A - Odd Selection
题目链接:https://vjudge.net/contest/396831#problem/A题解:给定n个数,选定k个数,判定和是否能可以是偶数。开始想得是用dfs,但是tl了。后来发现偶数加对结果没有影响,所以只需要考虑奇数所能参与的范围,然后奇数是否可以是加偶数个,即和为偶数代码:#include<iostream>#include<string>#include<algorithm>using namespace std;#define max原创 2020-09-26 21:55:00 · 1176 阅读 · 0 评论 -
C组group1 C - Powered Addition
题目链接:https://vjudge.net/contest/396219#problem/C题解:判断一个数列通过加2的k次方变为非递减数列的最小操作数。多个项加减1次2的k次方算一次操作。一个项加减多个2的k次项算多次。这个地方只需要统计输入的最大值,与其后面的值的最大差值。最后计算可以经过多少次可以弥补这个差值。最后答案即为次数代码:#include<iostream>#include<string>#include<algorithm>#defin原创 2020-09-26 21:39:33 · 190 阅读 · 0 评论 -
C组group1 B - Sorted Adjacent Differences
题目链接:https://vjudge.net/contest/396219#problem/B题解:这个题是求出按两个数绝对值差递减进行排序,有一个误区,相等的不一定需要靠着,比如说5 -2 4 8 6 5,可以是5 4 5 6 -2 8,所以只需要排好序后,从中间开始,不断的向两边拓展,就会差值不断减小。代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath&原创 2020-09-26 11:43:44 · 102 阅读 · 0 评论 -
C组group1 A. Filling Diamonds
题目:A. Filling Diamonds题目链接:https://codeforces.com/problemset/problem/1339/A题解:水题·:判断长度为n的区域能最多放多少个边不相邻的三角形,当每个都放正中间放的时候,个数最多。所以个数为n个代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int main(){ int t原创 2020-09-26 09:46:36 · 87 阅读 · 0 评论 -
天梯刷题第四题: Fire! UVA - 11624
题目链接:https://vjudge.net/problem/UVA-11624#author=zmyhh题目解析:此题一言难尽啊, 首先因为最短路径,很容易判断是bfs题。但是需要注意以下几点:1.火和人不能在一个队列里,因为只能存放一个数对,所以需要不断地查找火,然后复杂度便成为了O(n的3次方),超时。解决方法是火放在一个队列,人放在一个队列,统计火到达该点的最短时间,然后又变成一个bfs题,最后比较火到达该点的时间和人到达该点的时间,如果人到达时间少,便可以加入队列。2.因为输入字符串的长度原创 2020-09-12 09:40:42 · 80 阅读 · 0 评论 -
天梯刷题第三题: Prime Ring Problem HDU - 1016
题目链接:https://vjudge.net/problem/HDU-1016题解:水题,典型的dfs题,判断相邻的两个数之和是否为质数代码:#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<string>using namespace std;int ans[30];//储存答案int n;//n的个数bool zh原创 2020-09-11 20:22:10 · 56 阅读 · 0 评论 -
天梯刷题2: Pots POJ - 3414
题目链接:https://vjudge.net/problem/POJ-3414题解:此题是判断几步之后最快能到达最终状态,典型的bfs。需要注意:1.开始的杯子是空的2.储存步骤的新方法:结构体定义string来储存步骤编号和序数,string数组来表达代码: #include<iostream>#include<algorithm>#include<cstring>#include<queue>#include<iomanip>原创 2020-09-11 19:49:41 · 93 阅读 · 0 评论 -
天梯赛刷题1:Prime Path
题目链接:https://vjudge.net/problem/POJ-3126题解:给两个数,判断如果只改变一个位数且只为素数的话,最少经过几步到达另一个数。如果无法到达,便输出imposs最短路径问题,可以用dfs来写,需要注意一个地方,不会仅存在只改变他们不同的位置,因此需要从1到9遍历。代码:#include<iostream>#include<algorithm>#include<string>#include<cstring>#in原创 2020-09-11 16:55:39 · 167 阅读 · 0 评论 -
刷题第十九题:Hangman Judge
题目链接:https://vjudge.net/problem/UVA-489#author=DaNao题解:需要注意如果猜对了的前提下,无论才多少次错的,都win算法是统计正确的字符串字符是否出现,并统计出现的个数,然后循环猜测的的字符串,如果正确,变为false,如果正确的个数等于出现的个数,那么就win,如果错误次数超过6次,则lose,其余情况为平局代码:#include<iostream>#include<cstring>#include<algorith原创 2020-09-07 18:12:57 · 123 阅读 · 0 评论 -
刷题第18题:Ancient Cipher
题目链接:https://vjudge.net/problem/UVA-1339题解:此题是给定两个字符串,判断其中一个字符串可以经过整体替换字符,调整顺序,能不能变为另一个字符串水题 由小到大排序后只需要判断字符的数量是否相同即可代码:#include<iostream>#include<string>#include<algorithm>#include<cstring>using namespace std;int a[26],b[26原创 2020-09-07 17:32:34 · 103 阅读 · 0 评论 -
刷题第十七题:Kickdown
题目链接:https://vjudge.net/problem/UVA-1588题解:这个题需要注意以下几个方面1.注意循环中的break判定条件是循环完后2.不用考虑把短串反过来3.需要考虑短串放在长串上。从一段到另一端代码:#include<iostream>#include<string>#include<algorithm>#include<cstring>#define maxn 110using namespace std;原创 2020-09-07 09:27:00 · 120 阅读 · 0 评论 -
刷题第十六题:Box
题目链接:https://vjudge.net/problem/UVA-1587题解:判断6组边是否能构成长方体需要满足两个条件:1.六组边两两相对形成3组2.三组边构成ab,ac,bc的形式代码:#include<iostream>#include<algorithm>#include<cstdio>#include<string>#include<cstring>using namespace std;int k,kk;原创 2020-09-05 20:30:05 · 375 阅读 · 0 评论 -
刷题第十五题:All in All
题目链接:https://vjudge.net/problem/UVA-10340题解:本题是判断一个串是否能由另一个串组成,不一定连续,但必须按顺序水题代码:#include<cstring>#include<string>#include<iostream>#include<algorithm>using namespace std;string sma,big;int main(){ while(cin>>sma原创 2020-09-05 19:29:28 · 138 阅读 · 0 评论 -
刷题第十四题:Repeating Decimals
题目链接:https://vjudge.net/problem/UVA-202题解:找循环数的题循环的本质是余数一样,所以只要判断是否与前面的余数相同即可代码:#include<iostream>#include<algorithm>#include<cstring>#include<string>using namespace std;int main(){ int digit[10000]; int yu[10000];原创 2020-09-05 18:19:03 · 128 阅读 · 0 评论 -
刷题第十三题:DNA Consensus String
题目链接:https://vjudge.net/problem/UVA-1368题目解析:字符串处理题意是找出与所给多个字符串差距和最小的字符串,如果满足多个采用字典序最小的那个注意:1.字典序最小,所以不能是AGCT,必须是ACGT2.因为纵向比较,所以只需要循环每一列找出个数最多的那个代码:#include<iostream>#include<algorithm>#include<string>#include<cstring>usin原创 2020-09-05 17:24:26 · 64 阅读 · 0 评论 -
刷题12:Crossword Answers
题目链接:https://vjudge.net/problem/UVA-232题解:需要注意:1.across和down每个位置的标号一样,只是顺序不一样。2.输出的格式:要写%3d,并且数字和字符串之间·是‘.’3.注意各种细节问题代码:#include<iostream>#include<string>#include<cstring>#include<algorithm>#include<cstdio>#define m原创 2020-09-05 11:18:43 · 562 阅读 · 0 评论 -
刷题11:Puzzle
题目链接:https://vjudge.net/problem/UVA-227题目解析:此题需要考虑以下几方面1.每次循环后需要加入getchar();2.操作步骤那个地方要等它全部处理完再break代码:```cpp#include<iostream>#include<string>#include<cstring>using namespace std;char ch[7][7];//分布int fl[7][7];//标志变量,表格char原创 2020-09-04 22:28:06 · 202 阅读 · 0 评论 -
刷题第十题:Periodic Strings
题目链接:https://vjudge.net/problem/UVA-455题解:水题:判断最短循环部分循环判断即可代码: #include<iostream>#include<cstring>#include<string>#define maxn 110using namespace std;char s[maxn];int len;bool check(int k){ int q=len/k;//一共多少段 for(in原创 2020-09-04 17:08:01 · 90 阅读 · 0 评论 -
刷题九:Digit Counting
题目链接:https://vjudge.net/problem/UVA-1225题解:水题暴力即可代码:`#include<iostream>#include<cstring>#include<string>using namespace std;int main(){ int num; int N; int a[10]; cin>>num; while(num--) { mems原创 2020-09-04 12:26:53 · 101 阅读 · 0 评论 -
刷题第八题:Molar mass
题目链接:https://vjudge.net/problem/UVA-1586题解:字符串处理:需要单独考虑只有一个元素的情况,以及最后一位加不上,需要单独加代码:#include<iostream>#include<cstring>#include<string>#include<iomanip>#define maxn 110#define C 12.01#define O 16.0#define H 1.008#define N原创 2020-09-04 12:19:48 · 108 阅读 · 0 评论 -
刷题第七题:Score
题目链接:https://vjudge.net/problem/UVA-1585题解:水题代码:#include#include#include#define maxn 110using namespace std;int main(){char s[maxn];//最小int len;int n;int ans,fl;cin>>n;while(n–){fl=0;ans=0;cin>>s;for(int i=0;s[i]!=0;i++){i原创 2020-09-04 11:02:28 · 958 阅读 · 0 评论 -
刷题第六题:Circular Sequence
题目链接:https://vjudge.net/problem/UVA-1584题解:水题,字符串处理,不要忘了加0字符代码#include#include#include#define maxn 110using namespace std;int main(){char s[maxn];//输入char ss[maxn];//转换char ans[maxn];//最小int len;int n;cin>>n;while(n–){cin>>s;原创 2020-09-04 10:56:15 · 79 阅读 · 0 评论