2016 ICPC青岛赛 hdu5988 G.Coding Contest

手把手教你用Zynq-7100 FPGA实现100Mbps OOK信号定时同步(含完整Verilog代码) 本文详细介绍了如何在Zynq-7100 FPGA平台上实现100Mbps OOK信号的定时同步,涵盖插值算法、Gardner定时误差检测等关键技术。通过完整的Verilog代码和优化技巧,解决了50MHz外部时钟条件下的400MHz采样率同步挑战,为无线通信系统设计提供实用解决方案。 阅读详情


Coding Contest

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 849    Accepted Submission(s): 156


Problem Description
A coding contest will be held in this university, in a huge playground. The whole playground would be divided into N blocks, and there would be M directed paths linking these blocks. The i-th path goes from the  ui -th block to the  vi -th block. Your task is to solve the lunch issue. According to the arrangement, there are  si competitors in the i-th block. Limited to the size of table,  bi  bags of lunch including breads, sausages and milk would be put in the i-th block. As a result, some competitors need to move to another block to access lunch. However, the playground is temporary, as a result there would be so many wires on the path.
For the i-th path, the wires have been stabilized at first and the first competitor who walker through it would not break the wires. Since then, however, when a person go through the i - th path, there is a chance of  pi  to touch
the wires and affect the whole networks. Moreover, to protect these wires, no more than  ci  competitors are allowed to walk through the i-th path.
Now you need to find a way for all competitors to get their lunch, and minimize the possibility of network crashing.
 

Input
The first line of input contains an integer t which is the number of test cases. Then t test cases follow.
For each test case, the first line consists of two integers N (N ≤ 100) and M (M ≤ 5000). Each of the next N lines contains two integers si and  bi  ( si  ,  bi  ≤ 200).
Each of the next M lines contains three integers  ui  ,  vi  and  ci(ci  ≤ 100) and a float-point number  pi (0 <  pi  < 1).
It is guaranteed that there is at least one way to let every competitor has lunch.
 

Output
For each turn of each case, output the minimum possibility that the networks would break down. Round it to 2 digits.
 

Sample Input
  
1 4 4 2 0 0 3 3 0 0 3 1 2 5 0.5 3 2 5 0.5 1 4 5 0.5 3 4 5 0.5
 

Sample Output
  
0.50
 

Source
 

Recommend
jiangzijing2015   |   We have carefully selected several similar problems for you:   5994  5993  5992  5991  5990 
 
题意:n个点,每个点有si个人和bi个面包,有m条有向边,每次通过都有pi的概率破坏这条路,第一次通过不会破坏,求最小破坏概率使得所有人都能吃到面包。

思路:求最小破坏概率就是求最大不破坏概率。就是(1-p)的乘积,显然这道题是费用流问题,费用流模板里面费用是用加减的,所以这里取对数log2(1-p),模板求的是最小费用,所以再加个负号,也就是费用w=-log2(1-p),最后答案再取回对数就好了。注意就是这里的费用是浮点数,那么就要加eps来判断,不然会tle的。下面给代码:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#include<queue>
#include<string>
#include<functional>
typedef long long LL;
using namespace std;
#define MAXN 110
#define MAXM 25000
#define ll l,mid,now<<1
#define rr mid+1,r,now<<1|1
#define lson l1,mid,l2,r2,now<<1
#define rson mid+1,r1,l2,r2,now<<1|1
#define pi acos(-1.0)
#define INF 2e9
const double eps = 1e-8;
const int mod = 1e9 + 7;
struct Edge
{
	int to, next, cap, flow;
	double cost;
}edge[MAXM];
int head[MAXN], tol;
int pre[MAXN];
double dis[MAXN];
bool vis[MAXN];
int N;//节点总个数,节点编号从0~N-1  
void init(int n)
{
	N = n;
	tol = 0;
	memset(head, -1, sizeof(head));
}
void addedge(int u, int v, int cap, double cost)
{
	edge[tol].to = v;
	edge[tol].cap = cap;
	edge[tol].cost = cost;
	edge[tol].flow = 0;
	edge[tol].next = head[u];
	head[u] = tol++;
	edge[tol].to = u;
	edge[tol].cap = 0;
	edge[tol].cost = -cost;
	edge[tol].flow = 0;
	edge[tol].next = head[v];
	head[v] = tol++;
}
bool spfa(int s, int t)
{
	queue<int>q;
	for (int i = 0; i <= N; i++)
	{
		dis[i] = INF;
		vis[i] = false;
		pre[i] = -1;
	}
	dis[s] = 0;
	vis[s] = true;
	q.push(s);
	while (!q.empty())
	{
		//cout<<1<<endl;  
		int u = q.front();
		q.pop();
		vis[u] = false;
		for (int i = head[u]; i != -1; i = edge[i].next)
		{
			int v = edge[i].to;
			if (edge[i].cap > edge[i].flow &&
				dis[v]-dis[u]-edge[i].cost>eps)
			{
				dis[v] = dis[u] + edge[i].cost;
				pre[v] = i;
				if (!vis[v])
				{
					vis[v] = true;
					q.push(v);
				}
			}
		}
	}
	if (pre[t] == -1)return false;
	else return true;
}
//返回的是最大流,cost存的是最小费用  
int minCostMaxflow(int s, int t, double &cost)
{
	int flow = 0;
	cost = 0;
	while (spfa(s, t))
	{
		//cout<<1<<endl;  
		int Min = INF;
		for (int i = pre[t]; i != -1; i = pre[edge[i ^ 1].to])
		{
			if (Min > edge[i].cap - edge[i].flow)
				Min = edge[i].cap - edge[i].flow;
		}
		for (int i = pre[t]; i != -1; i = pre[edge[i ^ 1].to])
		{
			edge[i].flow += Min;
			edge[i ^ 1].flow -= Min;
			cost += edge[i].cost * Min;
		}
		flow += Min;
	}
	return flow;
}
int main()
{
	int t;
	scanf("%d", &t);
	while (t--){
		int n, m;
		scanf("%d%d", &n, &m);
		init(n + 1);
		for (int i = 1; i <= n; i++){
			int s, b;
			scanf("%d%d", &s, &b);
			int f = s - b;
			if (f > 0)
				addedge(0, i, f, 0);
			else if (f < 0)
				addedge(i, n + 1, -f, 0);
		}
		while (m--){
			int u, v, f;
			double w;
			scanf("%d%d%d%lf", &u, &v, &f, &w);
			w = -log2(1 - w);
			if (f > 0)
				addedge(u, v, 1, 0);
			if (f - 1>0)
				addedge(u, v, f - 1, w);
		}
		double cost = 0;
		minCostMaxflow(0, n + 1, cost);
		cost = 1 - pow(2, -cost);
		printf("%.2lf\n", cost);
	}
}


15、Qt开发中的停靠窗口、工具栏与多文档界面实现 本文详细介绍了Qt开发中停靠窗口、工具栏与多文档界面(MDI)的实现方法。通过QDockWidget和QToolBar构建灵活的用户界面,并利用QMainWindow的saveState和restoreState功能实现布局持久化;使用QMdiArea和QMdiSubWindow实现多文档管理,结合MainWindow与Editor类完成文件操作与窗口控制。文章包含完整代码示例、流程图与表格总结,适用于开发集成环境、文本编辑器等复杂桌面应用。 阅读详情

相关推荐

告别‘小爱同学’:用ESP32-S3和esp-sr SDK,从零打造一个离线语音助手(含完整代码)

本文详细介绍了如何利用ESP32-S3芯片和esp-sr SDK从零构建一个离线语音助手,涵盖硬件选型、声学设计、SDK配置及低功耗优化等关键步骤。通过实战案例和完整代码,帮助开发者实现自定义唤醒词和命令词,打造低成本、高隐私的本地语音控制解决方案。

weixin_29041195的博客 371

HDU - 6319 Problem A. Ascending Rating (单调队列)

Problem A. Ascending Rating Before the start of contest, there arennICPC contestants waiting in a long queue. They are labeled by11tonnfrom left to right. It can be easily found that theii-th ...

YOONGI 264

5分钟搞定!用FunASR在本地快速部署达摩院Paraformer语音识别模型(附常见问题解决)

本文详细介绍了如何在本地快速部署阿里达摩院开源的Paraformer语音识别模型。通过FunASR工具包,用户可在5分钟内完成环境配置、模型下载与基础识别,并掌握批量处理、性能调优及构建API服务等进阶技巧。文章重点解析了Paraformer的非自回归架构带来的速度优势,并提供了音频格式转换、依赖冲突、显存不足等常见问题的实战解决方案,助力开发者实现高效、离线的语音转写应用。

p1q2r的博客 705

Ascending Rating 单调队列

Problem A. Ascending Rating Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 2702    Accepted Submission(s): 296   Problem Description Bef...

woshi_momomo的博客 574

CentOS7上装不了最新Chrome?别折腾依赖了,试试这个老版本安装法(附103.0.5060.24 beta下载地址)

本文提供了在CentOS7上安装兼容版Chrome的详细指南,解决了因GLIBC版本限制导致的最新版Chrome无法安装的问题。推荐使用Chrome 103.0.5060.24 beta版本,并附有下载地址和完整安装步骤,包括禁用自动更新和配套工具安装,确保系统稳定性和功能完整性。

weixin_29289821的博客 570

发那科机器人karel程序

备份和查看发那科机器人中的 Karel 程序的过程主要包括从示教器中备份程序,并通过 RoboGuide 等仿真软件查看和运行程序。步骤相对简单,但需要确保你的设备和软件已经设置好,可以通过 FTP 或直接从示教器的外部存储设备进行操作。如果你在操作过程中遇到问题,建议查阅相关的用户手册或联系发那科的技术支持,确保设备设置正确。如果你有更具体的问题或需要进一步帮助,欢迎继续提问!希望如上措施及解决方案能够帮到有需要的你。

**My Coding Family** 1602

HDU6319 Problem A. Ascending Rating(2018HDU多校联赛第三场,单调队列)

Problem Description Before the start of contest, there are n ICPC contestants waiting in a long queue. They are labeled by 1 to n from left to right. It can be easily found that the i-th contestan...

riba2534的博客 707

【YOLO26实战全攻略】19——智慧交通(一):高速抛洒物与事故检测全流程落地

在智慧交通领域,高速公路抛洒物、交通事故等突发状况常导致二次事故与大规模拥堵,传统人工监控存在响应滞后、覆盖有限等痛点。本文基于Ultralytics YOLO26算法,结合ByteTrack多目标跟踪技术,构建从数据准备、模型训练到边缘部署的全栈式智慧交通检测系统。核心内容包括:多车型专属数据集构建、抛洒物检测模型优化、ByteTrack轨迹跟踪集成、异常事件(违停/逆行/碰撞)识别逻辑实现,以及NVIDIA Jetson边缘设备部署方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1491

HDU 5988 (浮点数费用流)

浮点数费用流

qq_61305213的博客 175

【前端圭臬】二:你知道的和不知道的 HTML

关于 HTML,说几个你可能不太关注的问题。

Evan 的博客 4758

Python学习第1天:初识Python

Python 作为目前最流行的编程语言之一,凭借其简洁优雅的语法和强大的生态系统,成为了无数开发者的首选。本系列文章将带你从零基础入门,逐步掌握 Python 编程的核心技能。今天我们先来认识 Python,并安装好开发环境。Python(英式发音:/ˈpaɪθən/;美式发音:/ˈpaɪθɑːn/)是由荷兰人吉多·范罗苏姆(Guido von Rossum)发明的一种编程语言,是目前世界上最受欢迎和拥有最多用户的编程语言。

tigerhhzz的博客 434

HDU 6319 Ascending Rating(滑窗最大问题)

Problem Description Before the start of contest, there are n ICPC contestants waiting in a long queue. They are labeled by 1 to n from left to right. It can be easily found that the i -th cont...

PleasantlY1的博客 409

YOLO11改进|YOLO11中引入注意力和卷积融合模块CAFMAttention

YOLO11改进|YOLO11中引入注意力和卷积融合模块CAFMAttention

A1983Z的博客 1224

hdu5988 Coding Contest

http://www.elijahqi.win/2018/01/10/hdu5988-coding-contest/ Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 4164 Accepted

Elijahqi 268

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hdu5988 2016icpc青岛站 G题 Coding Contest

Problem Description A coding contest will be held in this university, in a huge playground. The whole playground would be divided into N blocks, and there would be M directed paths linking these bloc

SSimpLe_Y的博客 1167

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HDU5988 Coding Contest 【最小费用最大流】【2016ACM/ICPC亚洲区青岛站】

题意: 给出n个点和m条边,每个点有si个人,bi份食物,每条边一开始可以通过一个人,后来的人每通过一个就有pi的概率使整个系统崩溃,问崩溃的最小的概率是多少 思路: 对于崩溃的最小概率,由于只有一条奔溃就会全部崩溃,那么将所有不会崩溃的概率相乘就是不会奔溃的概率,所以崩溃的概率 = 1 - 不会崩溃的概率,所以要求最大不会崩溃的概率,那么我们只要对不会崩溃的概率取反即可 一开始想到了网络流,但是...

OOOak 435

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

2016 ACM/ICPC 青岛 G Coding Contest (浮点数网络流+取对数)

题目链接:Coding Contest - HDU 5988 - Virtual Judge Coding ContestTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 7618    Accepted Submission(s): 1785Problem Descrip

康宇的博客 710

hdu 5988 Coding Contest 青岛G题 费用流以及一些感想吧

Coding Contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1035    Accepted Submission(s): 189 Problem Description A coding con

swust_fang 1545

HDU5988 - 2016icpc青岛 - G - Coding Contest 费用流(利用对数化乘为加

HDU5988 题意:   有n个区域,每个区域有s个人,b份饭。现在告诉你每个区域间的有向路径,每条路有容量和损坏路径的概率。问如何走可以使得路径不被破坏的概率最小。第一个人走某条道路是百分百不会损坏道路的。 思路:   对于每个人,他从起点到目的地,不损坏道路的概率是(1 - p【1】*p【2】...*p【r】)。相乘不好做,对减号右边的乘法取对数,就成了相加,就可以愉快的做相加运算了...

weixin_30572613的博客 158

HDU 5988.Coding Contest 最小费用最大流

Coding Contest Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1751Accepted Submission(s): 374 Problem Description A coding contest will ...

weixin_30399797的博客 153

HDU ~ 5988 ~ Coding Contest (log乘变加 + 费用流)

题意 在ICPC比赛现场,有N个点,M条路。每个点有s[i]个人和b[i]个面包,每条路上都有插线板,最多允许通过c[i]个人,每个人通过的时候有p[i]的概率会提到插线板,踢到插线板会使网络故障,但是每条路第一个人通过的时候一定不会踢到插线板。问使得每个人都能吃上面包且网络不发生故障的最大概率。保证有解。 思路 明显的费用流。最大不故障的概率 = 1 - 最小故障的概率,这样就可以求最...

张松超的博客 390

UVA-Live 7740 Coding Contest (费用流)

UVA-Live 7740 Coding Contest (费用流) 之所以不写HDU 5988是因为杭电的土豆评测机就是给我T,疯狂T,最后发现别人的题解有写UVA-Live的,那我就去试试,结果常数最糟糕的STL版本我都过了。。。992ms,还是很悬很悬。不管了,现场赛的评测机都很厉害很厉害的,不想在意这种常数细节了,反正都临近退役了,多刷点别的题也比死磕这题的常数好啊。 题意 中国石油大学举...

口丁乙orz各位菊苣口下留情orz口丁乙 267

HDU - 5988 Coding Contest(最大费用最大流+思维建边)

题目链接:点击查看 题目大意:给出n个点和m条边,每个点有ai个人和bi份食物,每条边最多能通过ci个人,以及除了第一个人之外,其他人通过每条边触电的概率为pi,在以上约束下,要求每个人都必须吃到一份食物,问最小触电概率是多少,题目保证至少有一组答案 题目分析:首先我们需要将问题转换一下,每个点有ai个人和bi份食物,可以让当前的人和食物尽可能的匹配,只有三种情况: ai>bi:此时人...

Falcon的博客 469

G - Coding Contest HDU - 5988

看到题意,求最小概率,同时每条边都有限制。那岂不是最大流量最小费用。但是这里的概率是相乘,我们用最大流量最小费用的时候概率是相加。我们可以取log 同时,注意到,求最小概率,就为1-最大概率。故,我们把每条边的概率赋值为1-最小概率 例log(ab) =log(a)+log(b)。 但是又有一个问题,取完log后的值为负数,所以我们要把负数*-1变成正数。 因为负数的最大费用=变为正数后的最小费用...

年轻过成了秃顶 262

HDU5988(最小费用流)

题意:图上有n个点,每个点上有a个人,b个面包,面包不够吃得去其他地方,但是每次走一条路,除了第一次,第二次开始都有P的概率让路坏掉。求路被破坏的最小概率。 分析:第一次没影响,那就对(流量-1)给花费即可。如果面包比人多,说明其他人能来这里吃,那么就把多余的连向源点。然后如果不够就把不够的连向汇点。        难点:概率是乘法。没法算费用。但是如果同时取对数,那么就成加法了,就可以做了!

nucshiyilang的博客 534

hdu5988(最小费用流浮点)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5988 思路:求网络最小破坏可能,就是求最大不破坏的可能,再加上一个负号又变成了求最小费用流,对于乘法加上一个对数就变成了加法,需要注意的是对于浮点数要加上eps。 #pragma GCC optimize(2) #include &lt;cstdio&gt; #include &lt;cstdl...

llmxby 567
上一篇: hdu1880 魔咒词典 (hash)
下一篇: 哈尔滨理工大学软件学院ACM程序设计全国邀请赛(网络同步赛)F Fibonacci Again
overload1997
博客等级 码龄11年 328粉丝 210原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值