转载自:http://blog.csdn.net/lvshubao1314/article/details/46910271

DES :给出n个订单和m是商店的开放时间。然后n行给出n个订单的信息。然后给出t和s。表示一个月饼的保质期和保存一天的成本。最后m行,给出每个时刻做月饼的成本。问。完成订单的最少的成本是多少。

思路就是用单调队列保存每个点之前的可以为这个点做月饼的点。刚学了单调队列。在保存下标然后找到值哪里还是有一些混乱。

第一次错了。闰年是366天。搞混了。T_T。不过时间方面的计算还是。。有点蠢。

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <iostream>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. int time[];
  8. int cost[];
  9. int order[];
  10. int inque[];
  11.  
  12. char mon[][] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
  13.  
  14. bool isleap(int year) {
  15. if (year% == )
  16. return true;
  17. else if (year% && (year%==))
  18. return true;
  19. return false;
  20. }
  21.  
  22. int year_Day(int year) {
  23. int ans = ;
  24. for (int i=; i<year; ++i) {
  25. if (isleap(i)) ans += ;
  26. else ans += ;
  27. }
  28. return ans;
  29. }
  30.  
  31. int mon_Day(bool leap, int mon) {
  32. switch (mon) {
  33. case : return ;
  34. case : return ;
  35. case : return leap ? : ;
  36. case : return leap ? : ;
  37. case : return leap ? : ;
  38. case : return leap ? : ;
  39. case : return leap ? : ;
  40. case : return leap ? : ;
  41. case : return leap ? : ;
  42. case : return leap ? : ;
  43. case : return leap ? : ;
  44. case : return leap ? : ;
  45. }
  46. }
  47.  
  48. int get_mnum(char monn[]) {
  49. for (int i=; i<; ++i) {
  50. if (strcmp(monn, mon[i]) == )
  51. return i+;
  52. }
  53. }
  54.  
  55. int getTime(char mon[], int dat, int year, int h) {
  56. bool leap = isleap(year);
  57. int ans = year_Day(year);
  58. int m = get_mnum(mon);
  59. ans += mon_Day(leap, m);
  60. ans += dat-;
  61. ans *= ;
  62. ans += h;
  63. return ans;
  64. }
  65.  
  66. int main() {
  67. int n, m;
  68. int t, s;
  69. char monn[];
  70. int dat, year, h, r;
  71. while(cin >> n >> m) {
  72. if (n == && m == ) break;
  73. for (int i=; i<n; ++i) {
  74. cin >> monn >> dat >> year >> h >> r;
  75. time[i] = getTime(monn, dat, year, h);
  76. //cout << time[i] << endl;
  77. order[i] = r;
  78. }
  79. cin >> t >> s;
  80. int tnum = ;
  81. int ans = ;
  82. int head=, tail=;
  83. for (int i=; i<m; ++i) {
  84. cin >> cost[i];
  85. while(head < tail && cost[inque[tail-]]+s*(i-inque[tail-]) > cost[i])
  86. tail--;
  87. inque[tail++] = i;
  88. while(i == time[tnum]) {
  89. while(head<tail && i-inque[head]>t)
  90. head++;
  91. ans += order[tnum]*(cost[inque[head]]+s*(i-inque[head]));
  92. tnum++;
  93. }
  94. }
  95. cout << ans << endl;
  96. }
  97. return ;
  98. }

HDU 4122 单调队列的更多相关文章

  1. Alice's mooncake shop HDU - 4122 单调队列

    题意: 有n个订单和可以在m小时内制作月饼,制作月饼不考虑时间(即,你可以在一个时刻在所有需要的月饼都做完) 接下来是n个订单的信息:需要在mon月,d日,year年,h小时交付订单r个月饼 接下来一 ...

  2. HDU 3507 单调队列 斜率优化

    斜率优化的模板题 给出n个数以及M,你可以将这些数划分成几个区间,每个区间的值是里面数的和的平方+M,问所有区间值总和最小是多少. 如果不考虑平方,那么我们显然可以使用队列维护单调性,优化DP的线性方 ...

  3. hdu 3530 单调队列最值

    /** HDU 3530 单调队列的应用 题意: 给定一段序列,求出最长的一段子序列使得该子序列中最大最小只差x满足m<=x<=k. 解题思路: 建立两个单调队列分别递增和递减维护(头尾删 ...

  4. hdu 3401 单调队列优化DP

    Trade Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  5. hdu 3415(单调队列) Max Sum of Max-K-sub-sequence

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=3415 大意是给出一个有n个数字的环状序列,让你求一个和最大的连续子序列.这个连续子序列的长度小于等于k. ...

  6. hdu 3401 单调队列优化+dp

    http://acm.hdu.edu.cn/showproblem.php?pid=3401 Trade Time Limit: 2000/1000 MS (Java/Others)    Memor ...

  7. hdu 3415 单调队列

    Max Sum of Max-K-sub-sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  8. HDU 2191 - 单调队列优化多重背包

    题目: 传送门呀传送门~ Problem Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种 ...

  9. HDU 3530 单调队列

    题目大意:给你n个数, 让你问你最长的满足要求的区间有多长,区间要求:MAX - MIN >= m && MAX - MIN <= k 思路:单调队列维护递增和递减,在加入 ...

随机推荐

  1. Python的Flask框架应用调用Redis队列数据的方法

    转自:http://www.jb51.net/article/86021.htm 任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器, ...

  2. React 教程

    React 入门实例教程 http://www.ruanyifeng.com/blog/2015/03/react.html React 测试入门教程http://www.ruanyifeng.com ...

  3. Openstack(八)部署镜像服务glance

    8.1glance镜像服务介绍 Glance是OpenStack镜像服务组件,glance服务默认监听在9292端口,其接收REST API请求,然后通过其他模块(glance-registry及im ...

  4. Openstack(三)Haproxy+Keepalived双机

    3.1部署keepalived 3.1.1下载keepalived源码包,并解压 # wget http://www.keepalived.org/software/keepalived-1.4.2. ...

  5. 朴素贝叶斯算法原理及Spark MLlib实例(Scala/Java/Python)

    朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法. 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我 ...

  6. ZOHO 免费小型企业邮箱和个人邮箱

    Zoho Mail 提供免费小型企业邮箱注册.精简版只能添加一个域到您的机构帐号,最多允许10用户.如果您想添加多个域,您可以升级到标准版.10用户免费,5 GB /每用户,5 GB (共享). 除了 ...

  7. cocos代码研究(25)Widget子类PageView学习笔记

    基础理论 ListView控件是一个显示滚动项目列表的视图组. 列表项是通过使用addChild或insertDefaultItem插入到列表中的,继承自ScrollView. 代码实践 static ...

  8. RabittMQ实践(二): RabbitMQ 与spring、springmvc框架集成

    一.RabbitMQ简介 1.1.rabbitMQ的优点(适用范围)1. 基于erlang语言开发具有高可用高并发的优点,适合集群服务器.2. 健壮.稳定.易用.跨平台.支持多种语言.文档齐全.3. ...

  9. The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online Solution

    A    Live Love 水. #include<bits/stdc++.h> using namespace std; typedef long long ll; ; const i ...

  10. EF Code First 学习笔记:关系(转)

      一对多关系 项目中最常用到的就是一对多关系了.Code First对一对多关系也有着很好的支持.很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性.导航属性等检测到模型之 ...