先讲解一下如何处理这道题的毒瘤输入。\(m\) 和 \(d\) 之间的“/”和“ TO ”都可以用 getchar() 强行吃掉,日期的转换可以用公式 \(s_{m-1} + d\) 表示,其中 \(s\) 是每月日数的前缀和。

int s[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

inline int getid(int month, int day){
return s[month - 1] + day;
} int main(){
...
if(y % 4 == 0 && (y % 100 != 0 || y % 400 == 0))
s[2] = 29;
for(int i = 1; i <= 12; ++i)
s[i] += s[i - 1];
...
}

可以用链式前向星存储预约。对于每一份从 \(i\) 日到 \(j\) 日的预约,建立一条从 \(j\) 到 \(i\) 的边。

如果是 \(k = 1\) 的特殊情况,很容易想到 \(O(r)\) 的动态规划做法:

\(\quad\bullet\) 设 \(dp_i\) 为到 \(i\) 日时的最大收入。

\(\quad\bullet\) \(dp_i = max \left\{ dp_{i - 1}, dp_j + p \cdot (i - j) \right\}\),其中 \(j\) 满足存在自 \(j\) 日到 \(i\) 日的预定。

对于 \(k \neq 1\) 的情况,可以二维 dp。即:

\(\quad\bullet\) \(dp_i\) 是一个大小为 \(k\) 的有序集合,从 \(dp_{i,1}\) 至 \(dp_{i,k}\) 分别表示到 \(i\) 日的前 \(k\) 大收入。

\(\quad\bullet\) \(dp_i = dp_{i - 1} \cup dp ^ \prime _ j\),其中 \(j\) 满足存在自 \(j\) 日到 \(i\) 日的预定,对于\(dp ^ \prime _ j\) 中的每一个元素 \(dp ^ \prime_{j, a}\),有 \(dp ^ \prime_{j, a} = dp_{j, a} + p \cdot (i - j)\)。

显然,所谓的“有序集合”可以用数组模拟,两个有序数列的合并操作可以归并排序。

void merge(int *dest, int *src1, int *src2){
for(int i = 0; i < k; ++i)
*(dest++) = *src1 > *src2 ? *(src1++) : *(src2++);
}

收入为 \(0\) 也是一种可能,不可以在 \(dp_{s_{12}, k} = 0\) 时直接输出 \(-1\)。正确做法如下:

if(dp[s[12]][k - 1] == 0)
std::printf("-1\n");
else
std::printf("%d\n", dp[s[12]][k]);

时间复杂度 \(O(k \cdot r)\)。

洛谷 P6046 [CTSC2000]快乐的蜜月的更多相关文章

  1. 洛谷 P5345: 【XR-1】快乐肥宅

    题目传送门:洛谷 P5345. 很荣幸为 X Round 1 贡献了自己的一题. 题意简述: 给定 \(n\) 组 \(k_i,g_i,r_i\)(\(0\le k_i,r_i<g_i\le 1 ...

  2. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  3. 洛谷1352 CODEVS1380 没有上司的舞会

    洛谷的测试数据貌似有问题,4个点RE不可避 CODEVS可AC —————— 10分钟后追记:在洛谷把数组范围开到10000+就过了 —————— 题目描述 Description Ural大学有N个 ...

  4. 洛谷 p1352 没有上司的舞会 题解

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...

  5. 洛谷 P4592: bzoj 5338: [TJOI2018]异或

    题目传送门:洛谷P4592. 题意简述: 题面说的很清楚了. 题解: 发现没有修改很快乐.再看异或最大值操作,很容易想到可持久化 01trie. 这里要把 01trie 搬到树上,有点难受. 树剖太捞 ...

  6. 洛谷P1331海战

    题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线. 不幸的是因为种种原因,国防海军部仅有很少的 ...

  7. 【洛谷3759】[TJOI2017] 不勤劳的图书管理员(树套树)

    点此看题面 大致题意: 给定一个序列,每个元素有两个属性\(a_i\)和\(v_i\),每次操作改变两个元素的位置,求每次操作后\(\sum{v_i+v_j}[i<j,a_i>a_j]\) ...

  8. 【洛谷】P1032 字串变换

    题目地址:https://www.luogu.org/problemnew/show/P1032 洛谷训练场BFS的训练题呀. “BFS不就是用队列的思想去遍历一切情况嘛.我已经不是小孩子了,我肯定能 ...

  9. P3406 海底高铁 (洛谷)

    题目背景 大东亚海底隧道连接着厦门.新北.博艾.那霸.鹿儿岛等城市,横穿东海,耗资1000亿博艾元,历时15年,于公元2058年建成.凭借该隧道,从厦门可以乘坐火车直达台湾.博艾和日本,全程只需要4个 ...

随机推荐

  1. 炸鱼w咕咕咕

    退役选手又回来了w + 将近一个月莫有学OI变得十分笨拙 + 洛谷打卡从300+ 变为 10 + 冬令营加油(虽然我会崩 + 省选加油 (虽然我进不去

  2. 洛谷 P3865 【模板】ST表(模板)

    嗯... 题目链接:https://www.luogu.com.cn/problem/P3865 ST(Sparse Table)算法,运用了倍增的思想. 我们令f[i][k]数组表示区间[i, i ...

  3. LVS DR实验!

    =========================================================================== 操作图 设备:两台节点模拟机,一台调度机 调度机 ...

  4. 计算机二级C语言选择题错题知识点记录。

    计算机二级C语言选择题错题知识点记录. 1,在数据流图中,用标有名字的箭头表示数据流.在程序流程图中,用标有名字的箭头表示控制流. 2,结构化程序设计的基本原则:自顶向下,逐步求精,模块化,限制使用g ...

  5. ASP.NET Core搭建多层网站架构【15-扩展之使用Obfuscar混淆加密保护代码】

    2020/02/03, ASP.NET Core 3.1, VS2019, Obfuscar 2.2.25 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[15-扩展之使 ...

  6. 【笔记5-购物车及地址模块】从0开始 独立完成企业级Java电商网站开发(服务端)

    购物车模块 数据库表设计 购物车表 CREATE TABLE mmall_ cart ( 'id' int(11) NOT NULL AUTO_ INCREMENT, 'user_ id' int(1 ...

  7. list随机生成数值

    List<int> numbers = Enumerable.Range(5, 10).ToList();

  8. SqlHelper类编写前奏:DataReader关闭链接出现问题

    SqlHelper是一个执行数据库操作的助手类,但是当我们没学过DataSet之前,要想使用using搭配SqlConnection和SqlCommand写出一个真正独立的SqlHelper都是不太可 ...

  9. javascript的正则匹配

    前段时间需要用到比较多的js代码,当时有点搞不清test和match方法的区别,向百度求助,找到了这边关于正则匹配的博文,感谢作者分享. 原文地址[http://blog.sina.com.cn/s/ ...

  10. pip配置永久国内源

    1.windows配置方式: (1)打开文件资源管理器 --------在地址栏中输入 %appdata% (2)手动创建一个文件夹叫做 pip (3)在pip的文件夹里面新建一个文件 pip.ini ...