Ants
题目描述:
jc大佬演讲比赛差一点就进决赛了,他很郁闷,所以又来了一堆小蚂蚁,看看大家有没有补题,补了就是水题了,没补就让你们也陪他郁闷郁闷(比赛期间禁止复制代码,互相交流,如若发现,取消资格!!!!!)
一队蚂蚁在一根水平杆上行走,每只蚂蚁固定速度 1cm/s. 当一只蚂蚁走到杆的尽头时,立即从秆上掉落. 当两只蚂蚁相遇时它们会掉头向相反的方向前进. 我们知道每只蚂蚁在杆上的初始位置, 但是, 我们不知道蚂蚁向哪个方向前行. 你的任务是计算所有蚂蚁都杆上掉落可能的最短时间和最长时间.
Input
第一行包含一个整数,给出测试实例数量. 每组数据开始有两个整数: 杆的长度 (单位:cm) 和杆上蚂蚁数量 n. 之后是 n 个整数给出每只蚂蚁从杆的最左边开始的位置, 且是无序的. 输入的每个整数都不大于 1000000 ,两个数字用空格分开.
Output
对于每组输入输出两个整数. 第一个整数表示所有蚂蚁从杆上掉落可能的最短时间(如果它们前行方向选择得当) ,第二个整数表示可能的最长时间.
Sample Input
10 3
2 6 7
214 7
11 12 7 13 176 23 191
Sample Output
4 8
38 207
分析:
当两只蚂蚁相遇后返回,则两者的时间交换,所以可以无视蚂蚁的区别,当两只蚂蚁相遇时它们保持原样交错而行。这样每只蚂蚁都是独立运动的,那么只要找每只蚂蚁掉下去的时间就行了。
这道题如果用cin输入则会超时,要用scanf。
CODE:
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int l,n,i;
scanf("%d%d",&l,&n);
int mi,ma,remi,rema,a;
remi=rema=0;
for(i=0; i<n; i++)
{
scanf("%d",&a);
mi=min(a,l-a);
remi=max(remi,mi);
ma=max(a,l-a);
rema=max(rema,ma);
}
printf("%d %d\n",remi,rema);
}
return 0;
}
Competitive Problem Setting
题目描述
Chiaki经常给各种比赛出题,每场比赛需要的题目数从3到25不等,因此对题目的管理显得非常重要。
为了方便管理,Chiaki决定给每个题目取一个只有3个字符的编码。对于一个标题为ss的题目,它的编码是s长度为3的前缀。
现在给出Chiaki出的n个题的标题,求出这n个题的编码是否互不相同。
输入描述
输入有多组数据。第一行有一个整数T,表示测试数据组数。然后对于每组数据:
第一行包含一个整数n (3≤n≤25),表示题目数目。
接下来n行,每行包含一个字符串si (3≤si≤25),表示第i个题目的标题。保证si
仅由英语小写字母组成。
保证所有数据中nn的和不超过1000。
输出描述
对于每组数据,如果这n个题目的编码互不相同,输出Yes,否则输出No
样例输入
2
23
rectangles
tables
knight
dice
pawn
drilling
thewaytobytemountain
stamps
byteanteantowns
circulargame
permutation
quasitemplate
cakes
diamond
cards
fishes
chess
typetwodebruijnsequences
fibonaccimachine
colouring
programmingcontest
watchmen
tram
3
abcd
abce
cccd
样例输入
Yes
No
样例解释 1
对于第1个样例,所有长度为3的前缀都互不相同,所以输出是Yes。
对于第2个样例,前两个题目的前缀都是abc,所以输出是No。
CODE:
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,i,j;
cin>>n;
string a[26];
bool flag=true;
for(i=0; i<n; i++)
{
cin>>a[i];
a[i]=a[i].substr(0,3); //截取字符串,从0开始,截取三个。因为只需判断前三个。
if(flag)
for(j=0; j<i; j++)
{
if(a[i].compare(a[j])==0) //判断相同
flag=false;
}
}
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}