bzoj4819 [Sdoi2017]新生舞会 分数规划(实数二分)+网络流检验
这个题其实就是二分检验。。
稍微移个项就可以得到(a1-c*b1)+(a2-c*b2)+……
这样贡献就化成了具体到每次决策的影响,c显然满足连续性,所以可以二分c
跑最大流以求得到最大的值使当前答案显得小,就可以得出答案
主要就是化动为静,,如果答案反过来影响过程就可以考虑枚举答案分析,然后来判断当前的影响值 和 作为限度的影响值
注:
1、l和r的eps
2、spfa的返回值
3、double的建边
4、前继一定是-1;
码:
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
queue<int>q;
#define N 50000
int tot=-1,hou[N],xia[N],zhong[N],v[N],s,t,i,j,n,m,qj[N];
bool vis[N];
double C[N],d[N],l,r,a[105][105],b[105][105],daan,ans;
void jian(int a,int b,double c,int d)
{++tot;hou[tot]=xia[a],xia[a]=tot,zhong[tot]=b,C[tot]=c,v[tot]=d;
}
void jia(int a,int b,double v)
{
jian(a,b,v,1);
jian(b,a,-v,0);
}
bool spfa()
{int i;for(i=1;i<=t;i++){d[i]=-99999999; }memset(qj,-1,sizeof(qj));
q.push(s);
d[s]=0;while(!q.empty()){int st=q.front();q.pop();vis[st]=0;for(i=xia[st];i!=-1;i=hou[i]){int nd=zhong[i];if(!v[i]||d[nd]>=d[st]+C[i])continue;qj[nd]=i;d[nd]=d[st]+C[i];if(vis[nd]==0){vis[nd]=1;q.push(nd);} } }if(d[t]==-99999999)return 0;int o=qj[t],minf=999;while(o!=-1){minf=min(minf,v[o]);o=qj[zhong[o^1]];}o=qj[t];while(o!=-1){ans+=C[o]*(1.00000000*v[o]);v[o]-=minf;v[o^1]+=minf;o=qj[zhong[o^1]];}
// cout<<ans<<" ";return 1;
}
void mcmf()
{
while(spfa());
}
int main()
{scanf("%d",&n);s=n*n+1;t=n*n+2;for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%lf",&a[i][j]);} }for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%lf",&b[i][j]);} }l=0.0000001;r=1000000.0000001;while(l+0.00000001<r){double mid=(l+r)/2;
memset(xia,-1,sizeof(xia));tot=-1;for(i=1;i<=n;i++){jia(s,i,0);for(j=1;j<=n;j++){jia(i,n+j,a[i][j]-mid*b[i][j]);}jia(i+n,t,0);}ans=0;mcmf();//printf("%.8lf %.8lf\n",mid,ans);if(ans<=0){r=mid;daan=mid;}else l=mid+0.0000001; }printf("%.6lf",daan);
}
bzoj4819 [Sdoi2017]新生舞会 分数规划(实数二分)+网络流检验相关推荐
- BZOJ4819: [Sdoi2017]新生舞会
BZOJ4819: [Sdoi2017]新生舞会 Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴. 有n个男生和n个女生参加舞会买一个男生和一个女 ...
- 【BZOJ 4819】 4819: [Sdoi2017]新生舞会 (0-1分数规划、二分+KM)
4819: [Sdoi2017]新生舞会 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 601 Solved: 313 Description 学 ...
- BZOJ 4819: [Sdoi2017]新生舞会
二次联通门 : BZOJ 4819: [Sdoi2017]新生舞会 /*BZOJ 4819: [Sdoi2017]新生舞会二分 + 01分数规划 + 最小费用流二分出一个答案费用流检验*/ #incl ...
- BZOJ 4819 Luogu P3705 [SDOI2017]新生舞会 (最大费用最大流、二分、分数规划)
现在怎么做的题都这么水了.. 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4819 (luogu) https://ww ...
- [SDOI2017]新生舞会
题目描述 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴. 有个男生和个女生参加舞会买一个男生和一个女生一起跳舞,互为舞伴. Cathy收集了这些同学之间的关系,比如两个 ...
- 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 题目要求ΣfiΣgi\frac{\Sigma{f_i}}{\Sigma{g_i}}ΣgiΣfi的最大值,这种问题称为01分数规 ...
- codevs 5965 [SDOI2017]新生舞会
分数规划的裸题. 不会分数规划的OIer.百度:胡伯涛<最小割模型在信息学竞赛中的应用> /* TLE1: last:add(i,j+n,1e9,(real)((real)a[i][j]- ...
- SDOI2017 新生舞会
01规划 a1+a2+a3+...+ai/b1+b2+b2+..bi最大 设一个k 使得 a1+a2+a3+...+ai/b1+b2+b3+...bi>=k 变换式子得到 a1+a2+a3+.. ...
- bzoj 4819 [Sdoi2017]新生舞会
题面 https://www.lydsy.com/JudgeOnline/problem.php?id=4819 题解 这题很好想 首先二分答案 然后令w[i][j]=a[i][j]-b[i][j]* ...
最新文章
- Swift - 给图片添加文字水印(图片上写文字,并可设置位置和样式)
- 自己遇到oracle的错误记录
- spss23出现数据消失_改善23亿人口健康数据的可视化
- mysql数据库deptno_mysql数据库的 select查询
- linux tail 查找字符串,linux 查找包含字符串的文件
- Chapter 1 Securing Your Server and Network(1):选择SQL Server业务经理
- LiquidCrystal_I2C 显示不正常 只显示第一个首字符!
- html屏幕阅读器,支持移动触摸的网页版PDF格式文件阅读器插件
- 计算机网络上级操作题,计算机网络上机操作试题答案.pdf
- 关于Pyrene-PEG2/PEG3/PEG4/PEG5-azide化学式,分子量等相关对比总结
- 连续,可积,存在原函数,变上限积分
- Emacs快捷键 转自:http://www.engr.uvic.ca/~dastone/emacs-keys.html
- 【树莓派】树莓派官方系统Raspbian安装 Docker 和 青龙面板 挂JD库脚本 --详细教程,Centos和Ubuntu服务器可参考
- 手机UC浏览器导出书签到电脑Chrome浏览器中
- 微信加密某一个人私聊?微信私密聊天
- jxl 单元格画斜线
- 计算机类高水平文章,作为本科生的我,如何成功发表高水平会议论文
- 为什么你写了一万小时的代码,却没能成为架构师?
- 模电学习笔记(上交郑老师)1.PN结
- 我这大半年——求职理论篇
热门文章
- c语言优先级大全,C语言运算符及其优先级汇总表口诀
- aes加密算法python实现_Python基于pycrypto实现的AES加密和解密算法示例
- 推荐系统实战-概念理解入门篇
- java堆和客栈_JAVA中堆、栈,静态方法和非静态方法的速度问题
- 商丘高中计算机考试成绩查询系统,河南省中招考生服务平台2019商丘中考成绩查询系统入口...
- python创意爱情代码大全-王牌花色-题解(Python代码)
- Word中如何正确添加参考文献
- php system 执行失败,php执行system()函数没有任何反应
- python实现神经网络_3. Python矢量化实现神经网络
- 一个字形容大数据_嘉禾数据科学分享(八):一个大数据专业教师眼里的大数据