洛谷bug合集
回复的时间 bug
私信名称与实际不符
洛谷的 “群聊” 模式
发现新 bug 请与我私信。
题解:CF1956A Nene's Game
思路:此题看起来很复杂,其实仔细推一推可以发现是有规律的。
分两种情况:
当 $n\le min\left { a{i} \right }$ 时,答案为 $min\left { a{i} \right } -1$。
当 $n> min\left { a_{i} \right } $ 时,这时一个人都踢不了,所以答案为 $n$。
对于每一个 $n$,输出两种情况中的最小值即可。
代码:123456789101112131415161718192021#include<bits/stdc++.h>using namespace std;int t,k,q,a,n;int minn;int main() { cin>>t; for(int j=1;j<=t;j++) { minn=1145141919; cin>>k>>q; for(int i=1; i<=k; i++) { cin>>a; minn=min(minn,a);//求最小的a[i] } for(int i=1;i<=q ...
题解:CF1966B Rectangle Filling
题意:题目描述给定一个 $n\times m$ 的矩形,矩阵由黑白两种颜色组成,你可以进行一些操作,每次操作可以任选两个颜色相同格子,将以他们为对顶点构成的矩形染成与这两个点相同的颜色,问能不能将整个矩形染成相同的颜色。
有 $t$ 组数据。
输入格式第一行一个整数 $t(1\le t\le 10^{4} )$,表示有 $t$ 组数据。
每组数据的第一行为两个整数 $n,m(1\le n,m\le 500)$,表示矩形的行数和列数。
接下来 $n$ 行,每行 $m$ 个字符,表示矩形的初始颜色。
输出格式一共 $t$ 行,每行为 YES 或 NO,表示能否把这组数据中的矩形染成相同的颜色。
思路:我们可以发现如果有两个对角的颜色相同,那么可以直接将整个矩形染色。
如果没有对角颜色相同,我们可以尝试着把其中某一对对角染成相同的颜色,以达到第一种情况。
如果在其中一个角所在的边和列上都有与它不同的颜色,我们就可以将这个角染成与它相反的颜色。
按此方法枚举每个角即可。
代码:12345678910111213141516171819202122232425262728293031323334 ...
题解:UVA12414 Calculating Yuan Fen
题意其他大佬已经说得很清楚了,尤其是第一篇,所以我就不重复了。
思路:众所周知,string 库中有个很厉害的函数叫 to_string,它可以将一个数字转换为 string 类型,所以我们可以用它来解决题目中有关 ST 的操作。
但直接在 Dev 中引用这个函数会报错,所以我们要将编译器版本调为 C++11/14,具体方法见这。
解决了这个点,便直接模拟即可。
代码:12345678910111213141516171819202122232425262728293031323334353637383940#include<bits/stdc++.h>#include<sstream>using namespace std;string s;bool th(int st){ int len=s.size(); string fuck,sb; for(int i=0;i<len;i++){ string pj=to_string(int(s[i]-'A'+st)); fuck+=pj; } while(fuck.size()>3){ sb.cl ...
题解:AT_xmascon21_b Bad Mood
思路:这题 $1 \le M,N \le 10^{9}$,一眼就是找规律题,否则一般的图论题不会这么出的。
不难发现,$a=M+N+1$,$b$ 就是 $a+\frac{(N-2)\cdot (M-2)+N\cdot M}{4} $,化简后得 $\frac{M\cdot N+M+N}{2}+2 $,所以这道题就迎刃而解了。
数据会爆 int,记得开 long long。
代码:12345678#include<bits/stdc++.h>using namespace std;long long a,b;int main(){ cin>>a>>b; cout<<a+b+1<<" "<<(a*b+a+b)/2+2; return 0;}
题解:CF1932D Card Game
贪心题。
我们可以先把王牌放在一边,将普通牌的每一种花色按照数字从大到小排好,这样它们就可以互相抵消,最后每一组花色都会剩下 0 或 1 张牌,再用王牌将它们杀掉,如果王牌不够用,也就是说剩下的普通牌的数量比王牌多,就无解,输出 IMPOSSIBLE。
B3614 【模板】栈 题解
感觉用手工栈更简单。
思路:本蒟蒻不会用STL,所以只提供手工写法。
这样本题就变成模拟了。
要注意的是要用 unsigned long long,否则会 WA 两个点。
思路写成注释放代码了:123456789101112131415161718192021222324252627282930313233343536373839#include<bits/stdc++.h>using namespace std;unsbigned long long b[1145141],t,n,x,jj=1;//jj是栈顶,b是手工栈 string a;int main(){ cin>>t; for(int i=1;i<=t;i++){ cin>>n; for(int j=1;j<=n;j++){ cin>>a; if(a=="push"){ cin>>x; b[jj]=x; jj++;//栈顶往上移 } if(a=="pop"){ if(jj>1){//如果栈非空 ...
P1720 月落乌啼算钱(斐波那契数列) 题解
又来水题解了。
模拟做法:既然这题都给出了公式,那直接套上即可。
套的时候一定要注意括号的匹配。
AC代码1234567#include<bits/stdc++.h>using namespace std;double n;int main(){ cin>>n; printf("%.2lf",(pow((1+sqrt(5))/2,n)-pow((1-sqrt(5))/2,n))/sqrt(5));}
递归做法:此题正解肯定不是这样。
首先我们知道,斐波那契的公式是:
$f{1}=1,f{2}=1$
$f{n}(n>=3)= f{n-1}+f_{n-2}$
于是就有了递归。
1234567891011121314#include<bits/stdc++.h>using namespace std;int n;int fb(int x){ if(x==1||x==2) return 1; if(x==0) return 0; return fb(x-1)+fb(x-2);}int main(){ cin>>n; cout<&l ...
P1051 [NOIP2005 提高组] 谁拿了最多奖学金 题解
感觉这道题跟 P1093 有异曲同工之妙……(推广一下这道题的题解)。
这道题考结构体排序,至于具体的看上面的题解。
要注意的是 cmp 函数中要判断如果成绩相等就根据序号来排。
这里不过多废话,直接贴代码:123456789101112131415161718192021222324252627282930313233#include<bits/stdc++.h>using namespace std;struct node{ string name; int qm,bj,lw,jxj,xh; char gb,xb;}a[114];//变量名意义就是题目中各个量的首字母 bool cmp(node x,node y){ if(x.jxj==y.jxj) return x.xh<y.xh;//特判 return x.jxj>y.jxj;}int n,c;int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].name>>a[i].qm>>a[i].bj& ...
B3655 [语言月赛202208] 天天爱跑步 题解
此题是一道比噶家还简单的模拟题思路:首先要说明一下连续签到天数才会累加,开始我就因为这个而爆零。
输入 $v$ 时不用 $v{1},v{3},v{7}$ 地输,直接 $v{i}$ 就可以,不要被邪恶的出题人迷惑了双眼。
及时你签到时时连续签到天数不是 $3$、$7$、$30$、$120$、$365$ 但大于最低界限,也可以加活跃值(像 $day\ge 1 \ and \ day< 3$ 这样也会加连续签到1天的活跃值)。
然后……
直接模拟即可。
AC代码:123456789101112131415161718192021222324252627282930#include<bits/stdc++.h>using namespace std;int n,v[1145141],c,hyz;//c是连续签到的天数,hyz是活跃值bool f[1145141];int main(){ cin>>n; for(int i=1;i<=6;i++){ cin>>v[i]; } for(int i=1;i<=n;i++){ cin>&g ...
CSP-J20235分原因和反思(bushi)
母的csp-j2023T1bool数组开1e9+10直接RE,全部爆零,于是90变0;
T2没开long long见祖宗了,直接爆零,于是15变0;
T3在那研究了半个小时0是不是有理数,最终放弃,结果gmy告诉我输出0就能得10分,于是0变0;
好歹T4骗了5分;
总分:0+0+0+5=5;
反思:为啥bool数组开不了1e9+10!!!你谷都行!!!CCF我恨你!!!你评测机在哪!!!我要撅了它!!!就因为这个二等奖没了!!!
