【牛客网】Whalyzh's Problem
【牛客网】Whalyzh's Problem
每个\(b_{i,j}\)建一个点,认为选了\(b_{i,j}\)一定会选\(a_{i}\)和\(a_{j}\)
选了\(a_{i}\)的话会带了一个\(-b_{i,i}\)的价值
然后再用01分数规划二分答案,选了\(a_{i}\)还会带来\(-x\)的代价,x是二分的答案
如果正数值减最大流大于0认为这个答案可以达到
#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define space putchar(' ')
#define enter putchar('\n')
#define eps 1e-10
#define ba 47
#define MAXN 200005
//#define ivorysi
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
template<class T>
void read(T &res) {res = 0;T f = 1;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9') {res = res * 10 +c - '0';c = getchar();}res *= f;
}
template<class T>
void out(T x) {if(x < 0) {x = -x;putchar('-');}if(x >= 10) {out(x / 10);}putchar('0' + x % 10);
}
struct node {int to,next;db cap;
}E[MAXN * 2];
int N,Ncnt,S,T;
int b[105][105],id[105][105];
int head[20005],sumE = 1,cur[20005];
void add(int u,int v,db c) {E[++sumE].to = v;E[sumE].next = head[u];E[sumE].cap = c;head[u] = sumE;
}
void addtwo(int u,int v,db c) {add(u,v,c);add(v,u,0);
}
int dis[20005];
queue<int> Q;
bool BFS() {memset(dis,0,sizeof(dis));while(!Q.empty()) Q.pop();Q.push(S);dis[S] = 1;while(!Q.empty()) {int u = Q.front();Q.pop();for(int i = head[u] ; i ; i = E[i].next) {int v = E[i].to;if(E[i].cap > 1e-6 && !dis[v]) {dis[v] = dis[u] + 1;if(v == T) return true;Q.push(v);}}}return false;
}
db dfs(int u,db aug) {if(u == T) return aug;for(int &i = cur[u] ; i ; i = E[i].next) {int v = E[i].to;if(E[i].cap > 1e-6 && dis[v] == dis[u] + 1) {db t = dfs(v,min(aug,E[i].cap));if(t > 1e-6) {E[i].cap -= t;E[i ^ 1].cap += t;return t;}}}return 0;
}
db Dinic() {db res = 0;while(BFS()) {for(int i = 1 ; i <= Ncnt ; ++i) cur[i] = head[i];while(db d = dfs(S,1e9) && d > 1e-6) res += d;}return res;
}
bool check(db x) {db res = 0;memset(head,0,sizeof(head));sumE = 1;for(int i = 1 ; i <= N ; ++i) {for(int j = 1 ; j <= N ; ++j) {addtwo(S,id[i][j],b[i][j]);res += b[i][j];addtwo(id[i][j],i,1e9);addtwo(id[i][j],j,1e9);}}for(int i = 1 ; i <= N ; ++i) {addtwo(i,T,b[i][i] + x);}return res - Dinic() > 1e-6;
}
void Solve() {read(N);Ncnt = N;for(int i = 1 ; i <= N ; ++i) {for(int j = 1 ; j <= N ; ++j) {read(b[i][j]);id[i][j] = ++Ncnt;}}S = ++Ncnt;T = ++Ncnt;db L = 0.0,R = 1e5;int cnt = 50;while(cnt--) {db mid = (L + R) / 2.0;if(check(mid)) L = mid;else R = mid;}printf("%.5lf\n",L);
}
int main(){
#ifdef ivorysifreopen("f1.in","r",stdin);
#endifint T;read(T);for(int i = 1 ; i <= T ; ++i) Solve();return 0;
}
转载于:https://www.cnblogs.com/ivorysi/p/11062818.html
【牛客网】Whalyzh's Problem相关推荐
- 链接:https://ac.nowcoder.com/acm/problem/22228来源:牛客网题目描述 在给定的数组中删除一个数。输入描述:多组测试。每组第一行输入1个整数n(n
链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 在给定的数组中删除一个数. 输入描述: 多组测试. 每组第一行输入1个整数n(n<20), 第二行输入n个整数 第三行输入1 ...
- 牛客网获取输入rowinput_Python爬虫入门例题:抓取牛客网题目
最近做题的时候要写一些题解,在把牛客网的题目复制下来的时候,数学公式的处理比较麻烦,所以我用Python的selenium.urllib.request和BeautifulSoup4库对题目信息进行了 ...
- 牛客网题目——替换空格
牛客网题目--替换空格 题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20 ...
- 树的距离(牛客网树上主席树+dfs序)
链接:https://ac.nowcoder.com/acm/problem/14415 来源:牛客网 题目描述 wyf非常喜欢树.一棵有根数树上有N个节点,1号点是他的根,每条边都有一个距离,而wy ...
- 黑白树(牛客网+树形dp)
链接:https://ac.nowcoder.com/acm/problem/13249 来源:牛客网 题目描述 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1.树上每个节点i对应一个值 ...
- codeforces(牛客网dp专题,排序)
链接:https://ac.nowcoder.com/acm/problem/21314 来源:牛客网 牛牛正在打一场CF 比赛时间为T分钟,有N道题,可以在比赛时间内的任意时间提交代码 第i道题的分 ...
- 牛客网【每日一题】3月27日 数学考试
题号 NC15553 名称 数学考试 来源 2018年长沙理工大学第十三届程序设计竞赛 链接:https://ac.nowcoder.com/acm/problem/15553 来源:牛客网 试题传送 ...
- 洛谷、牛客网、AcWing 刷题(python版)
牛客网python专项练习整理(一) https://blog.csdn.net/weixin_41913008/article/details/87203468 牛客网剑指offer--python ...
- 牛客网 15029 (栈)
链接:https://ac.nowcoder.com/acm/problem/15029 来源:牛客网 小鱼儿吐泡泡,嘟嘟嘟冒出来.小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡&qu ...
- 牛客网暑期ACM多校训练营(第十场)D Rikka with Prefix Sum
链接:https://www.nowcoder.com/acm/contest/148/D 来源:牛客网 题目描述 Prefix Sum is a useful trick in data struc ...
最新文章
- NanodetPlus网络结构
- java中Array和ArrayList区别 可以将 ArrayList想象成一种会自动扩增容量的Array
- Javascript 严格模式详解
- CDS view里case - when - else关键字的用法
- 2020蓝桥杯省赛---java---B---2(寻找 2020)+测试txt
- 使用C和汇编实现一个加法操作
- 华强北耳机版本太多,不知道如何选购?
- 基于CentOS7,MySQL5.7的高可用MHA架构搭建实战
- 王国权辞任中国电信股份有限公司执行副总裁
- 关于.NET的单元测试
- 中国近红外成像行业市场供需与战略研究报告
- matlab中求雅克比矩阵的方法及cov函数的用法,协方差矩阵—Hessian矩阵—正定矩阵
- 遇见逆水寒如何在电脑上玩 遇见逆水寒模拟器玩法教程
- [转]KSN报告:2014 - 2016年的PC勒索软件
- 深度学习 - 生成对抗网络
- python计算log2×_带有Python示例的math.log2()方法
- 数学三次危机(四)第一次数学危机
- centos 5.2自动安装的php不支持mysql?
- C语言GUI编程之数字记忆游戏——项目构建
- java使用world模板动态生成PDF文件
热门文章
- 七牛云 rs.php 没有,设置了callbackUrl,七牛只是在客户端上打印了json格式的key和hash,居然没有按照设置跳转回来..怎么弄?...
- erc20钱包下载_DREP IOS客户端上线|支持BTC/DREP及所有ERC20通证,云端钱包功能
- 未能写入输出文件拒绝访问
- 《高级无线网络—4G技术》——2.3 正交频分复用
- I.MX6 make menuconfig进入x86模式
- 如何使用迅雷下载电骡的资源
- Oracle技术之SYS用户对象不支持延迟段
- Word(六)-强大的“邮件合并”(2)
- WinForm程序设计-ToolTip控件
- 【车道线检测与寻迹】【实践】4月17 线车位的实验思路与后续工作构想