HDU 3315 My Brute
HDU_3315
由于要求求满足收益最大情况下改变顺序最少的方案,因此我们在建图的时候可以将权值乘以一个常数,然后对原有边的权值自加一个较小量来体现出对该边的“偏好”。
#include<stdio.h>#include<string.h>#define MAXD 110#define MAX 1010#define INF 1000000000int V[MAXD], H[MAXD], P[MAXD], S[MAXD], X[MAXD], N;int A[MAXD], B[MAXD], slack, visx[MAXD], visy[MAXD];int G[MAXD][MAXD], yM[MAXD];int check(int i, int j){if((H[i] - 1) / X[j] >= (P[j] - 1) / S[i])return V[i];elsereturn -V[i];}int init(){int i, j; scanf("%d", &N);if(N == 0)return 0;for(i = 0; i < N; i ++) scanf("%d", &V[i]);for(i = 0; i < N; i ++) scanf("%d", &H[i]);for(i = 0; i < N; i ++) scanf("%d", &P[i]);for(i = 0; i < N; i ++) scanf("%d", &S[i]);for(i = 0; i < N; i ++) scanf("%d", &X[i]);for(i = 0; i < N; i ++)for(j = 0; j < N; j ++) { G[i][j] = 10 * (check(i, j) + MAX);if(i == j) G[i][j] += 1; }return 1;}int searchpath(int u){int v, temp; visx[u] = 1;for(v = 0; v < N; v ++)if(!visy[v]) { temp = A[u] + B[v] - G[u][v];if(temp == 0) { visy[v] = 1;if(yM[v] == -1 || searchpath(yM[v])) { yM[v] = u;return 1; } }else if(temp < slack) slack = temp; }return 0;}void KM(){int i, j, u;for(i = 0; i < N; i ++) { A[i] = 0;for(j = 0; j < N; j ++)if(G[i][j] > A[i]) A[i] = G[i][j]; } memset(B, 0, sizeof(B)); memset(yM, -1, sizeof(yM));for(u = 0; u < N; u ++)for(;;) { memset(visx, 0, sizeof(visx)); memset(visy, 0, sizeof(visy)); slack = INF;if(searchpath(u))break;for(i = 0; i < N; i ++) {if(visx[i]) A[i] -= slack;if(visy[i]) B[i] += slack; } }}void printresult(){int i, res = 0, num = 0;for(i = 0; i < N; i ++) {if(G[yM[i]][i] % 10 != 0) num ++; res += G[yM[i]][i] / 10 - MAX; }if(res > 0) printf("%d %.3f%%\n", res, 100.0 * num / N);else printf("Oh, I lose my dear seaco!\n");}int main(){while(init()) { KM(); printresult(); }return 0;}
HDU 3315 My Brute相关推荐
- 【HDOJ】3315 My Brute
几乎与2853相同,Successive Shortest Path Algorithm(SSPA) 解费用流. 1 /* 3315 */ 2 #include <iostream> 3 ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- 【HDOJ图论题集】【转】
1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...
- 一系列图论问题[转]
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- kk_想要学习的知识
2018/4/27 计算几何 一.简介 计算几何属于ACM算法中比较冷门的分类,在省赛中只在前几年考察过,这两年还没有考过,而且和高精度计算一样,遇到题目主要靠套模板,因此对题意的理解至关重要,而且往 ...
- 图论练习题(存起来练)
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Man ...
- KM算法 入门——[kuangbin]KM匹配
之前写过了关于普通二分匹配的相关题目了,就是寻找尽量多的边使得任意边连接的两点都没有与其他边相连,而km算法解决的则是在带权的二分图中寻找权值和最大的匹配,可以通过先给无连接的点连上权值为0或者负无穷 ...
- ACM比赛经验、刷题记录及模板库总结(更新中)
前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...
- 网络流题集【夏天的风】
[HDU] 1532Drainage Ditches(基础) [最大流] 3549 Flow Problem(基础) [最大流] 3572 Task Schedule [最大流]任务 ...
最新文章
- Linux上新建用户及赋权操作
- [云炬python3玩转机器学习笔记] 3-9Numpy中的arg运算
- VTK:模型之FinanceFieldData
- kafka集群编程指南
- 三维重建:Kinect几何映射-SDK景深数据处理
- POJ 1562深搜判断连体油田个数
- python控制语句第一章_python基础第一章
- 一、SQL语法——4-数据库约束
- spark共享变量(广播变量Broadcast Variable,累加器Accumulators)
- php mysql购物车代码_php购物车实现代码实例汇总
- pdf多页合成一张pdf图片
- X264源码下载地址
- 可能是数据最全的世界各国地区下拉级联,包含国际化中英文
- 研究了四大计算机名校的培养方案,核心课程都在这了
- win10多任务处理快捷键
- sentinel 熔断降级
- 小米手机控制PPT文档、查看进度的那些事
- nginx 拒绝了我们的请求
- 任性!C语言之父:因拒付论文装订费错失博士学位,论文52年后重见天日
- python定义一个数据自动去重的函数_110道Python面试题(真题小结)
热门文章
- 在设计四人抢答器中灯全亮_数字电子技术课程设计报告(四人抢答器).doc
- git reflog
- transformers Preprocessing data
- python abc
- 网络通信 MAC与ARP
- TensorFlow Attention
- 2.3 词嵌入的特性
- oracle 连接数_Oracle多租户数据库资源管理,就这么简单
- ESXi 6.7 的https服务挂掉处理方法 503 Service Unavailable (Failed to connect to endpoint: [N7Vmacore4Http16Loc
- 多个 vCenter Server 实例部署的升级或迁移顺序以及混合版本转换行为