zoukankan      html  css  js  c++  java
  • 【AGC052A】

    题目

    \(有T组询问\) \(每次给一个n\) \(3个01串\)\(这三个串每个都有n个0\)\(n个1\),\(求一个2*n + 1的字符串\)\(使他成为S1+S1,S2+S2,S3+S3的共同子序列\)

    思路

    昨晚去打了下\(AGC\),发现卡在\(A\)了,说明自己还没有到那个水准就是了
    构造题啊,我是不会做的。
    大概讲下证明过程,考虑这样的答案\(n*0 + n * 1 + 0\)
    下面证明充分性
    对于这样一个串\(S\),设\(k\)为该串末尾的\(1\)的数量
    那么我们在\(2 * S\)这个长度为\(4 * n\)的串中的前\(2 * n\)个字符里选择\(n 个 0\),再选上\(2 * n - k + 1 到 2 * n\)\(k\)\(1\),再在后面的串里选择\(n - k\)\(1\)
    此时我们知道我们必定还能再选上一个\(0\),否则同\(k\)的定义相悖。

    代码

    #include<bits/stdc++.h>
    #define ll long long
    
    ll t,n;
    
    char s[200005];
    
    int main(){
    	scanf("%d",&t);
    	while(t -- ){
    		scanf("%d",&n);
    		for(int i = 1;i <= 3;++i)
    		scanf("%s",s + 1);
    		for(int i = 1;i <= n;++i)
    		std::cout<<0;
    		for(int i = 1;i <= n;++i)
    		std::cout<<1;
    		puts("0");
    	}
    }
    

    还是要多加油啊

  • 相关阅读:
    node 命令
    nodejs项目搭建
    linux 安装与配置
    GestureDetector
    activity切换效果
    hadoop
    phonegap 自定义插件
    自定义控件-属性自定义
    zxing demo
    select 语句的执行顺序
  • 原文地址:https://www.cnblogs.com/dixiao/p/14501955.html
Copyright © 2011-2022 走看看