1.栅栏作画
题目大意:给定两个范围,求出范围共有几个不相同的数(开头或末尾的数不算)
【输入输出样例1】
paint.in | paint.out |
7 10 4 8 | 6 |
代码如下:
(此处采用在数组上打点的方法,因数据较小,不会超时)
#include<bits/stdc++.h>
using namespacestd;
int main()
{
freopen("paint.in","r",stdin);
freopen("paint.out","w",stdout);
int x,y,l,r,a[200]={},s=0;
cin>>x>>y;
cin>>l>>r;
for(int i=x;i<=y-1;i++)
{
a[i]=1;
s++;
}//因为是第一段,所以不用考虑已被覆盖的情况
for(int i=l;i<=r-1;i++)
if(a[i]==0) {a[i]=1;s++;}//若该点还未被覆盖则计数器加1
cout<<s;
return 0;
}
2.失去的母牛
题目大意:给定两个点想x,y,用每一步移动后离起点的距离是上一步时离起点距离的两倍(x+1,x-2,x+4)的方法算出从x到y需要几步。(注:x与y可能是任何关系:x<y,x=y,x>y)。
输入输出样例
输入样例:
3 6
输出样例:
9
代码如下(还没正式AC,仅供参考):
//单纯模拟,不多解释
#include<bits/stdc++.h>
usingnamespace std;
intmain()
{
freopen("lostcow.in","r",stdin);
freopen("lostcow.out","w",stdout);
int x,y,l,r,s=0;
cin>>x>>y;
if (x==y) {cout<<0;return 0;}//若x=y,则一步也不用走
if (x>y) {x=x+y;y=x-y;x=x-y;l=-1;}//若x>y,则交换x与y,使情况与x<y一样,但需要改变初始方向
else l=1;
r=0;
while(true)
{
if (x+l==y) //若走完这一次刚好到达 {s=s+abs(r-l);break;}
if (x+l>y)//若走完这一次超过了目的地{s=s+abs(r-abs(x-y));break;}
s=s+abs(r-l);
r=l;
l=l*(-2);
}
cout<<s;
return 0;
}
3.牛的基因组
题目大意:给定一个2*n行,m列的字符表(表中只有A,C,G,T四种字母)。若第i列的前n行与后n行有明显区别,则这是有用的一列,求共有几列是有用的。
样例输入输出
样本输入
3 8
AATCCCAT
GATTGCAA
GGTCGCAA
ACTCCCAG
ACTCGCAT
ACTTCCAT
样本输出
1
样例解释:只有第二列中前n行有的字符后n行都没有,后n行有的字符前n行都没有。
(此处不附代码)
4. 现代艺术
题目大意:给定一个矩阵,矩阵初始全为0,之后不断往里填充由1~9这种数字组成的矩阵(用过的数字无法再次使用)。
例:0000000000
0022201110
0022201110
0000000000
此处就填充了一个由1组成的矩阵和由2组成的矩阵。
问:当此表任意填充几个矩阵后,有几个矩阵是可能第一个填充的。
做法:不断去掉完整的矩阵,把去掉的地方根据周围数字补上该是的数字,直到最后没有不完整的矩阵,数出此时大矩阵内小矩阵的个数,就为答案。
样例输入:
4
2230
2737
2777
0000
样例输出:
1
样例解释:在本例中,只有颜色2可能是第一个被绘制的。颜色3显然是在颜色7之后画的,而颜色7显然是在颜色2之后画的。
(此处不附代码)
反思
本大周的信奥学习下来,我充分意识到自己的不足。也意识到初中学习信奥的时间不可能像小学那么多了。
或许之前的绍兴市一等奖让我有一些飘飘然了,我有些开始轻视信奥,觉得信奥其实也没什么,没难度。
C++的分数线降到了75分。这是个好消息。我自我估分75分,有希望能进。听到这消息时,我还很是兴奋的。
不过,当我看到自己的真实分数时,内心有一份震惊,有一份不感相信,差点哭出来,但又忍住了。我默默回到座位上,心里五味陈良。
这个分数像是一根警棍,敲醒了还在得意的我,将现在的我推向深渊,但将未来的我推向光明。
改这个字,说起来容易,做起来难,不过我想我相信我一定能做到,一定要做到……