洛谷4951 地震 bzoj1816扑克牌 洛谷3199最小圈 / 01分数规划
洛谷4951 地震
#include<iostream>
#include<cstdio>
#include<algorithm>
#define go(i,a,b) for(register int i=a;i<=b;i++)
#define ll long long
#define db long double
#define M 10001
#define N 401
#define inf 1e15
#define eps 1e-12
using namespace std;
ll read()
{
ll x=,y=;char c=getchar();
while(c<''||c>'') {if(c=='-') y=-;c=getchar();}
while(c>=''&&c<='') {x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
struct node{int u,v;ll t,c;db w;}a[M];
ll n,m,f,fa[N];
int find(int x){if(x==fa[x])return x;return fa[x]=find(fa[x]);}
bool cmp(node x,node y){return x.w<y.w;}
bool ck(db x)
{
go(i,,m) a[i].w=a[i].c+a[i].t*x/1e7;
db ans=f+eps;//这里加eps是为了保证精度
//-----------------------------
sort(a+,a+m+,cmp);
go(i,,n) fa[i]=i;
go(i,,m)
{
int uf=find(a[i].u),vf=find(a[i].v);
if(uf==vf) continue;
fa[uf]=vf;
ans-=a[i].w;
if(ans<)return ;
}//---------------------------最小生成树
return ;
}
int main()
{
freopen("quake.in","r",stdin);
freopen("quake.out","w",stdout);
n=read();m=read();f=read();
db l=,r=inf;
go(i,,m) a[i].u=read(),a[i].v=read(),a[i].c=read(),a[i].t=read();
if(!ck()) {printf("0.0000");return ;}
while(l<r)
{
db mid=(l+r)/;
if(ck(mid+)) l=mid+;
else r=mid;
}
printf("%.4Lf",l/(db)1e7);
return ;
}
bzoj1816扑克牌
#include<iostream>
#include<cstdio>
#define go(i,a,b) for(register int i=a;i<=b;i++)
#define ll long long
#define M 1000001
#define inf 1e12
using namespace std;
ll read()
{
ll x=,y=;char c=getchar();
while(c<''||c>'') {if(c=='-') y=-;c=getchar();}
while(c>=''&&c<='') {x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int n,m;
ll ct,c[M],l,r=inf;
bool ck(ll x)
{
ll nm=min(x,(ll)m);
go(i,,n){if(c[i]<x)nm=nm-(x-c[i]);if(nm<)return ;}
return ;
}
int main()
{
freopen("cards.in","r",stdin);
freopen("cards.out","w",stdout);
n=read();m=read();
go(i,,n) c[i]=read();
while(l<r)
{
ll mid=(l+r)>>;
if(ck(mid+)) l=mid+;
else r=mid;
}
printf("%lld",l);
return ;
}
洛谷3199最小圈
#include<iostream>
#include<cstdio>
#define R register
#define go(i,a,b) for(R int i=a;i<=b;i++)
#define db long double
#define M 10001
#define N 3001
#define inf 1e10
#define eps 1e-10
using namespace std;
int rd()
{
int x=,y=;char c=getchar();
while(c<''||c>''){if(c=='-')y=-;c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int n,m,b[N],cnt;
bool in[N],flag;
db dis[N];
struct node{int v,nt;db w;}a[M];
void add(int u,int v,db w){a[++cnt].nt=b[u];a[cnt].v=v;a[cnt].w=w;b[u]=cnt;}
void ck(int u,db x)
{
in[u]=;
for(R int i=b[u];i;i=a[i].nt)
{
int v=a[i].v;db w=a[i].w;
if(dis[u]+w-x<dis[v])
{
if(in[v]||flag){flag=;return;}
dis[v]=dis[u]+w-x;
ck(v,x);
}
}
in[u]=;
}
int main()
{
n=rd();m=rd();
go(i,,m){int u=rd(),v=rd();db w;scanf("%Lf",&w);add(u,v,w);}
db l=-inf,r=inf;
while(r-l>eps)
{
db mid=(l+r)/;flag=;
go(i,,n){in[i]=;dis[i]=;}
go(i,,n){ck(i,mid);if(flag)break;}
if(flag) r=mid;
else l=mid;
}
printf("%.8Lf",l);
return ;
}
洛谷4951 地震 bzoj1816扑克牌 洛谷3199最小圈 / 01分数规划的更多相关文章
- 洛谷P3199 [HNOI2009]最小圈(01分数规划)
题意 题目链接 Sol 暴力01分数规划可过 标算应该是这个 #include<bits/stdc++.h> #define Pair pair<int, double> #d ...
- 【洛谷 P3199】 [HNOI2009]最小圈(分数规划,Spfa)
题目链接 一开始不理解为什么不能直接用\(Tarjan\)跑出换直接求出最小值,然后想到了"简单环",恍然大悟. 二分答案,把所有边都减去\(mid\),判是否存在负环,存在就\( ...
- 【洛谷 P3705】 [SDOI2017]新生舞会(费用流,01分数规划)
题目链接 看到这题我想到了以前做过的一题,名字记不清了,反正里面有"矩阵"二字,然后是道二分图匹配的题. 经典的行列连边网络流. 第\(i\)行和第\(j\)列连边,费用为\(b[ ...
- 洛谷P2868 [USACO07DEC]观光奶牛Sightseeing Cows(01分数规划)
题意 题目链接 Sol 复习一下01分数规划 设\(a_i\)为点权,\(b_i\)为边权,我们要最大化\(\sum \frac{a_i}{b_i}\).可以二分一个答案\(k\),我们需要检查\(\ ...
- 洛谷3705 [SDOI2017] 新生舞会 【01分数规划】【KM算法】
题目分析: 裸题.怀疑$ O(n^4log{n}) $跑不过,考虑Edmonds-Karp优化. 代码: #include<bits/stdc++.h> using namespace s ...
- 洛谷P1404 平均数 [01分数规划,二分答案]
题目传送门 平均数 题目描述 给一个长度为n的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度>=m. 输入输出格式 输入格式: N+1行, 第一行两个整数n和m 接下来n ...
- 洛谷P3778 [APIO2017]商旅——01分数规划
题目:https://www.luogu.org/problemnew/show/P3778 转化有点技巧: 其实直接关注比率的上下两项,也就是盈利和时间: 通过暴枚和 floyd 可以处理出两两点间 ...
- 分数规划模板(洛谷P4377 [USACO18OPEN]Talent Show)(分数规划,二分答案,背包)
分数规划是这样一个东西: 给定若干元素,每个元素有两个属性值\(a_i,b_i\),在满足题目要求的某些限制下选择若干元素并求出\(\frac{\sum a}{\sum b}\)的最大值. 如果没有限 ...
- 【POJ3621】【洛谷2868】Sightseeing Cows(分数规划)
[POJ3621][洛谷2868]Sightseeing Cows(分数规划) 题面 Vjudge 洛谷 大意: 在有向图图中选出一个环,使得这个环的点权\(/\)边权最大 题解 分数规划 二分答案之 ...
随机推荐
- 微软职位内部推荐-SW Engineer II for WinCE
微软近期Open的职位: Do you have a passion for embedded devices and services?   Does the following m ...
- Fragment 使用总结
1. 要深刻理解Fragment 的生命周期 2. Fragment.getActivity()并不能保证非空. 3.如果在Fragment中有异步的回调, 特别要注意此时Fragment 是否还at ...
- Github与SmartGit使用说明与建议
当使用github做协同的时候,我们常常需要在客户端安装相应的软件,SmartGit就是一款非常出色的软件,不过是要付费的,我们可以使用non-commercial版本. Download: http ...
- MFC Cstring转化为string
Cstring m_filePath; string sname( CW2A( m_filePath.GetString())); http://blog.sina.com.cn/s/blog_530 ...
- c++实现计算器功能 -----初代
由于时间问题,我就写的简单一点. 课程作业一 git链接: Operations 里面的Operations.cpp文件就是完成品. 1 我就简单的对我原来的代码进行了重构,原本的代码已经把函数都分得 ...
- Leetcode题库——48.旋转图像
@author: ZZQ @software: PyCharm @file: rotate.py @time: 2018/11/16 15:41 要求:给定一个 n × n 的二维矩阵表示一个图像.将 ...
- Daily Scrum – 12/10
Meeting Minutes 完了了部分页面设计,可能是没有完成的原因,感觉好丑= =: 完成了调整速度的条: 讨论了页面翻转的实现方式,以及可能的简化方式: 进一步整合各个组件: 改进页面上移的按 ...
- 给VMware下的Linux扩展磁盘空间(以CentOS6.3为例)
参照这篇文章进行的,但是和作者的步骤有些不一样. #查看挂载点:df -h#显示: 文件系统 容量 已用 可用 已用%% 挂载点/dev/mapper/vg_dc01-lv_root 47G 12G ...
- Alpha发布评价
1.奋斗吧兄弟组 食物链系统 是一个比较成熟的工具,可以应用于生物课程的辅助讲解,具有很强的软件目的性和实用性. 2.Newbee 俄罗斯方块 因为选了很经典的游戏,所以在创新上下了一定功夫,可是没有 ...
- Node.js使用UDP通讯
Node.js 的 dgram 模块可以方便的创建udp服务,,以下是使用 dgram模块创建的udp服务和客户端的一个简单例子. 一.创建 UDP Server var dgram = requir ...