bzoj4937: [Ceoi2016]popeala
Description
你办了一场比赛,有n给人参加,只有一道题,有m个数据点,标号为1~m,每个测试点都有一个分数a[i]。现在所
Input
Output
每次dp多分一段,dp时状态转移方程可分为O(n)段,且段之间的分界单调右移,用单调队列维护每个段的最值即可转移,时间复杂度O(nmS)
#include<bits/stdc++.h>
const int inf=0x7f7f7f7f;
int _(){
int x=,c=getchar();
while(c<)c=getchar();
while(c>)x=x*+c-,c=getchar();
return x;
}
void mins(int&a,int b){if(a>b)a=b;}
int min(int a,int b){return a<b?a:b;}
int n,m,q,a[],p0[];
char s[][];
int f[],t[],g[];
struct Q{
int q[],ql,qr,id;
void clr(){ql=,qr=;}
void ins(int x){
if(f[x]==inf)return;
int v=f[x]-a[x]*id;
while(ql<=qr){
int y=q[qr];
if(f[y]-a[y]*id>=v)--qr;
else break;
}
q[++qr]=x;
}
void del(int x){
if(ql<=qr&&q[ql]==x)++ql;
}
int gmn(int w){
if(ql>qr)return inf;
int x=q[ql];
return f[x]+(a[w]-a[x])*id;
}
}qs[];
int main(){
n=_(),m=_(),q=_();
for(int i=;i<=m;++i)a[i]=_()+a[i-];
for(int i=;i<=n;++i){
scanf("%s",s[i]+);
qs[i].id=i;
for(int j=;j<=m&&s[i][j]=='';++j)f[j]+=a[j];
}
printf("%d\n",f[m]);
for(int i=;i<=q;++i){
for(int j=;j<=n;++j){
p0[j]=;
qs[j].clr();
}
f[]=inf;
for(int j=;j<=m;++j){
qs[t[j]=n].ins(j-);
for(int k=;k<=n;++k)if(s[k][j]==''){
for(int z=p0[k]+;z<=j;++z){
qs[ t[z]].del(z-);
qs[--t[z]].ins(z-);
}
p0[k]=j;
}
g[j]=inf;
for(int k=;k<=n;++k)mins(g[j],qs[k].gmn(j));
}
memcpy(f,g,sizeof(int)*(m+));
printf("%d\n",f[m]);
}
return ;
}
bzoj4937: [Ceoi2016]popeala的更多相关文章
- [Ceoi2016|BZOJ4936] Match
哈希+分治+stack 题目: 给你一个由小写字母组成的字符串s,要你构造一个字典序最小的(认为左括号的字典序比右括号小)合法的括号 序列与这个字符串匹配,字符串和括号序列匹配定义为:首先长度必须相等 ...
- 正睿OI DAY3 杂题选讲
正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n ...
随机推荐
- 嵌套for
- php基础-6
类的继承和方法重写 <?php class people{ public function __construct($name, $age, $sex) { $this->age = $a ...
- 浅谈log4j-5-读取properties文件(转自godtrue)
#### 在代码中配置log4j环境的方式,我们已经见识过了,是不是感觉比较麻烦,我们试试使用配置文件的方式是否使您的应用程序更加的灵活.# Log4j支持两种配置文件格式,一种是XML格式的文件,一 ...
- gunicorn工作原理
gunicorn工作原理 Gunicorn“绿色独角兽”是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,移植自Ruby的独角兽(Unicorn )项目,使用pre-fork ...
- controller层,service层,dao层(main函数,子函数,子的子函数)
controller层相当于main函数————————————————————————————————————————————————————@RequestMapping("/query ...
- zabbix监控第一台主机系统
注意zabbix客户端和zabbix服务端版本要一致,否则很容易出问题 实验环境,在第一台centos7(ip为192.168.245.128,以下简称主机1)上安装zabbix服务器端,在第二台ce ...
- MySQL Partition--分区基础
================================================================================= Mysql在5.1版本时增加对分区表 ...
- java.lang.NoClassDefFoundError: org/apache/jute/CsvOutputArchive
1. 问题 看到上面的错误 你怎么想? 包冲突?我这里不是.项目用到了zookeeper,这个类是zookeeper的核心包里的类. 控制台一直打印这个错误 但是项目不影响使用,奇怪! 2. 解决办法 ...
- ORM 之常用重点 ******
总体介绍orm>>点我 单表查询api汇总 如 distinc(),order_by() id__gt=1 id__inrange=[ 1,3 ] 左右都包含 设置logg ...
- 23 模块 os sys pickle json
一. os模块 主要是针对操作系统的 用于文件操作 二. sys 模块 模块的查找路径 sys.path 三 pickle 模块 1. pickle.dumps(对象) 序列化 ...