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相关推荐

  1. 【HDOJ】3315 My Brute

    几乎与2853相同,Successive Shortest Path Algorithm(SSPA) 解费用流. 1 /* 3315 */ 2 #include <iostream> 3 ...

  2. 【转载】图论 500题——主要为hdu/poj/zoj

    转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  3. 【HDOJ图论题集】【转】

    1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...

  4. 一系列图论问题[转]

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

  5. kk_想要学习的知识

    2018/4/27 计算几何 一.简介 计算几何属于ACM算法中比较冷门的分类,在省赛中只在前几年考察过,这两年还没有考过,而且和高精度计算一样,遇到题目主要靠套模板,因此对题意的理解至关重要,而且往 ...

  6. 图论练习题(存起来练)

    =============================以下是最小生成树+并查集======================================  [HDU]  1213 How Man ...

  7. KM算法 入门——[kuangbin]KM匹配

    之前写过了关于普通二分匹配的相关题目了,就是寻找尽量多的边使得任意边连接的两点都没有与其他边相连,而km算法解决的则是在带权的二分图中寻找权值和最大的匹配,可以通过先给无连接的点连上权值为0或者负无穷 ...

  8. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

  9. 网络流题集【夏天的风】

    [HDU] 1532Drainage Ditches(基础)    [最大流] 3549 Flow Problem(基础)    [最大流] 3572 Task Schedule    [最大流]任务 ...

最新文章

  1. Linux上新建用户及赋权操作
  2. [云炬python3玩转机器学习笔记] 3-9Numpy中的arg运算
  3. VTK:模型之FinanceFieldData
  4. kafka集群编程指南
  5. 三维重建:Kinect几何映射-SDK景深数据处理
  6. POJ 1562深搜判断连体油田个数
  7. python控制语句第一章_python基础第一章
  8. 一、SQL语法——4-数据库约束
  9. spark共享变量(广播变量Broadcast Variable,累加器Accumulators)
  10. php mysql购物车代码_php购物车实现代码实例汇总
  11. pdf多页合成一张pdf图片
  12. X264源码下载地址
  13. 可能是数据最全的世界各国地区下拉级联,包含国际化中英文
  14. 研究了四大计算机名校的培养方案,核心课程都在这了
  15. win10多任务处理快捷键
  16. sentinel 熔断降级
  17. 小米手机控制PPT文档、查看进度的那些事
  18. nginx 拒绝了我们的请求
  19. 任性!C语言之父:因拒付论文装订费错失博士学位,论文52年后重见天日
  20. python定义一个数据自动去重的函数_110道Python面试题(真题小结)

热门文章

  1. 在设计四人抢答器中灯全亮_数字电子技术课程设计报告(四人抢答器).doc
  2. git reflog
  3. transformers Preprocessing data
  4. python abc
  5. 网络通信 MAC与ARP
  6. TensorFlow Attention
  7. 2.3 词嵌入的特性
  8. oracle 连接数_Oracle多租户数据库资源管理,就这么简单
  9. ESXi 6.7 的https服务挂掉处理方法 503 Service Unavailable (Failed to connect to endpoint: [N7Vmacore4Http16Loc
  10. 多个 vCenter Server 实例部署的升级或迁移顺序以及混合版本转换行为