BZOJ2512 : Groc
最优解一定是将起点、终点以及所有必经点连接成一棵树,对于每条树边恰好走两次,而从起点到终点的一条路径只走一次。
考虑连通性DP,设$f[i][j][k][x]$表示考虑完前$i$个走道,第$i$个走道底部和上部是否存在于树中,底部和上部是否和起点连通,走一次的路径端点是底部还是上部时的最小代价。
时间复杂度$O(NA^2)$。
#include<cstdio>
const int N=360,inf=100000000;
int m,n,A,B,i,j,k,x,a,b,nj,nk,nx,w,v[N][30],f[N][4][4][2],ans;
inline void up(int&a,int b){a>b?(a=b):0;}
inline int sum(int x,int l,int r){
int t=v[x][r];
if(l)t-=v[x][l-1];
return t;
}
int main(){
scanf("%d%d%d%d",&m,&n,&A,&B);A++;
while(m--)scanf("%d%d",&i,&j),v[i][j]=1;
for(i=0;i<=n;i++)for(j=0;j<4;j++)for(k=0;k<4;k++)for(x=0;x<2;x++)f[i][j][k][x]=inf;
f[0][1][1][0]=-B;
for(i=1;i<=n;i++)for(j=1;j<=A;j++)v[i][j]+=v[i][j-1];
for(i=0;i<n;i++)for(j=0;j<4;j++)for(k=1;k<4;k++)for(x=0;x<2;x++)if(f[i][j][k][x]<inf){
w=f[i][j][k][x];
for(a=0;a<=A;a++){
if(sum(i+1,0,a)<sum(i+1,0,A))continue;
nj=1;
if(a==A)nj|=2;
nk=k&1;
if((j>>1)&&!(k>>1))continue;
if(a==A)nk|=(k&1)<<1;
if(x==0){
up(f[i+1][nj][nk][0],w+B+a*2);
if(a==A)up(f[i+1][nj][nk][1],w+B+A);
}
}
for(a=0;a<=A;a++){
if(sum(i+1,a,A)<sum(i+1,0,A))continue;
nj=2;
if(a==0)nj|=1;
nk=(k>>1)<<1;
if((j&1)&&!(k&1))continue;
if(a==0)nk|=k>>1;
if(x==1){
up(f[i+1][nj][nk][1],w+B+(A-a)*2);
if(a==0)up(f[i+1][nj][nk][0],w+B+A);
}
}
for(a=0;a<=A;a++)for(b=a+1;b<=A;b++){
if(sum(i+1,0,a)+sum(i+1,b,A)<sum(i+1,0,A))continue;
nj=3;
nk=k;
up(f[i+1][nj][nk][x],w+B*3+(a+A-b)*2);
nk=k&1;
if(x==0)if(!(j>>1)||(k>>1))up(f[i+1][nj][nk][0],w+B+(a+A-b)*2);
nk=(k>>1)<<1;
if(x==1)if(!(j&1)||(k&1))up(f[i+1][nj][nk][1],w+B+(a+A-b)*2);
}
up(f[i+1][3][3][x],w+B*3+A*2);
up(f[i+1][3][3][x^1],w+B*3+A);
}
ans=f[n][1][1][0];
up(ans,f[n][3][3][0]);
return printf("%d",ans),0;
}
BZOJ2512 : Groc的更多相关文章
- 论文解读(GROC)《Towards Robust Graph Contrastive Learning》
论文信息 论文标题:Towards Robust Graph Contrastive Learning论文作者:Nikola Jovanović, Zhao Meng, Lukas Faber, Ro ...
- Android自动化学习笔记:获取APK包名的几种方法
---------------------------------------------------------------------------------------------------- ...
- Pascal编译器大全(非常难得)
http://www.pascaland.org/pascall.htm Some titles (french) : Compilateurs Pascal avec sources = compi ...
- Go-GRPC 初体验
grpc 跟常见的client-server模型相似(doubbo)grpc 编码之前需要准备以下环境: 安装protobuf,grpc的client与server之间消息传递使用的protoc格式消 ...
- python模块大全
python模块大全2018年01月25日 13:38:55 mcj1314bb 阅读数:3049 pymatgen multidict yarl regex gvar tifffile jupyte ...
- SAS笔记
SAS基础知识 SAS里面的PROC一览 The ACECLUS Procedure : 聚类的协方差矩阵近似估计(approximate covariance estimation for clus ...
- C链表的简单案例
此案例只是简单的使用链表 链表的特点: 1.不需要提前知道要存入数据的长度 2.最后结点为NULL 3.头结点指向下一个结点的结构体指针 #include <stdio.h> #inclu ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 论文解读(SimGRACE)《SimGRACE: A Simple Framework for Graph Contrastive Learning without Data Augmentation》
论文信息 论文标题:SimGRACE: A Simple Framework for Graph Contrastive Learning without Data Augmentation论文作者: ...
随机推荐
- 泛微云桥e-birdge之金蝶云之家集成配置手册
最近在配置金蝶云之家与泛微ecology的打通,没有看官方文档,直接配置,一直配置不通,看了官方文档后知道了少配置参数了,转载一下,省得四处去找了. 泛微云桥e-birdge之金蝶云之家集成配置手册 ...
- .netcore读取配置文件
setting.json { "compilerOptions": { "noImplicitAny": false, "noEmitOnError& ...
- Vs2017获取Git空仓库后创建解决方案及项目无法推送,推送失败的问题.
与Git无关,因为远程是空文件夹,导致没有远程版本做对应提示更改或怎样,必须在创建人创建仓库的时候上传文件代码. https://developercommunity.visualstudio.c ...
- 令人疑惑的 std::remove 算法
摘自<Effective STL>第32条 remove的声明: template<class ForwardIterator, class T> ForwardIterato ...
- JSP基础知识➣获取参数和过滤器(四)
JSP表单提交和参数获取 JSP表单提交的两种方式:post和get,通过这两种方式提交的参数到后台,获取参数的值主要由request来处理,获取值的方式有以下几种: getParameter(): ...
- 【UOJ 209】【UER #6】票数统计
题解: jls的题目还是比较好的 首先比较显然我们可以分析出 当x<y时,显然只能满足前缀条件 针对这一档部分分,是个简单的组合数 考虑一下后缀限制,发现真的不好搞.. 看了题解发现,枚举总共的 ...
- Python题目练习(一)
1.使用while循环输入 1 2 3 4 5 6 8 9 10 i = 1 while i <=10 : if i != 7: print(i) else: print(' ') i += ...
- ELK使用1-Elasticsearch使用
一.es 1.通过curl命令获取es进群信息 a.curl -i(设置协议的头信息) -XGET 'http:192.168.30.41:9200/_count' b.查看集群状态 curl -XG ...
- HtmlTestRunner
1.一般生成报告时,会使用时间来作为报告名称的一部分,引入time这个第三方,使用以下方式格式化当前时间 下面运行最终结果:2019-03-29-14_29_18------>年-月-日-时-分 ...
- AtCoder Regular Contest 080 (ARC080) E - Young Maids 线段树 堆
原文链接http://www.cnblogs.com/zhouzhendong/p/8934377.html 题目传送门 - ARC080 E - Young Maids 题意 给定一个长度为$n$的 ...