如何解决脱衣舞游戏:8月午餐时间挑战
Tzuyu在生日那天给Nayeon带了N个细胞(编号从1到N)。该条由序列A1,A2,…,AN来描述,其中对于每个有效i,如果Ai = 1,第i个单元将被阻塞,如果Ai = 0,则第i个单元将被释放。子瑜和娜燕将使用它来玩游戏,并遵循以下规则:
玩家交替轮流;娜燕先打 最初,两个玩家都在地带之外。但是,请注意,此后在游戏中,他们的位置总是不同的。 在每个回合中,当前玩家应选择一个空闲单元并移到那里。此后,该牢房被阻塞,玩家无法再次移动到该处。 如果这是当前玩家的第一回合,则她可以移动到任何空闲单元。 否则,她只能移动到左右相邻单元格之一,即从一个单元格c,当前玩家只能移动到单元格c-1或c + 1(如果有空)。 如果玩家在回合期间无法移至空闲单元,则该玩家将输掉比赛。 娜燕和子瑜都很聪明,所以他们都发挥得最好。既然是娜燕的生日,她想知道她是否可以打败子瑜。找出谁赢了。
输入 输入的第一行包含一个整数T,表示测试用例的数量。 T测试用例的描述如下。 每个测试用例的第一行包含一个整数N。 第二行包含N个以空格分隔的整数A1,A2,…,AN。 输出量 对于每个测试用例,如果Nayeon赢得比赛,则打印一行包含字符串“是”的单行,如果Tzuyu赢得比赛,则打印一行“否”(不带引号)。
约束
1≤T≤40,000
2≤N≤3⋅105
每个有效i0≤Ai≤1
A1 = AN = 1
所有测试用例的N之和不超过106 子任务 子任务1(50分):每个i(2≤i≤N-1)Ai = 0
子任务2(50分):原始约束
示例输入
4
7
1 1 0 0 0 1 1
8
1 0 1 1 1 0 0 1
4
1 1 0 1
4
1 1 1 1
示例输出
Yes
No
Yes
No
说明 案例1:由于Nayeon和Tzuyu都发挥了最佳状态,因此Nayeon可以开始通过移动到单元格4,该单元格随后将被阻塞。子瑜必须选择3号单元格或5号单元格,它们也将被阻塞。然后,娜燕只剩下第4单元旁边的一个空单元(一个子瑜没有挑);在她移动到那里之后,子瑜无法移动,因此她输了比赛。
示例2:不管娜燕刚开始要移动到哪个格,慈瑜总是可以击败她。
我的方法:
#include <iostream>
using namespace std;
int main() {
// your code goes here
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int cnt=0,temp=0;
for(int i=0;i<n;i++)
{
if(a[i]==0)
temp++;
if(a[i]==1)
{
if(temp>cnt)
{
cnt=temp;
temp=0;
}
}
}
int chk=0;
temp=0;
for(int i=0;i<n;i++)
{
if(a[i]==0)
temp++;
else
{
if(temp>cnt/2)
chk++;
}
}
if(chk>1)
{
cout<<"No"<<"\n";
}
else
{
if(cnt%2==0)
cout<<"No"<<"\n";
else
cout<<"Yes"<<"\n";
}
}
return 0;
}
我的代码没有传递子任务2并给出WA。
问题链接:https://www.codechef.com/problems/ARRGAME
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。