zoukankan      html  css  js  c++  java
  • 贪心硬币

    贪心硬币

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int maxn=1e6+10;
    
    int pos[2*maxn];
    char str[maxn];
    int main()
    {
    	int text=0;
    		while(~scanf("%s",str+1))
    		{int cnt1=0,cnt0=0,ans=0;
    			for(int i=1;str[i];i++)
    			{
    				if(str[i]=='1')
    				{
    					cnt1++;   //1的个数 
    				}
    				else
    				cnt0++;
    				
    				int k=cnt1-cnt0+maxn;//为了temp不取负数,加上100000 
    				if(pos[k]||cnt1==cnt0)
    				{
    					ans=max(ans,i-pos[k]);//如果之前的temp差值有数的话,那么就更新新的,或者
    											//1和0的个数相等 那么就是当前位置是最大的 
    				}
    				
    				else
    				{
    					pos[k]=i;     //如果都不满足的话更新temp 
    				}
    				
    			}
    			
    			printf("%d %d
    ",++text,ans);
    		}
    	
     } 
    
  • 相关阅读:
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    Codeforces Round #551题解
  • 原文地址:https://www.cnblogs.com/shenxiaodou/p/12468651.html
Copyright © 2011-2022 走看看