题目链接

BZOJ3550

题解

单纯形裸题

题意不清,每个位置最多选一次

  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<cstdio>
  6. #include<ctime>
  7. #include<cmath>
  8. #include<map>
  9. #define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt)
  10. #define REP(i,n) for (int i = 1; i <= (n); i++)
  11. #define mp(a,b) make_pair<int,int>(a,b)
  12. #define cls(s) memset(s,0,sizeof(s))
  13. #define cp pair<int,int>
  14. #define LL long long int
  15. using namespace std;
  16. const int maxn = 1005,maxm = 100005;
  17. const double eps = 1e-8,INF = 1e15;
  18. inline int read(){
  19. int out = 0,flag = 1; char c = getchar();
  20. while (c < 48 || c > 57){if (c == '-') flag = -1; c = getchar();}
  21. while (c >= 48 && c <= 57){out = (out << 3) + (out << 1) + c - 48; c = getchar();}
  22. return out * flag;
  23. }
  24. int n,m,N,K;
  25. double a[maxn][maxn];
  26. void Pivot(int l,int e){
  27. double t = a[l][e]; a[l][e] = 1;
  28. for (int j = 0; j <= n; j++) a[l][j] /= t;
  29. for (int i = 0; i <= m; i++) if (i != l && fabs(a[i][e]) > eps){
  30. t = a[i][e]; a[i][e] = 0;
  31. for (int j = 0; j <= n; j++) a[i][j] -= a[l][j] * t;
  32. }
  33. }
  34. void init(){
  35. while (true){
  36. int e = 0,l = 0;
  37. for (int i = 1; i <= m; i++) if (a[i][0] < -eps && (!l || (rand() & 1))) l = i;
  38. if (!l) break;
  39. for (int j = 1; j <= n; j++) if (a[l][j] < -eps && (!e || (rand() & 1))) e = j;
  40. Pivot(l,e);
  41. }
  42. }
  43. void simplex(){
  44. while (true){
  45. int l = 0,e = 0; double mn = INF;
  46. for (int j = 1; j <= n; j++)
  47. if (a[0][j] > eps){e = j; break;}
  48. if (!e) break;
  49. for (int i = 1; i <= m; i++) if (a[i][e] > eps && a[i][0] / a[i][e] < mn)
  50. mn = a[i][0] / a[i][e],l = i;
  51. Pivot(l,e);
  52. }
  53. }
  54. int main(){
  55. srand(time(NULL));
  56. N = read(); n = 3 * N; K = read();
  57. int tmp = (N << 1 | 1); m = tmp + n;
  58. for (int j = 1; j <= n; j++){
  59. a[0][j] = read();
  60. a[tmp + j][j] = 1;
  61. a[tmp + j][0] = 1;
  62. }
  63. for (int j = 1; j <= n; j++){
  64. int E = min(j,tmp);
  65. for (int i = max(1,j - N + 1); i <= E; i++)
  66. a[i][j] = 1;
  67. }
  68. for (int i = 1; i <= tmp; i++) a[i][0] = K;
  69. init(); simplex();
  70. printf("%lld\n",(LL)(-a[0][0] + 0.5));
  71. return 0;
  72. }

BZOJ3550 [ONTAK2010]Vacation 【单纯形】的更多相关文章

  1. BZOJ3550: [ONTAK2010]Vacation

    3550: [ONTAK2010]Vacation Time Limit: 10 Sec  Memory Limit: 96 MBSubmit: 91  Solved: 71[Submit][Stat ...

  2. BZOJ 3550 ONTAK2010 Vacation 单纯形

    题目大意:给定一个长度为3n的区间.要求选一些数,且随意一段长度为n的区间内最多选k个数.求选择数的和的最大值 单纯形直接搞 注意一个数仅仅能被选一次 因此要加上xi<=1这个约束条件 不明确3 ...

  3. bzoj3550: [ONTAK2010]Vacation(单纯形法+线性规划)

    传送门 直接暴力把线性规划矩阵给打出来然后单纯形求解就行了 简单来说就是每个数记一个\(d_i\)表示选或不选,那么就是最大化\(\sum d_ic_i\),并满足一堆限制条件 然后不要忘记限制每个数 ...

  4. bzoj3550: [ONTAK2010]Vacation&&bzoj3112: [Zjoi2013]防守战线

    学了下单纯形法解线性规划 看起来好像并不是特别难,第二个code有注释.我还有...*=-....这个不是特别懂 第一个是正常的,第二个是解对偶问题的 #include<cstdio> # ...

  5. BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划

    BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得 ...

  6. BZOJ 3550: [ONTAK2010]Vacation [单纯形法]

    有3N个数,你需要选出一些数,首先保证任意长度为N的区间中选出的数的个数<=K个,其次要保证选出的数的个数最大. 好像都是费用流... 单纯性裸题呀... 注意每个数最多选1次 #include ...

  7. 【BZOJ1283/3550】序列/[ONTAK2010]Vacation 最大费用流

    [BZOJ1283]序列 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得原序列中任意长度为 的子串中被选出的元素不超过K(K,M<=100) 个,并且选出的元素之和 ...

  8. 【Richard 的刷(水)题记录】

    大概想了想,还是有个记录比较好. 9/24 网络流一日游: 最大流:bzoj1711[Usaco2007 Open]Dining 拆点 BZOJ 3993 Sdoi2015 星际战争 二分 P.S.这 ...

  9. 【BZOJ】【3550】【ONTAK2010】Vacation

    网络流/费用流 Orz太神犇了这题…… 我一开始想成跟Intervals那题一样了……每个数a[i]相当于覆盖了(a[i]-n,a[i]+n)这个区间……但是这样是错的!!随便就找出反例了……我居然还 ...

随机推荐

  1. GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高。

    GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高. 插件地址:https://plugins.jetbr ...

  2. 记一次RMI的调用数据失误

    这两天在测试一个Spring RMI接口的时候,出现了个奇怪的问题.Server端返回的数据,到了客户端出现了属性丢失的情况. 类继承体系 .客户端里面定义在ClassA中的属性全部为null. 分析 ...

  3. Python之并发编程-多进程

    目录 一.multiprocessiong模块介绍 二.Process类的介绍 三.进一步介绍(守护进程.锁.队列.管道.事件等) 1.守护进程 2.锁(同步锁.互斥锁) 3.信号量(了解) 4.队列 ...

  4. 前端_html

    目录 HTML介绍 标签说明 常用标签 <!DOCTYPE>标签 <head>内常用标签 <body>内常用标签 特殊字符 其他:各种各样的标签 HTML的规范 H ...

  5. Thunder-Final冲刺中间产物-2017秋-软件工程第十二次作业

    Thunder-Final发布中间产物(WBS&PSP) WBS: 分解方式:按照「爱阅」阅读器的实施过程分解 使用工具:visio 2013 PSP: PSP 预期时间 Planning 计 ...

  6. 2-Seventh Scrum Meeting20151207

    任务分配 闫昊: 今日完成:完成数据库设计. 明日任务:和唐彬讨论接口如何在android实现. 唐彬: 今日完成:读了IOS讨论区后台接口. 明日任务:和闫昊讨论接口如何在android实现. 史烨 ...

  7. C#中周,月,第几周,周开始结束时间de方法总结

    1.c#获取当前时间是本年的第几周,本月的第几周 private static int getWeekNumInMonth(DateTime daytime) { int dayInMonth = d ...

  8. Sprint会议3

    昨天:熟悉了一下软件操作,设计了图标. 今天:今天满课,没有做什么实质性的进展. 遇到问题:由于没干什么,也没遇到什么问题.

  9. JS学习:JavaScript的核心

    分享到 分类 JS学习   发布 ourjs  2013-12-02 注意 转载须保留原文链接,译文链接,作者译者等信息.     作者: JeremyWei  原文: JavaScript The ...

  10. Excel作为数据源TesTNG做数据驱动完整代码

    说明:EXCEL 支持xls 和xlsx 俩种格式 : 已经过测试 ! package main.java; import org.apache.poi.ss.usermodel.*; import ...