A
A题比较简单,可将x,y直接输入后将所在行、列全部设为不可走。
如:
for(int i=0;i<k;i++)
{
int x,y;
scanf("%d%d",&x,&y);
hang[x]=1;
lie[y]=1;
}
最后一一检测行、列还有几条可以“横冲直撞”。
B
此题关于字符串,可以用结构体
struct node
{
char kemu[15];
int value;
};
来实现统一处理。
输入时当value<=0时,忽略此学生,进行下一组(或者continue):
for(int i=0;i<n;i++)
{
scanf("%s%d",a[i].km,&a[i].value);
if(a[i].value<=0) i--,n--;
}
接着sort一下,选择尽量多精英价值的学生,ans++;
sort(a+0,a+n,cmp);
C
这题数据十分大,所以枚举的思想可以靠边了。
设置1个(奇数)或2个(偶数)“顶峰”
D
这题数据着实水到令人发指(虽然我没过)。
涉及字符串,注意下标(1000)。
我觉得可以拿出一个a,从0开始往后比较c,找到了就拿下一个a:
while(t<strlen(c)) //t表示c的进度
{
if(c[t]==a[t1]&&!c_yn[t]) t1++; //t1表示a的进度,c_yn表示这个字符是否被查过水表,找到就换下一个
t++;
}
最后如果c中不包含a,则直接输出No:
if(t1!=strlen(a)) return !printf("No");
b也一样的方法。
程序走到最后,说明应输出Yes