哈尔滨理工大学新生赛
来源:互联网 发布:交换机端口down 编辑:程序博客网 时间:2024/06/11 04:10
A:
仔细读题ORZ
A.涂山红十字会Time Limit: 1000 MSMemory Limit: 256000 KTotal Submit: 1121 (338 users)Total Accepted: 246 (234 users)Special Judge: NoDescription
涂山小超最近总觉得身体不舒服,比如玩久了手机会头晕,吃多了会觉得撑,喝多了凉水会觉得塞牙,于是他决定去涂山红十字会做一个全面的身体检查。为了诊断结果的准确,他打算去看n个医生,每个医生的诊断都需要前面所有医生的诊断,所以小超必须按照顺序去看医生,即按照doctor 1,doctor 2,doctor 3…doctor n的顺序。小超可以从最后一个医生那里得到检查的最后结果。
涂山红十字会的医生工作时间有一点奇怪,doctor i在第si天开始工作,工作时间间隔di天。即,doctor i在第si,si+di,si+2*di,… 天是工作时间。
医生检查需要很长的时间,所以小超一天最多只能看一个医生。现在,他想知道他最少需要多少天能看完所有的医生,你能告诉他吗?
Input输入数据有多组,每组数据第一行输入一个整数n(1 ≤ n ≤ 1000),表示小超需看医生的数量。接下来n行输入,每行两个整数si,di (1 ≤ si, di ≤ 1000),含义如题。
Output对于每组输入数据,输出一个整数表示小超看完所有医生需要的最少天数,每组输出占一行。
Sample Input3
2 2
1 2
2 2
2
10 1
6 5Sample Output4
11代码:
#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<stdlib.h>using namespace std;int main(){ int i,n; while(~scanf("%d",&n)) { int ans=0,op,time; for(i=0;i<n;i++) { scanf("%d%d",&op,&time); while(ans>=op) { op+=time; } ans=op; } printf("%d\n",ans); } return 0;}
B:
B.算法竞赛入门经典Time Limit: 1000 MSMemory Limit: 256000 KTotal Submit: 1333 (447 users)Total Accepted: 384 (361 users)Special Judge: NoDescription
小八刚进大学就参加了学校的ACM集训队,好开心呀~ 刚刚接触编程的小八找到一本编程界的武林秘籍 —— 《算法竞赛入门经典》(刘汝佳),好想快点看完呀。可是除了编程还有好多事情呢,每天都要上课,还要跑早操,还想睡懒觉……
计划能动性很强的小八很快把自己接下来n天的working-time列出来了,表示自己每天的工作秒数,剩下的时间就可以学习武林秘籍,并且假定自己学完需要t秒,已知小八从第一天开始阅读,空闲时间全部用来阅读,你能告诉她,小八从开始阅读到读完共需要多少天吗?
Input输入数据有多组,每组数据第一行输入两个整数n和t,(1 ≤ n ≤ 100, 1 ≤ t ≤ 106),分别表示天数和读完武林秘籍需要的秒数。第二行输入n个整数 ai (0 ≤ ai ≤ 86400),表示小八n天里的working-time。
Output对于每组输入数据,输出小八读完武林秘籍需要的天数,如果小八不能在n天之内看完,输出0。每组输出占一行。
Sample Input2 2
86400 86398
2 86400
0 86400Sample Output2
1代码:
#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<stdlib.h>using namespace std;int main(){ int n,time,i; while(~scanf("%d%d",&n,&time)) { int t=0,www,day=0,ans,flag=0; for(i=0;i<n;i++) { day++; scanf("%d",&www); t=t+86400-www; if(t>=time&&flag==0) { ans=day; flag=1; } } if(t>=time)printf("%d\n",ans); else printf("0\n"); } return 0;}
D:
D.貂蝉的试炼Time Limit: 1000 MSMemory Limit: 256000 KTotal Submit: 367 (189 users)Total Accepted: 183 (167 users)Special Judge: NoDescription
公元2017年11月19日,涂山小八正在专注的和小伙伴五黑,突然一道白光,回过神来,小八已经站在一个陌生的地方,红爸爸、蓝爸爸、暴君、主宰…随着耳边响起“欢迎来到王者农药”,对面走来熟悉的貂蝉小姐姐,小八恍然明白自己是站在王者农药的战场上。
貂蝉:“我知道你在疑惑什么,现在你可以选择接受或不接受我的试炼,如果你接受并通过了,我可以回答你的所有疑问,并且送你回去。相反,你将继续留在这等待。”
小八:“……接受(ノ`Д)ノ另外,你是在cosplay吗?”
貂蝉:“不是(ノ`Д)ノ,这是一场关于力量和智慧的考验。决斗开始时,我将向你抛出n块魔法水晶。魔法水晶具有跟踪作用,除非你破解上面的魔法,否则一定会被攻击。如何破解?每块魔法水晶上有个神秘攻击值,是古代花丸幼稚王国消失已久的罗马数字,只要你快速转换成阿拉伯数字并大声喊三遍,水晶球就会失效。”
貂蝉:“我看你骨骼清奇,是开黑界的奇才,那就给你几点提示吧。
1. 罗马数字基本字符: I、V、X、L、C、D、M,分别表述阿拉伯数字1、5、10、50、100、500、1000。
2.重复数次:一个罗马数字重复几次,就表示这个数的几倍。
3.右加左减:
(1)在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。
(2)在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字。
(3)左减的数字有限制,仅限于I、X、C。比如45不可以写成VL,只能是XLV。但是,左减时不可跨越一个位值。比如,99不可以用IC(100-1)表示,而是用XCIX([100-10]+[10-1])表示。(等同于阿拉伯数字每位数字分别表示。)
(4)左减数字必须为一位,比如8写成VIII,而非IIX。
(5)右加数字不可连续超过三位,比如14写成XIV,而非XIIII。
4.数码限制:同一数码最多只能连续出现三次,如40不可表示为XXXX,而要表示为XL。
以上为阿拉伯数字转罗马数字的规则,而你需要破解对应罗马数字的阿拉伯数字是多少。”
小八:“不懂。”
貂蝉:“看样例(ノ`Д)ノ”
作为小八队友的你,快点帮他回到现实世界,然后愉快的开黑吧。
Input输入数据有多组,每组数据输入一个罗马数字n,(1≤n≤3999)。
Output对于每组输入数据,输出罗马数字对应的阿拉伯数字,每组输出占一行。
Sample InputVIII
XIX
XXXIX
XXI
XLISample Output8
19
39
21
41代码:
#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<stdlib.h>using namespace std;char s[100];int main(){ while(~scanf("%s",s)) { int i,len=strlen(s),ans=0; for(i=0;i<len;i++) { if(s[i]=='I'&&s[i+1]=='V')ans-=1; else if(s[i]=='I'&&s[i+1]=='X')ans-=1; else if(s[i]=='X'&&s[i+1]=='L')ans-=10; else if(s[i]=='X'&&s[i+1]=='C')ans-=10; else if(s[i]=='C'&&s[i+1]=='D')ans-=100; else if(s[i]=='C'&&s[i+1]=='M')ans-=100; else if(s[i]=='I')ans+=1; else if(s[i]=='V')ans+=5; else if(s[i]=='X')ans+=10; else if(s[i]=='L')ans+=50; else if(s[i]=='C')ans+=100; else if(s[i]=='D')ans+=500; else if(s[i]=='M')ans+=1000; } printf("%d\n",ans); } return 0;}
E:
E.时空之门Time Limit: 1000 MSMemory Limit: 256000 KTotal Submit: 1451 (435 users)Total Accepted: 368 (355 users)Special Judge: NoDescription
话说上回涂山小八在队友的帮助下成功通过“貂蝉的试炼”,于是就可以回去了。貂蝉小姐姐一挥手带她来到一扇门前。
貂蝉:“此门名为时空之门,穿过此门就可以回去。只是要想开启此门需要密钥,密钥可从门上刻的那些密文之中得到。如何得到?寻找每行字符串之中有多少个if,全部找出之后即可开启此门。”
小八:“……”
Input输入数据有多组,每组数据输入一行字符串(包含空格),输入持续到文件结束,每行数据长度不长于1000个字符,输入字符区分大小写。
Output对于每组输入数据,输出所包含的 if 数目并换行,每组输出占一行。
Sample Inputififififififi
iififfifSample Output6
3代码:
#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<stdlib.h>using namespace std;char s[1005];int main(){ while(gets(s)) { int len=strlen(s),i,ans=0; for(i=0;i<len-1;i++) { if(s[i]=='i'||s[i]=='I') { if(s[i+1]=='f'||s[i+1]=='F') { ans++; } } } printf("%d\n",ans); } return 0;}
G:
G.真假小妖Time Limit: 1000 MSMemory Limit: 256000 KTotal Submit: 1236 (482 users)Total Accepted: 425 (387 users)Special Judge: NoDescription
风和日丽的一天,涂山小八正在悠哉的晒着太阳。突然,一群小妖涌了进来,一问才知道又是东方平平捉弄她,使了个法术造了一群涂山小妖的盗版。现在分不清真小妖和假小妖了。
小八微微一笑,开始有条有理的组织起来鉴别真假。原来涂山小妖都有一个ID数字,这些ID数字都是特别的回文数字。平平不知道此事,造的假小妖的ID数字都不是回文数字。
看在小八都这么机智的份上,帮帮她吧?
Input 输入数据有多组,每组占一行,输入一个整数n(1≤n≤109),表示小妖的ID数字。Output对于每组数据,如果这个小妖是真小妖的话,输出“yes”,否则输出“no”(输出不包括引号),每组输出占一行。
Sample Input12345
12321
2Sample Outputno
yes
yes代码:
#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<stdlib.h>using namespace std;char s[20];int main(){ while(~scanf("%s",&s)) { int i,flag=1,len=strlen(s); for(i=0;i<len/2;i++) { if(s[i]!=s[len-i-1]) flag=0; } if(flag)printf("yes\n"); else printf("no\n"); } return 0;}
H:
H.小妖的下属Time Limit: 1000 MSMemory Limit: 256000 KTotal Submit: 832 (212 users)Total Accepted: 81 (67 users)Special Judge: NoDescription
话说上回涂山小八成功解出真假小妖的难题,东方平平觉得很不开心,仿佛受到了嘲笑。于是他又造了一批假的小妖,气鼓鼓的找到了小八。
平平:“哼,我造的这批小妖ID号也有特殊属性。简单来说,一个小妖所领导的小妖个数就是它的ID号可以分解的方式数,所谓分解,就是把n分解成若干个连续正整数之和。如ID=15的小妖,下属有3人,因为它有(1,2,3,4,5),(4,5,6),(7,8)共3种分解方式。现在我想问你,每个小妖的下属个数是多少,赌上我刚买的一打妖馨斋“一品五彩棒”棒棒糖。”
如果你能帮小八解出来的话,小八会把一品五彩棒分给你哦~
Input输入数据有多组,每组输入一个整数n(1≤n≤109),表示小妖的ID数字。Output对于每组数据,输出这个小妖的下属个数,每组输出占一行。
Sample Input3
15
2788Sample Output1
3
3思路:
连续的整数,说明这个数减去最小的连续整数能够整除,如(15-1-2)%2==0,(15-1-2-3)%3==0,(15-1-2-3-4-5)%5==0。
代码:
#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<stdlib.h>using namespace std;int main(){ int n,i; while(~scanf("%d",&n)) { int ans=0,k=1; for(i=2;i<n;i++) { k+=i; if(n-k<0)break; if((n-k)%i==0)ans++; } printf("%d\n",ans); } return 0;}
I:
I.丢失的数字Time Limit: 800 MSMemory Limit: 256000 KTotal Submit: 1541 (252 users)Total Accepted: 79 (71 users)Special Judge: NoDescription
据说圣玛格丽特学院的图书馆上方住着一个金色妖精——维多利加,她有金色闪亮的头发和翡翠绿的双瞳,是个娇小宛如陶瓷娃娃般美丽容颜的少女。
“以智者知名,为愚者代言。”拥有智慧之泉的维多利加可是无所不知的哦~这不,数字收藏家涂山小八哭着跑来找她,说好盆友东方平平想送给她一个数字,但是自己的数字放的太乱了。
“我想找出我现在没有的最小正整数,让平平送给我,你能帮我找吗?”
嘛~维多利加这么可爱,当然会帮你啦~
Input输入数据有多组,每组数据第一行输入一个整数n(1≤n≤106),表示小八拥有的数字个数。第二行输入n个整数ai(-109≤ai≤109),表示小八拥有的数字。
Output对于每组输入数据,输出小八想让平平送给他的数字,每组输出占一行。
Sample Input3
1 2 0
4
3 4 -1 1
Sample Output3
2Hint数据量较大,建议使用scanf和printf输入输出。
桶排
代码:
#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<stdlib.h>using namespace std;int v[1000005];int main(){ int n,i,k; while(~scanf("%d",&n)) { for(i=0;i<n;i++) { scanf("%d",&k); if(k>0&&k<1000005)v[k]=1; } i=1; while(v[i++]); printf("%d\n",i-1); memset(v,0,sizeof(v)); } return 0;}
K:
K.电话拦截Time Limit: 1000 MSMemory Limit: 256000 KTotal Submit: 236 (78 users)Total Accepted: 41 (36 users)Special Judge: NoDescription
小八用了点手段得知对手公司要做一个欺诈电话拦截app,小八立刻通知公司开发组,火速开发一个优质的欺诈电话拦截app,抢先一步上线。
小组技术总监给了一个方案,需要你来实现一下,首先用户可以标记电话号,标记成快递、骚扰、欺诈等。用户每收到一个电话,立即上传号码,经查找数据库,输出当前号码被标记次数最多的类型,以及被标记次数。如果有多于一种类型被匹配为最多次数,按照欺诈、骚扰、快递的优先级输出。
你作为小组成员,负责后台逻辑开发,现采用快速开发方案,开发一个功能预览版本。测试组成员已拟定好一组测试数据。
Input输入数据有多组,每组数据先输入n(1≤n≤105)表示接下来的数据行数。接下来输入n行,输入按照时间顺序进行,有下面两种格式。
A 1234,表示接到一个电话1234。
B 1234 k,表示标记电话 1234 为快递。此处k、s、q分别表示快递、骚扰、欺诈。电话号码不超过20位。
Output对于每组输入数据,输入为A 1234格式时,根据历史标记数据,匹配相应规则后,输出一个结果:
k=n:表示匹配“此电话被标记为快递n次”。
s=n:表示匹配“此电话被标记为骚扰n次”。
q=n:表示匹配“此电话被标记为欺诈n次”。
N:表示目前未被标记过。
输入为B 1234 k/s/q格式时,输出Y,表示已记录。
每组输出占一行。
Sample Input7
A 1234
B 1234 k
A 1234
B 1234 k
B 1234 s
B 1234 s
A 1234Sample OutputN
Y
k=1
Y
Y
Y
s=2
代码:
#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<stdlib.h>using namespace std;char s[100005][30],zhan[30];int v[100005][3];int main(){ int n,i; while(~scanf("%d",&n)) { char fir; int www=0,i; getchar(); while(n--) { scanf("%c",&fir); if(fir=='A') { scanf("%s",zhan); for(i=0;i<www;i++) { if(strcmp(zhan,s[i])==0) { if(v[i][0]>=v[i][1]&&v[i][0]>=v[i][2])printf("q=%d\n",v[i][0]); if(v[i][1]>v[i][0]&&v[i][1]>=v[i][2])printf("s=%d\n",v[i][1]); if(v[i][2]>v[i][0]&&v[i][2]>v[i][1])printf("k=%d\n",v[i][2]); break; } } if(i==www)printf("N\n"); getchar(); } else { scanf("%s %c",zhan,&fir); for(i=0;i<www;i++) { if(strcmp(zhan,s[i])==0) { if(fir=='q')v[i][0]++; if(fir=='s')v[i][1]++; if(fir=='k')v[i][2]++; printf("Y\n"); break; } } if(i==www) { strcpy(s[www],zhan); if(fir=='q')v[www][0]++; if(fir=='s')v[www][1]++; if(fir=='k')v[www][2]++; printf("Y\n"); www++; } getchar(); } } memset(v,0,sizeof(v)); memset(s,0,sizeof(s)); } return 0;}
- 哈尔滨理工大学新生赛
- 哈尔滨理工大学新生赛(热身赛)
- 哈尔滨理工大学新生赛(题补)
- 【每日一题(20)】数圈圈 2017年哈尔滨理工大学新生赛低年级组
- 【每日一题(21)】轰炸区最优选取 2017年哈尔滨理工大学新生赛低年级组
- 2017年浙江理工大学新生赛
- 哈尔滨理工大学第六届程序设计团队赛网络同步赛
- 哈尔滨理工大学第六届程序设计团队赛—H
- 哈尔滨理工大学第六届程序设计团队赛—C
- 哈尔滨理工大学第六届程序设计团队赛—D
- 哈尔滨理工大学---沼跃鱼(待整理)
- 2323 Emirp(哈尔滨理工大学)
- 2318 Mod(哈尔滨理工大学)
- 2317 Game(哈尔滨理工大学)
- 2315 Time(哈尔滨理工大学)
- 浙江理工大学新生赛 B巴比伦花园 rmq+二分
- 浙江理工大学新生赛 B 巴比伦花园(RMQ)(二分)
- 【浙江理工大学2016年新生赛暨全国新生邀请赛】 J 萌新吃果果,ZSTUOJ 4286【模拟】
- mysql备份与恢复-xtrabackup
- 运维之监控与安全篇------5.zabbix监控
- 又是一个星期一
- Oracle Spacial(空间数据库)数据模型
- 使用GraphHttpClient调用Microsoft Graph接口
- 哈尔滨理工大学新生赛
- 服务器、计算机、工作站三者的区别
- 电能质量分析仪安装(access数据库版本 /WIN10系统) 出现
- 基于spring-boot的文件上传和下载(包括图片的压缩)--第一篇(Java代码)
- 使用Tesseract-ocr识别验证码,暴力破解某高校学生登录系统
- Hash冲突
- React Native下载打开pdf文件
- networkx学习
- 门电路加法