洛谷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分数规划的更多相关文章

  1. 洛谷P3199 [HNOI2009]最小圈(01分数规划)

    题意 题目链接 Sol 暴力01分数规划可过 标算应该是这个 #include<bits/stdc++.h> #define Pair pair<int, double> #d ...

  2. 【洛谷 P3199】 [HNOI2009]最小圈(分数规划,Spfa)

    题目链接 一开始不理解为什么不能直接用\(Tarjan\)跑出换直接求出最小值,然后想到了"简单环",恍然大悟. 二分答案,把所有边都减去\(mid\),判是否存在负环,存在就\( ...

  3. 【洛谷 P3705】 [SDOI2017]新生舞会(费用流,01分数规划)

    题目链接 看到这题我想到了以前做过的一题,名字记不清了,反正里面有"矩阵"二字,然后是道二分图匹配的题. 经典的行列连边网络流. 第\(i\)行和第\(j\)列连边,费用为\(b[ ...

  4. 洛谷P2868 [USACO07DEC]观光奶牛Sightseeing Cows(01分数规划)

    题意 题目链接 Sol 复习一下01分数规划 设\(a_i\)为点权,\(b_i\)为边权,我们要最大化\(\sum \frac{a_i}{b_i}\).可以二分一个答案\(k\),我们需要检查\(\ ...

  5. 洛谷3705 [SDOI2017] 新生舞会 【01分数规划】【KM算法】

    题目分析: 裸题.怀疑$ O(n^4log{n}) $跑不过,考虑Edmonds-Karp优化. 代码: #include<bits/stdc++.h> using namespace s ...

  6. 洛谷P1404 平均数 [01分数规划,二分答案]

    题目传送门 平均数 题目描述 给一个长度为n的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度>=m. 输入输出格式 输入格式: N+1行, 第一行两个整数n和m 接下来n ...

  7. 洛谷P3778 [APIO2017]商旅——01分数规划

    题目:https://www.luogu.org/problemnew/show/P3778 转化有点技巧: 其实直接关注比率的上下两项,也就是盈利和时间: 通过暴枚和 floyd 可以处理出两两点间 ...

  8. 分数规划模板(洛谷P4377 [USACO18OPEN]Talent Show)(分数规划,二分答案,背包)

    分数规划是这样一个东西: 给定若干元素,每个元素有两个属性值\(a_i,b_i\),在满足题目要求的某些限制下选择若干元素并求出\(\frac{\sum a}{\sum b}\)的最大值. 如果没有限 ...

  9. 【POJ3621】【洛谷2868】Sightseeing Cows(分数规划)

    [POJ3621][洛谷2868]Sightseeing Cows(分数规划) 题面 Vjudge 洛谷 大意: 在有向图图中选出一个环,使得这个环的点权\(/\)边权最大 题解 分数规划 二分答案之 ...

随机推荐

  1. #个人博客作业Week1----关于软件和软件工程的出现

    1.软件工程这个词如何出现的? 数学与电脑科学先锋Margaret Hamilton在开发阿波罗11号软件的期间发明的,目的是将软件与硬件还有其他工程学类做出区别,为软件以及那些发明者争取应有的正统性 ...

  2. someday团队Postmortem(事后诸葛亮会议)

    一.会议相关介绍: 时间:2018年1月12日 地点:第九实验楼五楼机房 参会人员:someday团队全体成员 二.每个成员在beta阶段的实践和alpha阶段有何改进? (一)设想和目标: 我们的软 ...

  3. JavaScript学习笔记之JavaScript调用C#编写的COM组件

    1.新建一个C#类库项目:MyCom: 2.修改 Properties 目录下的 AssemblyInfo.cs(程序集文件) 中的 ComVisible 属性为 true: 3.项目->属性- ...

  4. BaseServlet 继承 httpServlet

    BaseServlet   核心 package cn.core; import java.io.IOException; import java.lang.reflect.Method; impor ...

  5. final发布评论Ⅱ

    奋斗吧兄弟:奋斗吧兄弟团队提供了草原.水域.田地三种环境可以进行选择.功能如下:添加自定义生物功能可以增加生物种类,但是无法设置捕食关系,这里希望想办法完善.生物除了图片方式以外,还可以以文字的方式展 ...

  6. join()方法跟踪

    #join方法跟踪java.lang.Thread.join() 进入线程的join方法,实际上线程thread是实现的 runnable接口 class Thread implements Runn ...

  7. phaser3 微信小游戏入门

    phaser与eget, laya, pixi.js本质上没什么区别. 都是渲染引擎.  其它的都是配角.  phaser的特点是.代码容易理解 功能比较全面. 个人比较喜欢phaser的地方 twe ...

  8. Java多线程与线程同步

    六.多线程,线程,同步 ①概念: 并行:指两个或多个在时间同一时刻发生(同时发生) 并发:指两个或多个事件在同一时间段内发生 具体概念: 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多 ...

  9. P2824 [HEOI2016/TJOI2016]排序

    题面 这是一道非常巧妙的线段树的题 我们会发现维护\(1 \sim n\)的序列非常困难,但如果我们维护\(01\)序列的的顺序,就非常容易了 但是我们怎么能把这道题变成维护\(01\)序列的顺序呢? ...

  10. jenkins构建docker镜像上传到harbor并发布到kubernetes

    很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有 ...