当前位置: 首页 > news >正文

P4158 [SCOI2009] 粉刷匠

没看到每个格子只能染一次色。。?11

于是 \(f_{i,j}\) 预处理每块木板涂 \(j\) 次色最多有多少个涂正确的,这个直接暴力枚举最后一次涂色的区间就好了。有了 \(f\) 就是简单背包了。

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#define fin(x) freopen(#x".in","r",stdin)
#define fout(x) freopen(#x".out","w",stdout)
#define fr(x) fin(x),fout(x);
#define Fr(x,y) fin(x),fout(y)
#define INPUT(_1,_2,FILE,...) FILE
#define IO(...) INPUT(__VA_ARGS__,Fr,fr)(__VA_ARGS__)
using namespace std;
using namespace __gnu_pbds;
#define mp make_pair
#define pii pair<int,int>
#define fi first
#define se second
#define pb push_back
#define cfast ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define ll long long
#define ull unsigned long long
#define intz(x,y) memset((x),(y),sizeof((x)))
char *p1,*p2,buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
#define tup(x) array<int,(x)>
inline ll read(){ll x=0,f=1;char ch=nc();while(ch<48||ch>57){if(ch=='-')f=-1;ch=nc();}while(ch>=48&&ch<=57)x=x*10+ch-48,ch=nc();return x*f;
}
//void write(int x){cout<<x<<' ';}
//void write(pii x){cout<<"P("<<x.fi<<','<<x.se<<")\n";}
//void write(vector<auto>x){for(auto i:x)write(i);cout<<'\n';}
//void write(auto *a,int l,int r){for(int i=l;i<=r;i++)write(a[i]);cout<<'\n';}
inline ll lowbit(ll x){return x&-x;}
inline int pcount(ll x){for(int i=0,res=0;;res+=(x>>i)&1,i++)if(i>60)return res;
}//struct mt{
//	ll v;
//	mt(){v=0;}
//	mt(int x){this->v=x;}
//	inline mt operator+(mt x){return {(v+x.v)%mod};}
//	inline mt operator-(mt x){return {(v+mod-x.v)%mod};}
//	inline mt operator*(mt x){return {1ll*v*x.v%mod};}
//};
//inline void add(mt &x,mt y){x=x+y;}
//mt qp(mt x,int y){mt res(1);for(;y;x=x*x,y>>=1)if(y&1)res=res*x;return res;}
const int N=55,M=2505;
#define int ll
char s[N][N];int f[N][N][M],c[N][2],g[M],tmp[M];
inline void UesugiErii(){int n,m,t;cin>>n>>m>>t;for(int i=1;i<=n;i++)cin>>(s[i]+1);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)c[j][0]=c[j-1][0],c[j][1]=c[j-1][1],++c[j][s[i][j]-'0'];for(int j=1;j<=m;j++)for(int p=1;p<=t;p++){f[i][j][p]=f[i][j-1][p];for(int k=0;k<j;k++)f[i][j][p]=max(f[i][j][p],f[i][k][p-1]+max(c[j][0]-c[k][0],c[j][1]-c[k][1]));}}for(int i=1;i<=n;i++){for(int j=1;j<=t;j++)tmp[j]=g[j];for(int k=1;k<=t;k++)for(int j=t;j>=k;j--)tmp[j]=max(tmp[j],g[j-k]+f[i][m][k]);swap(tmp,g);}cout<<g[t];
}
signed main(){//IO();//cfast;int _=1;//cin>>_;for(;_;_--)UesugiErii();return 0;
}
http://www.zskr.cn/news/61945.html

相关文章:

  • Google 新出的 Antigravity 有哪些新特性?
  • AI元人文实践:家庭旅游规划
  • 畅通工程 小记
  • Linuxの磁盘知识2
  • 大盘风险控制策略分析报告 - 2025年11月26日
  • ASR+TTS - 实践
  • 1. 密码学基础
  • 笔记分享 : 一文读懂3个概念 : RoI, RoI pooling, RoI Align
  • LLM提示注入攻击深度解析:从原理到防御的完整应对方案
  • Ceres Solver优化库学习笔记
  • Flash动画制作总结
  • 第四十九篇
  • 10-数据格式转换
  • 09-国土TXT格式
  • Mac SPSS 26 dmg 安装步骤详解 简单易懂一步步教你装(附安装包)
  • 小程序商城客服系统传递咨询产品信息卡片,传递订单信息卡片
  • 48(11.28)
  • 46(11.26)
  • Python模块与包完全教程:从导入到封装发布(附实战)
  • 【Webpack连载一】入门简介。了解为什么需要Webpack,解决哪些开发中通病 - 实践
  • 借助gdb推进修改oracle scn
  • 2025年11月红外防潮系统,碳红外防潮取暖系统,别墅红外防潮系统厂家推荐:实力防潮品牌解析,采购无忧之选!
  • Ai元人文:谦卑的舞台搭建者——岐金兰与她的未完成之歌
  • 2025年下半年UVLED面光源、UVLED线光源、UV固化箱、UV解胶机、UV固化炉厂家Top 5推荐指南:选购必看榜单
  • 数据破界,价值共生:东软锚定AI时代民生新答卷
  • 2025年下半年UVLED面光源、UVLED线光源、UV固化箱、UV解胶机、UV固化炉厂家综合评测与选购指南
  • 2025年江苏徐州板式家具、模压托盘、桥洞力学板、三聚氰胺饰面板品牌公司综合推荐指南:五大优质厂商深度解析
  • Check Point R82 Gaia - 面向安全应用的下一代操作系统
  • 2025年下半年候车亭、公交站台、电子站牌、公交站牌、公交候车厅选购指南:十大优质供应商推荐
  • 2025年下半年轴连轴承、水泵轴承、转向轴承、圆锥滚子轴承、汽车水泵轴承厂家综合推荐指南:十大优质供应商盘点