zoukankan      html  css  js  c++  java
  • Codeforces Round #658 (Div. 2)

    B. Sequential Nim

    题意

    nim博弈的简化版,要求只能从第一堆开始取。最后取得胜利

    思路

    从后往前推,第n堆是必胜态,第n-1堆以及以前,如果只有1个石子,状态转换,如果多于一个石子,必胜(因为可以留一个也可以一个不留)。

    代码

    
    int a[100005];
    main(void)
    {
    	int t=read();
    	while(t--)
    	{
    		int n=read();
    		int ans=0;
    		for(int i=1;i<=n;i++)
    		{
    			a[i]=read();
    		}
    		int flag;
    		for(int i=n;i>=1;i--)
    		{
    			if(i==n)
    			{
    				flag=1;
    				continue;
    			}
    			if(flag==1&&a[i]==1)
    			{
    				flag=0;	
    			}
    			else if(flag==0&&a[i]==1)
    			{
    				flag=1;
    			}
    			if(a[i]>=2)
    			{
    				flag=1;
    			}
    		}
    		if(flag==1)
    		{
    			printf("First
    ");
    		}
    		else 
    		{
    			printf("Second
    ");
    		}
    	}
    }
    

    C1. Prefix Flip

    题意:

    给定两个字符串a,b,将a的前i位取反然后翻转,使之变为b。

    分析:

    因为不要求最小的步骤,但是时间上复杂度要小于 (n^2),考虑简化过程,现将a变为全0或者全1
    再将b变为全0或者全1,然后a的步骤正序输出,b的步骤倒序输出即可

    代码

    
    char a[1005],b[1005],c[1005];
    main(void)
    {
    	int t=read();
    	while(t--)
    	{
    		int n=read();
    		scanf("%s",a+1);
    		scanf("%s",b+1);
    		for(int i=1;i<=n;i++)
    		{
    			c[i]=a[i];
    		}
    		int p=n;
    		vector<int >q;
    		while(p)
    		{
    			if(a[1]!=b[p])
    			{
    				q.push_back(p);
    				for(int i=1;i<=p;i++)
    				{
    					if(c[p-i+1]=='1')
    					a[i]='0';
    					else a[i]='1';
    				}
    			}
    			else 
    			{
    				q.push_back(1);
    				if(a[1]=='0')a[1]='1';
    				else a[1]='0';
    				c[1]=a[1];
    				q.push_back(p);
    				for(int i=1;i<=p;i++)
    				{
    					if(c[p-i+1]=='1')
    					a[i]='0';
    					else a[i]='1';
    				}
    			
    			}
    			p--;
    			for(int i=1;i<=n;i++)
    			{		
    				c[i]=a[i];
    			}
    		}
    		int l=q.size();
    		printf("%d",l);
    		for(int i=0;i<l;i++)
    		{
    			printf(" %d",q[i]);
    		}
    		printf("
    ");
    	}
    }
    
    
  • 相关阅读:
    Git与GitHub的基本使用
    HTML&CSS基础-外边框
    HTML&CSS基础-内边框
    SHELL脚本编程变量输入
    GoLang基础数据类型-切片(slice)详解
    GoLang基础数据类型--->数组(array)详解
    SHELL脚本编程的运算符
    SHELL脚本编程变量详解
    HTML&CSS基础-边框简写属性
    GoLang基础数据类型--->字符串处理大全
  • 原文地址:https://www.cnblogs.com/wangqianyv/p/13359052.html
Copyright © 2011-2022 走看看