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;
    }
    


  • 相关阅读:
    request.setCharacterEncoding("utf-8");
    JSTL的foreach循环遍历
    EL表达式的查找范围
    Unity_图形学之_shader_学习笔记(一)
    Unity_AssetBundle笔记_(一)(俗称AB包_个人笔记欢迎指正)
    Unity C#笔记 协程详解(转)
    解决方案_And_学习链接_笔记
    Unity_一些Unity内部的重要设置
    C#_异常处理
    Unity3D_Resources封装(ResourcesManager 类)
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7345400.html
Copyright © 2011-2022 走看看