您的位置:首页 > 其它

CSU_BMW正式组队纪念赛出题+部分解题报告

2012-08-27 20:37 471 查看
忙的要死了,要给三月月赛调试服务器,出题,还要筹办下个月的校赛,还有考研复试,还有毕业设计……这俩孩子得知考研成绩公布,咱的分数应该算过了初试了,竟然想到来办一场纪念赛,倒是颇为感动。。。

事情太多,只出了两个水题,水了两个的朋友别忘了感谢我~~

A:搞两个双端队列,一个是最大数单调队列,一个是最小数单调队列,一遍扫过去,随时把答案更新为两个队列较短那个(当较短那个比答案长的时候)

B:还好测试的时候写了个n^2logn的代码水了过去,所以加强了数据。对X坐标排序,枚举Y坐标的低端,n^2扫描。

C:把这串数字的过程倒过来看,双端DP。

D:这题就是坑爹的,去看斌仔的题解吧。

EFG没看,参考M-O和Burn-E的题解。

H:printf的双引号里这个东西,就是个字符串常量,可以用一个定义好的字符串变量代替,那么~~

char buf[100] = "%d";printf(buf, 1);好玩吧。

while(gets(buf))
{
for(i = 0; buf[i] != '"'; ++ i);
for(j = strlen(buf); buf[j] != '"'; -- j);
strncpy(prin, buf + i + 1, j - i - 1);
prin[j - i - 1] = 0;
for(; buf[j] != ','; ++ j);
sscanf(buf + j + 1, "%d,%d,%d", &a, &b, &c);
printf(prin, a, b, c);
printf("\n");
}


不过直接交上面代码会WA的,有什么和思路无关的trick就不讲了~~~



I:统计三种字母的个数,输出个数最少的那个就可以了。

while(gets(buf))
{
b = m = w = 0;
for(i = 0; buf[i]; ++ i)
{
b += buf[i] == 'b' || buf[i] == 'B';
m += buf[i] == 'm' || buf[i] == 'M';
w += buf[i] == 'w' || buf[i] == 'W';
}
printf("%d\n", min(b, m, w));
}


其他题详细解题报告:

Staginner解题报告

Swimming解题报告

题目链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: