zoukankan      html  css  js  c++  java
  • bzoj1296【SCOI2009】粉刷匠

    1296: [SCOI2009]粉刷匠

    Time Limit: 10 Sec  Memory Limit: 162 MB
    Submit: 1479  Solved: 837
    [Submit][Status][Discuss]

    Description

    windy有 N 条木板须要被粉刷。 每条木板被分为 M 个格子。 每一个格子要被刷成红色或蓝色。 windy每次粉刷。仅仅能选择一条木板上一段连续的格子,然后涂上一种颜色。

    每一个格子最多仅仅能被粉刷一次。 假设windy仅仅能粉刷 T 次。他最多能正确粉刷多少格子? 一个格子假设未被粉刷或者被粉刷错颜色,就算错误粉刷。

    Input

    输入文件paint.in第一行包括三个整数,N M T。 接下来有N行。每行一个长度为M的字符串。'0'表示红色,'1'表示蓝色。

    Output

    输出文件paint.out包括一个整数,最多能正确粉刷的格子数。

    Sample Input

    3 6 3
    111111
    000000
    001100

    Sample Output

    16

    HINT

    30%的数据。满足 1 <= N,M <= 10 ; 0 <= T <= 100 。 100%的数据,满足 1 <= N,M <= 50 ; 0 <= T <= 2500 。

    Source




    这道题做法是两次DP

    能够发现不同的木板是相互独立,互相无影响的。

    所以我们能够O(n^3)暴力DP计算出每一条木板,粉刷j次最多能正确粉刷的数量。

    然后对于不同的木板再用一次DP计算答案。





    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #define F(i,j,n) for(int i=j;i<=n;i++)
    #define D(i,j,n) for(int i=j;i>=n;i--)
    #define ll long long
    using namespace std;
    int n,m,t,ans=0;
    int sum[55],f[55][55],g[55][2505];
    char s[55];
    inline int read()
    {
    	int x=0,f=1;char ch=getchar();
    	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
    	while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    	return x*f;
    }
    int main()
    {
    	n=read();m=read();t=read();
    	F(i,1,n)
    	{
    		scanf("%s",s+1);
    		F(j,1,m) sum[j]=sum[j-1]+(s[j]=='1');
    		F(k,1,m) F(j,1,m)
    		{
    			f[j][k]=0;
    			F(l,0,j-1)
    			{
    				int tmp=sum[j]-sum[l];
    				f[j][k]=max(f[j][k],f[l][k-1]+max(tmp,j-l-tmp));
    			}
    		}
    		F(j,1,t) F(k,1,min(j,m)) g[i][j]=max(g[i][j],g[i-1][j-k]+f[m][k]);
    	}
    	F(i,1,t) ans=max(ans,g[n][i]);
    	printf("%d
    ",ans);
    	return 0;
    }
    


  • 相关阅读:
    joins and includes
    学习库
    HTML5 画图--文字
    http://qiye.qianzhan.com/ 企业查询宝
    js 获取input选择的图片的信息
    input:file属性
    CSS 箭头
    颜色
    CSS 点击图片替换样式
    图片转base64
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7345399.html
Copyright © 2011-2022 走看看