[国家集训队] happiness 题解
发现可以做如下建图:
对于前两组输入,从 \(s\) 向所有代表学生的点连一条边,容量为其学习文科的喜悦值;从所有代表学生的点向 \(t\) 连一条边,容量为其学习理科的最大值。
对于后四组输入,建两个点 \(x,y\),从 \(s\) 向 \(x\),从 \(y\) 向 \(t\) 分别连容量为相邻两人同时学文/理时额外喜悦值的一条边,\(x\) 向这两个学生各连一条无限长的边,这两个学生再向 \(y\) 连一条无限长的边。
直接拿总喜悦值减去最小割即可。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5,M=5e6+5;
int n,m,s,t,k=1,h[N],d[N],cnt;
int c[N],to[M],nxt[M],w[M];
void add(int x,int y,int z){
to[++k]=y;w[k]=z;
nxt[k]=h[x];h[x]=k;
to[++k]=x;w[k]=0;
nxt[k]=h[y];h[y]=k;
}int bfs(){
memset(c,-1,sizeof(c));
queue<int>q;c[s]=0;
q.push(s);d[s]=h[s];
while(q.size()){
int x=q.front();q.pop();
for(int i=h[x];i;i=nxt[i]){
int y=to[i];int lv=w[i];
if(lv>0&&c[y]==-1){
c[y]=c[x]+1;d[y]=h[y];
q.push(y);if(y==t) return 1;
}
}
}return 0;
}int dfs(int x,int ans){
if(x==t) return ans;
int sum=ans;
for(int i=d[x];i&∑i=nxt[i]){
d[x]=i;int y=to[i];int lv=w[i];
if(lv<1||c[y]!=c[x]+1) continue;
int zjy=dfs(y,min(sum,lv));
sum-=zjy;w[i]-=zjy;w[i^1]+=zjy;
}return ans-sum;
}int dinic(){
int re=0;
while(bfs())
re+=dfs(s,1e9);
return re;
}int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>m;t=100000;
int ans=0;cnt=n*m;
for(int i=1;i<=n;i++)
for(int j=1,x;j<=m;j++)
cin>>x,add(s,(i-1)*m+j,x),ans+=x;
for(int i=1;i<=n;i++)
for(int j=1,x;j<=m;j++)
cin>>x,add((i-1)*m+j,t,x),ans+=x;
for(int i=1;i<n;i++)
for(int j=1,x;j<=m;j++){
cin>>x;ans+=x;
add(s,++cnt,x);
add(cnt,(i-1)*m+j,1e9);
add(cnt,i*m+j,1e9);
}
for(int i=1;i<n;i++)
for(int j=1,x;j<=m;j++){
cin>>x;ans+=x;
add(++cnt,t,x);
add((i-1)*m+j,cnt,1e9);
add(i*m+j,cnt,1e9);
}
for(int i=1;i<=n;i++)
for(int j=1,x;j<m;j++){
cin>>x;ans+=x;
add(s,++cnt,x);
add(cnt,(i-1)*m+j,1e9);
add(cnt,(i-1)*m+j+1,1e9);
}
for(int i=1;i<=n;i++)
for(int j=1,x;j<m;j++){
cin>>x;ans+=x;
add(++cnt,t,x);
add((i-1)*m+j,cnt,1e9);
add((i-1)*m+j+1,cnt,1e9);
}
cout<<ans-dinic();
return 0;
}
[国家集训队] happiness 题解的更多相关文章
- 【题解】[国家集训队]happiness
题目戳我 \(\text{Solution:}\) 显然还是一个分组问题.对于理科和文科我们可以看出最小割模型,而处理同时选择某一学科的时候,需要我们根据套路建立虚点处理. 同 小M的作物 一题,这题 ...
- [国家集训队]happiness
嘟嘟嘟 就这么建. --- #include<cstdio> #include<iostream> #include<cmath> #include<algo ...
- [国家集训队]happiness 最小割 BZOJ 2127
题目描述 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文 ...
- BZOJ 2127 / Luogu P1646 [国家集训队]happiness (最小割)
题面 BZOJ传送门 Luogu传送门 分析 这道题又出现了二元关系,于是我们只需要解方程确定怎么连边就行了 假设跟SSS分在一块是选文科,跟TTT分在一块是选理科,先加上所有的收益,再来考虑如何让需 ...
- luogu P1646 [国家集训队]happiness (最小割)
高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文科或者理科 ...
- Luogu2839 [国家集训队]middle 题解
题目很好,考察对主席树的深入理解与灵活运用. 首先看看一般解决中位数的思路,我们二分一个 \(mid\),将区间中 \(\ge mid\) 的数置为 \(1\),小于的置为 \(-1\),然后求区间和 ...
- happiness[国家集训队2011(吴确)]
[试题来源] 2011中国国家集训队命题答辩 [问题描述] 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科 ...
- 【题解】P1407国家集训队稳定婚姻
[题解][P1407 国家集训队]稳定婚姻 很好的一道建模+图论题. 婚姻关系?很像二分图匹配呀,不过不管怎么办先建模再说.婚姻关系显然用图方面的知识解决.建图! 它给定的是字符串,所以我们使用\(a ...
- P2634 [国家集训队]聪聪可可(题解)(点分治)
P2634 [国家集训队]聪聪可可(题解)(点分治) 洛谷题目 #include<iostream> #include<cstdlib> #include<cstdio& ...
- 题解-[国家集训队]Crash的数字表格 / JZPTAB
题解-[国家集训队]Crash的数字表格 / JZPTAB 前置知识: 莫比乌斯反演 </> [国家集训队]Crash的数字表格 / JZPTAB 单组测试数据,给定 \(n,m\) ,求 ...
随机推荐
- 打包jar 程序,同时将依赖报一起打包
1.概述 有些时候,我们打包一个java 程序,我需要将所有的依赖也一起打包,这样执行起来方便. 2.我们可以使用maven 插件实现 <build> <plugins> &l ...
- cmu15545笔记-WAL和数据库恢复
目录 总览 缓存策略(Buffer Pool Policies) Shadow Paging(No-Steal + Force) SQLite Rollback Mode(Steal + Force) ...
- VTK vtkAssembly 拾取
在有vtkAssembly的拾取中,vtkAssembly的Pickable决定子Actor能否被拾取.跟子Actor的Pickable没有关系
- 【并查集+dfs】codeforces 1833 E. Round Dance
题意 输入一个正整数 \(T(1 \leq T \leq 10^4)\),表示接下来输入 \(T\) 组测试用例,对于每一个测试用例: 第一行,输入一个正整数 \(n(2 \leq n \leq 2 ...
- javac 无效的目标发行版: 11
maven编译出错. JAVA_HOME 设置成了 jdk8,此时 runner 选 11 也是没用的,务必再覆盖掉 JAVA_HOME.
- cookie session token 发展史(便于理解jwt)
目录 一.cookie session token 发展史(彻底理解cookie,session,token,便于理解jwt) 1.Cookie,Session,Token发展史 2.Cookie,S ...
- MySQL的 安装、配置、卸载
Mysql的安装配置(基于Centos7) 安装mysql数据库 [root@master ~]# wget https://dev.mysql.com/get/mysql57-community-r ...
- 问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist
https://cloud.tencent.com/developer/article/1993317 大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误& ...
- LiquibaseException java.lang.ClassCastException: class java.time.LocalDateTime cannot be cast to class java.lang.String
https://forum.liquibase.org/t/liquibaseexception-java-lang-classcastexception-class-java-time-locald ...
- FISCO BCOS 控制台 部署合约 调用 查看已部署合约的地址
deploy 部署合约.(默认提供HelloWorld合约和TableTest.sol进行示例使用) 参数: 合约路径:合约文件的路径,支持相对路径.绝对路径和默认路径三种方式.用户输入为文件名时,从 ...