1.上午8-10在看结构体的知识准备冻手启航的oj
2.下午2.30-6.0在做菜鸟杯的补题 发现很多题其实是能做出来的只是当时真的乱了 就不想想了没有思路了 现在题目刷多了发现解题最重要的就是思路了,只要思路有了代码总是能打出来的就像第补题的第一题摆烂王 因为做题的时候是把他放到最后去做的就是已经离考试街结束只有一个小时了 当时好不容易刷出来界面又提交不了搞的自己很烦 第一遍AC%67 然后就不想debug了当时出现了懒惰心里因为思路没有理清楚,下午重新想了一下发现吧思路理清楚了做起来还是很简单的。
问题 A: 白兰王
描述
吉首大学优秀大学生小勋很努力,很优秀,但是现在他想要成为白兰鸽,开始摆烂了。
此时另一位三好学生大鹏也决定开摆,为了争夺吉首大学白兰王,他们决定决一死战,决战内容如下:有一个字符串 S ,只包含数字 0−9 ,且长度为奇数,两人轮流选择字符串中的一个数字删掉,当字符串只剩下 11 个字符时游戏结束。如果最后字符串开头的数字是 2 ,则小勋获胜,否则大鹏获胜。
小勋先手(因为他是吉首大学优秀大学生),两人都希望自己能成为本届白兰王,并且保证两人都会做出最优决策,问最后谁能获得这至高无上的称号。
格式
输入格式
第一行输入一个整数 n(13≤n≤105) 代表字符串S的长度,保证n为奇数
第二行输入字符串 S
输出格式
若小勋获胜,输出 yyds ,若大鹏获胜,输出 orz
样例
样例输入 Copy
13
2222222234567
样例输出 Copy
yyds
思路: 记录输入字符串的长度len>=11 能删除的字符串lose=len-13(是2的倍数)
大鹏想赢 第一个必须要不是2 所以大鹏只会选择删除2
小勋想赢 第一个必须要是2 小勋只会选择删除第一个2前面的所有数字
跳过前lose/2 个2
去看第lose/2+1个2前面有多少个非2的数记为count
如果count>lose/2 大鹏获胜
如果count<=lose/2 则小勋获胜
代码
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n;
char a[100001];
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
scanf("%c",&a[i]);
}
int len;
len=strlen(a);
int lose;
lose=len-11;
int c=0,d=0;
for(i=0;i<len-1;i++)
{
if(a[i]-'0'==2)
{
d++;
}
else
{
c++;
}
if(d==(lose/2)+1)
{
break;
}
}
if((lose/2)<c)
{
printf("orz");
}
if((lose/2)>=c)
{
printf("yyds");
}
}