A:Medal Ranking in ZJCPC
题意:给出各个高校在ZJCPC上得的奖牌数(金牌,银牌,铜牌),然后找出our university 的排名,如果奖牌数相等,our university最优先。
B:Kaprekar's Constant
题意:前面一部分描述了Kaprekar's constant(黑洞数)的性质。对于任意的4位整数,只要至少有2位数字不同,经过一定的(2)(3)操作后总能在7步内变为6174.又因为是允许前导零的,所以小于4位的正整数一定有以上性质(0XXX,00XX,000X),那么考虑4位以上的数,对于4位以上的数经过一遍(2)(3)操作后一定是4位以上的数或者为0,不可能变为6174,所以4位以上的数一定是No;小于等于4位数,不满足的是1111 2222 3333……即n % 1111 == 0;
So if(log10(n) >= 4 || n % 1111 == 0) puts(“No”);
else puts(“Yes”);
此外还可以模拟下题意中的操作,如果7步内能变为6174,就输出Yes,否则输出No。
C:密保卡
题意:就是给一个数字然后在密保卡中找哪三个数可以拼接成这个数,
这里理解上有个问题,同一个位置的数字能不能被使用多次,我理解着是不能重复使用,
这里题目严谨性就有点问题,所以提示中加了限制这三个数的位置不能一样
其实这个题目愿意是暴力枚举把密保卡中所有可能的排列找出来,跟需要查找的数进行比较,如果一致就输出
题目中限制输出的条件,其实就是要求按照行优先,再按照列优先暴力枚举,把所有的组合都找出来,然后与输入的比较下,相等的话输出其坐标。
另外这题更有技巧的是可以先拆分开了三个数之后分别去表中查找,时间上会更快;
D:Beautiful world outside!
题意:按照题目中的图,在给定d1 d2 r w h 判断矩形是否在视野中。
只要最大视野的直径2 * r1 = 2 * (d1 + d2) / d1 * r 大于矩形的对角线就行了;
即4 * r1 * r1 >= w * w + h * h;
E:真三界新星
题意:题意大家都应该看懂的,理解下团灭的意思,如果5个人在同一时刻死了的话,就算团灭一次。
部分代码:
typedef struct Node
{
char name[1001];
int score;
int kill[101],killed[101];
Node() //初始化各类信息;
{
score = 0;
memset(kill,0,sizeof(kill));
memset(killed,0,sizeof(killed));
}
}node; //记录一个人的各种信息;
node ans[6];
for(i = 0; i < 5; i++)
{
ans[i].score += (2 * a(杀人数) + b(被杀数));
while(a--)
{
scanf("%d",&k);
ans[i].kill[k]++; // 记录人物i在k时刻杀了几个人;
}
while(b--)
{
scanf("%d",&k);
ans[i].killed[k]++; // 记录人物i在k时刻被杀了几次;
}
}
for(i = 0; i <= 100; i++)
{
Min1 = min(ans[j].kill[i].Min1); (j = 0 ~ 4);
Min2 = min(ans[j].killed[i].Min2); (j = 0 ~ 4);
other += (Min1 * 5 + Min2 * 3);//计算团灭与被团灭所有人所加的分数。
}
sort and printf("%s %d\n",ans[i].name,ans[i].score + other);
F:2D Ballistik Game II
题意:求出最小的撞击次数,使得能打通一列;
G:Internet Protocol
题意:给出数据库中的IP段对应的地址。对于N次询问,输出其地址。
看题目的规模10^5 2 * 10^3,如果暴力查找的话O(10^8)显然超时,此题二分查找时间复杂度O(2 * 10^3 * log(10^5));
H:Abbreviation
题意:给出一串文字,输出其缩写,小写要变大写
ps:不会用代码实现的同学,可以咨询我。