给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走。问至少走多少次才能将财宝捡完。此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完。
「BZOJ 3062」Taxi - 贪心
Bessie 在农场上为其他奶牛提供出租车服务。这些奶牛已经在沿着长度为 的栅栏上不同的地点聚集等候。不幸的是,他们已经厌倦了他们当前所在的位置并且每只奶牛都想要沿着栅栏去别的地方走走。Bessie 必须赶到这些奶牛的起始位置,并把他们带到它们的目的地。Bessie 的车很小,所以她只能一次只能搭载一头奶牛。奶牛可以在同一时刻完成上车和下车。
为了节省燃气,Bessie 想以尽可能少的燃料完成这次任务。 只奶牛的起始位置和结束为止都是已知的,请确定 Bessie 的最少行程。Bessie 意识到,要使所得到的行程最短,Bessie 可能将在沿途中让奶牛上车或下车而并不一定将一头奶牛从起点直接送到中点。
Bessie 的起点是围栏的最左端,位置记为 。终点在篱笆的最右边,位置记为 。
「BZOJ 3376」Cube Stacking - 带权并查集
约翰和贝茜在玩一个方块游戏。编号为 到 的 个方块正放在地上.每个构成一个立方柱。
游戏开始后,约翰会给贝茜发出 个指令。指令有两种:
- 移动:将包含 的立方柱移动到包含 的立方柱上;
- 统计:统计名含 的立方柱中,在 下方的方块数目。
写个程序帮贝茜完成游戏。
「集训队互测 2015」未来程序 · 改 - 编译原理
在 2111 年,第 128 届全国青少年信息学奥林匹克冬令营前夕,Z 君找到了 2015 年,第 32 届冬令营的题目来练习。
他打开了第三题「未来程序」这道题目:
「本题是一道提交答案题,一共 10 个测试点。
对于每个测试点,你会得到一段程序的源代码和这段程序的输入。你要运行这个程序,并保存这个程序的输出。
遗憾的是这些程序都效率极其低下,无法在比赛的 5 个小时内得到输出。」
Z 君想了一下,决定用 2111 年的计算机来试着运行这个题目,但是问题来了,Z 君已经找不到 96 年前的那次比赛的测试数据了 ……
没有给出输入数据的提交答案题就不成其「提交答案题」之名,为了解决这个问题,Z 君决定将这个题目改造成传统题。
Z 君知道 96 年前的计算机的性能比现在差多了,所以这道题的测试数据中,输入数据的规模被设计成很小,从而,做这道题的选手只需要暴力模拟源代码的工作流程就可以通过它。
现在这道题摆到了你的面前。
本题是一道传统题,一共有 10 个测试点。
对于每个测试点,你的程序会得到一段程序的源代码和这段程序的输入。你的程序需要运行这段程序,并输出这段程序的输出。
上下界网络流学习笔记
在普通的网络流问题中,给定单一的源点与汇点,每条边有流量上界(容量),在其它所有点满足流量平衡条件,且流出 的流量等于流入 的流量的前提下,求 到 的最大流。而有一类网络流问题,每条边不仅有流量上界,还有流量下界,这类问题需要转化求解。
「WC2013」糖果公园 - 树链剖分 + 莫队
Candyland 有一座糖果公园,公园里不仅有美丽的风景、好玩的游乐项目,还有许多免费糖果的发放点,这引来了许多贪吃的小朋友来糖果公园玩。
糖果公园的结构十分奇特,它由 个游览点构成,每个游览点都有一个糖果发放处,我们可以依次将游览点编号为 至 。有 条双向道路连接着这些游览点,并且整个糖果公园都是连通的,即从任何一个游览点出发都可以通过这些道路到达公园里的所有其它游览点。
糖果公园所发放的糖果种类非常丰富,总共 种,它们的编号依次为 至 。每一个糖果发放处都只发放某种特定的糖果,我们用 来表示 号游览点的糖果。
来到公园里游玩的游客都不喜欢走回头路,他们总是从某个特定的游览点出发前往另一个特定的游览点,并游览途中的景点,这条路线一定是唯一的。他们经过每个游览点,都可以品尝到一颗对应种类的糖果。
大家对不同类型的糖果的喜爱程度都不尽相同。根据游客们的反馈打分,我们得到了糖果的美味指数,第 种糖果的美味指数为 。另外,如果一位游客反复地品尝同一种类的糖果,他肯定会觉得有一些腻。根据量化统计,我们得到了游客第 次品尝某类糖果的新奇指数 ,如果一位游客第 次品尝第 种糖果,那么他的愉悦指数 将会增加对应的美味指数与新奇指数的乘积,即 。这位游客游览公园的愉悦指数最终将是这些乘积的和。
当然,公园中每个糖果发放点所发放的糖果种类不一定是一成不变的。有时,一些糖果点所发放的糖果种类可能会更改(也只会是 种中的一种),这样的目的是能够让游客们总是感受到惊喜。糖果公园的工作人员小 A 接到了一个任务,那就是根据公园最近的数据统计出每位游客游玩公园的愉悦指数。但数学不好的小 A 一看到密密麻麻的数字就觉得头晕,作为小 A 最好的朋友,你决定帮他一把。
「NOI2005」维修数列 - Splay
请写一个程序,要求维护一个数列,支持以下 种操作。
操作 | 输入格式 | 说明 |
---|---|---|
插入 | INSERT pos cnt a[1] a[2] ...... a[cnt] |
在当前数列的第 个数字后插入 个数字:,如果 ,则在首部插入 |
删除 | DELETE pos cnt |
从当前数列的第 个数字开始,删除连续的 个数字 |
修改 | MAKE-SAME pos cnt x |
将当前数列的第 个数字开始的连续 个数字统一修改为 |
翻转 | REVERSE pos cnt |
取出当前数列的第 个数字开始的连续 个数字,翻转后放入原来的位置 |
求和 | GET-SUM pos cnt x |
计算从当前数列的第 个数字开始的连续 个数字的和并输出 |
最大子段和 | MAX-SUM |
求出当前数列中和最大的一段子序列,并输出其和 |