这道题目刚拿到手挺吓人的,应该算是CSP所有第一题里,题目最长的一道了。但是我立马想到了唐迟老师说的“纸老虎”,哈哈,所以遇到看似棘手的问题不要怯场,说不定题目本身并不难。
这种问题主要考察对题目的理解能力,编程时手边须备好草稿纸,必要的时候要通过画图等来帮助理解。另外,如果一上来实在没有思路,就先照着“样例输入”敲,一步一步思考,最后可能会水到渠成,迎刃而解。
第一遍调试的时候,因为没有仔细审题,把遇到“绿灯”时的倒计时牌数字也算了进去,只得了60分(所以一定要认真审题,仔细分析输入输出样例及说明,尤其是这种题目较长的题)。
仔细看了样例说明后改过来了,总时长大约25min左右。
#include<cstdio>
const int N = 100+10;
int r,y,g;
int n;
int k[N],t[N];
int main()
{
scanf("%d%d%d",&r,&y,&g);
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%d",&k[i],&t[i]);
}
int ans=0;
for(int i=0;i<n;i++)
{
switch(k[i])
{
case 0: //通过
case 1: //红灯
// case 3: //绿灯不用加!
ans+=t[i];
break;
case 2: //黄灯
ans+=(t[i]+r);//r g yr g yr g y...
break;
default:
break;
}
}
printf("%d\n",ans);
return 0;
}