zoukankan      html  css  js  c++  java
  • [JZOJ] 5935. 小凯学数学

    由Noip2018初赛的知识得,a|b + a&b = a+b

    设计一个区间dp,设(f[l][r][x])表示区间([l,r])能否构成(x),数据不大,转移暴力枚举
    复杂度(O(n^3 imes MAXN^3))

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    
    using namespace std;
    
    inline int rd(){
      int ret=0,f=1;char c;
      while(c=getchar(),!isdigit(c))f=c=='-'?-1:1;
      while(isdigit(c))ret=ret*10+c-'0',c=getchar();
      return ret*f;
    }
    #define space() putchar(' ')
    #define nextline() putchar('
    ')
    void pot(int x){if(!x)return;pot(x/10);putchar('0'+x%10);}
    void out(int x){if(!x)putchar('0');if(x<0)putchar('-'),x=-x;pot(x);}
    
    const int MAXN = 155;
    
    bool f[MAXN][MAXN][8];
    int n;
    
    int main(){
    	n=rd();
    	for(int i=1;i<=n;i++)f[i][i][rd()]=1;
    	for(int len=2;len<=n;len++){
    		for(int i=1;i+len-1<=n;i++){
    			int j=i+len-1;
    			for(int k=i;k<j;k++){
    				for(int x=0;x<=7;x++){
    					for(int y=0;y<=7;y++){
    						for(int z=0;z<=7;z++){
    							if(((y+z)>>1)!=x)continue;
    							f[i][j][x]|=f[i][k][y]&f[k+1][j][z];
    						}
    					}
    				}
    			}
    		}
    	}
    	for(int i=0;i<=7;i++) if(f[1][n][i]) out(i),space();
    	return 0;
    }
    
    
  • 相关阅读:
    组合模式
    C#+ArcEngine中com对象的释放问题
    备忘录模式
    C#中的DataSet添加DataTable问题
    jenkins从节点
    jenkins Publish over SSH
    jenkins凭据
    jenkins maven项目
    jenkins部署-docker
    zabbix api
  • 原文地址:https://www.cnblogs.com/ghostcai/p/9871500.html
Copyright © 2011-2022 走看看