洛谷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 洛谷 大意: 在有向图图中选出一个环,使得这个环的点权\(/\)边权最大 题解 分数规划 二分答案之 ...
随机推荐
- 机器学习初入门02 - Pandas的基本操作
之前的numpy可以说是一个针对矩阵运算的库,这个Pandas可以说是一个实现数据处理的库,Pandas底层的许多函数正是基于numpy实现的 一.Pandas数据读取 1.pandas.read_c ...
- windows 服务实现定时任务调度(Quartz.Net)
我们通常在一些情况下需要软件具有一个自动执行某些任务的功能,但是又不希望直接启动软件,或者每次都要手动的来启动软件,这时我们可可以考虑到windows服务了. 首先创建一个windows服务项目(详细 ...
- Beta 冲刺 四
团队成员 051601135 岳冠宇 031602629 刘意晗 031602248 郑智文 031602330 苏芳锃 031602234 王淇 照片 项目进展 岳冠宇 昨天的困难 数据交换比较复杂 ...
- ehcache、redis应用场景比较
应用场景: ehcache是Hibernate中默认的CacheProvider,直接在jvm虚拟机中缓存,速度快,效率高:但是缓存共享麻烦,集群分布式应用不方便. . 缓存数据有两级:内存和磁盘, ...
- sql问题--case-when
1. 有表如下,请使用查询语句得出相应结果 id job createdate 1 开发 2018-06-19 2 运维 2018-06-20 3 开发 2018-06-19 4 开发 2018-06 ...
- NOI备战总结ing……
持续做题ing…… 已完成: 树套树 点分治 博弈论 凸包 杜教筛 反演 FFT 数位DP DP专栏 网络流 数学专栏 正在进行中: waiting: SAM Kd-tree 矩阵树 分治 FWT B ...
- Invalid format of Import utility nameVerify that ORACLE_HOME is properly oracle11.2g 无法imp,dmp
1.环境变量 ORACLE_HOME 设置了没 D:\app\product\11.2.0\client_1 2.环境变量 ORACLE_SID 设置为orcl 上面是网上流行的解决方案,然而博主 ...
- 【题解】 [SCOI2011]糖果 (差分约束)
懒得复制,戳我戳我 Solution: 首先考虑\(X=1\)的情况,我们其实只用用一下并查集把相等的点合为一个点 然后后面的四个式子我们就可以用差分约束了,就拿\(X=2\)的情况来说吧,我们用\( ...
- 【转】巧用CAT706做掉电检测
相信大家都会遇到这样的情况,当你正在敲一份文档或一段代码时,啪的一下停电啦,我擦……,我的代码……,我的图纸……,我刚写好的文章…….但是在嵌入式系统中也会遇到类似的情况,通常会导致嵌入式系统数据,程 ...
- 解题:APIO 2018 铁人两项
题面 建立圆方树,考虑所有路径,发现路径上原来的点双(现在的方点)里的点都可以做中间点.但是路径上被方点夹着的圆点被计重了,要扣掉:枚举的两个端点也被算进去了,要扣掉.所以直接将方点权值设为点双大小, ...