zoukankan      html  css  js  c++  java
  • Juggling Troupe 打表找规律

    Juggling Troupe 打表找规律

    题解:

    这个居然是一个打表找规律的题目,不可思议,这个规律好难找。。。

    规律: 如果第 i 个位置是2,找到左边离它最近的0 设为L,找到右边离它最近的0 设为 R,

    那么对于区间 [L,R] ,位置 L+R-i 的数字变成0,其他都是1

    又发现每个2是独立的,即每个2可以不同时扔球,可以分开处理。所以最终的解法就是按照只有一个2的解法解决每个2即可。(这里有点不理解。。。)

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 1e6+10;
    int pre[maxn],last[maxn],cnt1,cnt2,ans[maxn];
    char s[maxn];
    
    int main(){
    	scanf("%s",s+1);
    	int n = strlen(s+1);
    	last[0] = n+1;
    	cnt1 = cnt2 = 0;
    	for(int i=n;i>=1;i--){
    		ans[i] = 1;
    		if(s[i]=='0') last[++cnt2] = i;
    	}
    	for(int i=1;i<=n;i++){
    		if(s[i]=='2'){
    			int j = pre[cnt1]+last[cnt2]-i;
    			if(cnt1) --cnt1;
    			if(cnt2) --cnt2;
    			if(j>i) last[++cnt2] = j;
    			else pre[++cnt1] = j;
    		}
    		else if(i==last[cnt2]) pre[++cnt1] = last[cnt2--];
    	}
    	for(int i=1;i<=cnt1;i++) ans[pre[i]] = 0;
    	for(int i=1;i<=n;i++) printf("%d", ans[i]);
    	printf("
    ");
    }
    
  • 相关阅读:
    9、UmbracoNewsSite:分页
    7、UmbracoNewsSite:新闻详情页
    6、UmbracoNewsSite:添加新闻分类
    5、UmbracoNewsSite:添加css和js文件
    3、UmbracoNewsSite:文档类型设置
    书单
    文章
    Django-rest framework框架
    Django框架
    前端快速入门
  • 原文地址:https://www.cnblogs.com/EchoZQN/p/13770254.html
Copyright © 2011-2022 走看看