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论文作者: ...
随机推荐
- 饮冰三年-人工智能-Python-14Python基础之变量与函数
1:函数:函数是逻辑结构化和过程化的一种编程方法.函数即变量 #参数组:**字典 *列表 def test(x,*args): print(args); print(args[0]); print(& ...
- python基础面试题(一)
1. 简述Python代码的运行机制 1.把原始代码编译成字节码 编译后的字节码是特定于Python的一种表现形式,它不是二进制的机器码,需要进一步编译才能被机器执行. 2.把编译 ...
- MVC AOP解决JsonResult返回json时间格式
新建JsonNetResult类:JsonResult public class JsonNetResult: JsonResult { public JsonNetResult() { Settin ...
- 函数wait和waitpid
函数wait 一个进程在终止时会关闭所有文件描述符,释放在用户空间释放的内存,但它的PCB还保留着,内核在其中保存一些信息:如果是正常终止时则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号 ...
- 【C++ Primer 第13章】2. 拷贝控制和资源管理
拷贝控制和资源管理 • 类的行为像一个值.意味着它应该有自己的状态,当我们拷贝一个像值得对象时,副本和原对象是完全独立的,改变副本不会对原对象有任何影响. • 行为像指针的类则共享状态.当我们拷贝一个 ...
- python---hash查找
以前只会用,没了解过原理. # coding = utf-8 class HashTable: def __init__(self): # 哈希表的初始大小已经被选择为 11.尽管这是任意的,但是重要 ...
- 【Android】AndroidManifest 中original-package标签
Manifest.xml 中 <manifest>标签中package属性用于设置应 用程序的进程名,即在运行时使用ddms查看到的进程名. <original-packag ...
- seafile数据的备份与恢复
seafile数据备份包括MySQL数据备份与seafile,seahub数据备份两个部分.所以在备份的时候需要注意这一点. 我的存储底层用glusterfs数据共享,为了防止一台服务器宕机以后另一台 ...
- Linux 配置最新的epel源
一.Centos6 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm 二.Cento ...
- windows docker常用命令
关键词 示例 作用 attach sudo docker run -itd ubuntu:14.04 /bin/bash 进入容器 exec docker exec -it mysql bash 在容 ...