LibreOJ #2003. 「SDOI2017」新生舞会


01分数规划(并不知道这是啥。。)
km或费用流(并不会)验证
#include <cstring>
#include <cstdio>
#include <queue>
#include <cmath>
#define N 100100
#define inf 0x3f3f3f3f
#define eps 1e-8
using namespace std;
bool vis[N];
int nextt[N],to[N],fa[N],flow[N],head[N],cnt=,n,ans1,ans2,a[][],b[][];
double cost[N],dis[N];
inline void ins(int u,int v,int f,double c)
{
nextt[++cnt]=head[u];
to[cnt]=v;
flow[cnt]=f;
cost[cnt]=c;
head[u]=cnt;
}
bool spfa(int s,int t)
{
for(int i=s;i<=t;++i) vis[i]=,dis[i]=-1e9;
dis[s]=fa[s]=;
queue<int>q;
q.push(s);
for(int now;!q.empty();)
{
now=q.front();q.pop();
vis[now]=;
for(int i=head[now];i;i=nextt[i])
{
int v=to[i];
if(dis[v]<dis[now]+cost[i]&&flow[i]>)
{
dis[v]=dis[now]+cost[i];
fa[v]=i;
if(!vis[v])
{
vis[v]=;
q.push(v);
}
}
}
}
return dis[t]!=-1e9;
}
bool dinic(int s,int t,double k)
{
cnt=;
memset(head,,sizeof(head));
for(int i=;i<=n;++i) ins(s,i,,),ins(i,s,,);
for(int i=n+;i<=n*;++i) ins(i,t,,),ins(t,i,,);
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
ins(i,n+j,,(double)a[i][j]-k*b[i][j]),ins(n+j,i,,-((double)a[i][j]-k*b[i][j]));
double tmp=;
bool flag=false;
for(;spfa(s,t);)
{
if(tmp+dis[t]>=)
{
flag=true;
for(int i=t;i!=s&&i;i=to[fa[i]^])
{
flow[fa[i]]-=;
flow[fa[i]^]+=;
}
tmp+=dis[t];
}
else return false;
}
return flag;
}
int Main()
{
scanf("%d",&n);
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
scanf("%d",&a[i][j]);
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
scanf("%d",&b[i][j]);
int s=,t=n*+;
double l=,r=,mid,ans;
for(;abs(r-l)>eps;)
{
mid=(l+r)/;
if(dinic(s,t,mid)) ans=mid,l=mid+eps;
else r=mid-eps;
}
printf("%.6lf",ans);
return ;
}
int sb=Main();
int main(int argc,char *argv[]) {;}
LibreOJ #2003. 「SDOI2017」新生舞会的更多相关文章
- LibreOJ 2003. 「SDOI2017」新生舞会 基础01分数规划 最大权匹配
#2003. 「SDOI2017」新生舞会 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- 「SDOI2017」新生舞会
题目链接 戳我 \(Describe\) 有一场舞会,n个男生,n个女生,要组成n对舞伴,男生i和女生j组队的适合度是\(a_{ij}\), 不适合度是\(b_{ij}\), 让你求\(max(\su ...
- loj2003 「SDOI2017」新生舞会
分数规划+KM 算法 这个KM不好,看算法竞赛进阶指南的 #include <iostream> #include <cstring> #include <cstdio& ...
- AC日记——「SDOI2017」序列计数 LibreOJ 2002
「SDOI2017」序列计数 思路: 矩阵快速幂: 代码: #include <bits/stdc++.h> using namespace std; #define mod 201704 ...
- 「SDOI2017」树点涂色 解题报告
「SDOI2017」树点涂色 我sb的不行了 其实一开始有一个类似动态dp的想法 每个点维护到lct树上到最浅点的颜色段数,然后维护一个\(mx_{0,1}\)也就是是否用虚儿子的最大颜色 用个set ...
- LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配
#2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- 【BZOJ4819】【SDOI2017】新生舞会 [费用流][分数规划]
新生舞会 Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 学校组织了一次新生舞会,Cathy ...
- LibreOJ #2036. 「SHOI2015」自动刷题机
#2036. 「SHOI2015」自动刷题机 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 题目描述 曾经发明了信号增幅仪的发明家 SHTSC 又公开 ...
- Unique -「企划」新生守则(?
随想随记,主要是整活. 红色贝雷帽大爷会在校园不定期游走,遇见记得打招呼. 面食堂冰沙类饮品请快速解决或者边喝边搅,如果发现饮品甜度骤减请快速前往最近的垃圾桶扔掉. 关于散养猫小黄和小黑. 如果看见小 ...
随机推荐
- nodejs写文件
var fs = require('fs'); 2 var txt = "以上程序使用fs.readFileSync从源路径读取文件内容,并使用fs.writeFileSync将文件内容写入 ...
- DL杂谈
好久不写了,几点这次项目经验吧,本次训练位多任务训练,主要目的训练人脸角度,具体公司项目不细谈. 讲一下主要碰到的坑: 1 最主要问题,网络结构不对称,导致主任务与辅助任务之间的梯度关系不平衡从而导致 ...
- Object有哪些公用的方法?
Object是所有类的父类,任何类都默认继承Object. public class Demo { public static void main(String[] args) { Object ob ...
- 牛客月赛 G-many sum(筛因子)
many sum 链接:https://ac.nowcoder.com/acm/contest/879/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K, ...
- POJ1251 Jungle Roads Kruskal+scanf输入小技巧
Jungle Roads The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ai ...
- Docker环境下的前后端分离项目部署与运维(七)Redis高速缓存
Redis高速缓存 利用内存保存数据,读写速度远超硬盘:可以减少I/O操作,降低I/O压力. 发红包.抢红包的数据可以存在高速缓存中,加快处理速度,不需要经过数据库 淘宝首页一些优惠活动商品等热数据可 ...
- Git 分支管理 Feature分支 强行删除分支
软件开发中,总有无穷无尽的新的功能要不断添加进来. 添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了, 所以,每添加一个新功能,最好新建一个feature分支, 在上面开发,完成后 ...
- java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
异常 在使用POI读取Excel文件内容时,发生了异常,报错如下: 大概意思是不能从一个数值的列获取一个字符串类型的值,我使用下面的代码来获取单元格的值: //此处省略N行代码 String cell ...
- spring配置与使用
1. 创建基于java的配置. 配置极少量的XML来启用java配置: <?xml version="1.0" encoding="UTF-8"?> ...
- codevs1051接龙游戏
1051 接龙游戏