zoukankan      html  css  js  c++  java
  • 【JZOJ6375】华灵[蝶妄想]

    description


    analysis

    • 明显括号序长度是偶数,如果其中一个是奇数,那么只能让这奇数行或列是括号序

    • 对于两个都是偶数,需要分类讨论,假设(n<m)

    • 有一种是牺牲掉(nover 2)行,第一行全左括号,最后一行全右括号

    • ,比如这样,这个比较容易想到,答案是(m+{nover 2}-1)

    • 有一种是牺牲掉第一行列、最后一行列,结果剩下(n+m-4)行列全都可行

    • ,像这样构造,最后取两个中较优的


    code

    #pragma GCC optimize("O3")
    #pragma G++ optimize("O3")
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #define ll long long
    #define reg register ll
    #define max(x,y) ((x>y)?(x):(y))
    #define min(x,y) ((x<y)?(x):(y))
    #define fo(i,a,b) for (reg i=a;i<=b;++i)
    #define fd(i,a,b) for (reg i=a;i>=b;--i)
    
    using namespace std;
    
    ll n,m;
    
    int main()
    {
    	//freopen("T1.in","r",stdin);
    	freopen("butterfly.in","r",stdin);
    	freopen("butterfly.out","w",stdout);
    	scanf("%lld%lld",&n,&m);
    	if (n&1)
    	{
    		if (m&1)
    		{
    			fo(i,1,n){fo(j,1,m)putchar('(');putchar('
    ');}
    			return 0;
    		}
    		fo(i,1,n){fo(j,1,m/2)putchar('(');fo(j,1,m/2)putchar(')');putchar('
    ');}
    		return 0;
    	}
    	if (m&1)
    	{
    		fo(i,1,n){fo(j,1,m)putchar(i<=n/2?'(':')');putchar('
    ');}
    		return 0;
    	}
    	if (n+m-4>max(n,m)+min(n,m)/2-1)
    	{
    		fo(j,1,m)putchar('(');putchar('
    ');
    		fo(i,2,n-1)
    		{
    			putchar('(');
    			fo(j,2,m-1)putchar(!((i+j)&1)?'(':')');
    			putchar(')'),putchar('
    ');
    		}
    		fo(j,1,m)putchar(')');putchar('
    ');
    		return 0;
    	}
    	if (n>m)
    	{
    		fo(i,1,n/2)
    		{
    			fo(j,1,m/2)putchar('('),putchar(')');
    			putchar('
    ');
    			fo(j,1,m/2)putchar('(');
    			fo(j,1,m/2)putchar(')');
    			putchar('
    ');
    		}
    		return 0;
    	}
    	fo(j,1,m)putchar('(');putchar('
    ');
    	fo(i,2,n-1)
    	{
    		//fo(j,1,m)putchar((!(i&1) && j<=m/2) || ((i&1) && j>m/2)?')':'(');
    		fo(j,1,m/2)putchar(!(i&1)?'(':')'),putchar(!(i&1)?')':'(');
    		putchar('
    ');
    	}
    	fo(j,1,m)putchar(')');putchar('
    ');
    	printf("!@##!@
    ");
    	return 0;
    }
    
  • 相关阅读:
    创建者模式 -- 单例模式(反射&序列化)
    设计模式(总)
    并不是static final 修饰的变量都是编译期常量
    内部类和静态内部类的加载顺序
    所有的Java虚拟机必须实现在每个类或接口被Java程序 “ 首次主动使用 ” 时才初始化他们
    24 shell 管道命令与过滤器
    26 bash shell中的信号
    25 Linux中的信号
    23 shell 进程替换
    22 shell组命令与子进程
  • 原文地址:https://www.cnblogs.com/horizonwd/p/11625640.html
Copyright © 2011-2022 走看看