【Luogu P4644】Cleaning Shifts】的更多相关文章

题目 给定 \(n\) 个区间 \([a_i, b_i]\), 花费为 \(c_i\), 求覆盖 \([L, R]\) 区间的所有整数的最小花费. \(0\le n \le 10^4, 0\le L,R\le 86399\) 分析 一道很水的题目. 设 \(f(i)\) 代表目前选择了第 \(i\) 个区间, 且第 \(i\) 个区间以前的的所有数都选择到了. 易得: \[ f(i) = \min_{b_j > a_i, b_i < b_j} f(j) + c_i \] 一看, 这不就是裸的二…
Cleaning Shifts Descriptions: 原文是English,我这就直接上Chinese了,想看原文的点一下链接哦 大表哥分配 N (1 <= N <= 25,000) 只中的一些奶牛在牛棚附近做些清洁. 他总是要让至少一只牛做清洁.他把一天分成T段(1 <= T <= 1,000,000), 第一段是1,最后一段是T 每只奶牛只在一些时间段有空.奶牛如果选择某一段时间,则必须完成整段时间的工作 你的任务是帮助FJ安排一些奶牛,使每段时间至少有一只奶牛被安排来做…
Luogu P3275 显然是一道经典的差分约束系统 相关知识可以查看:[Luogu 1993]差分约束系统问题--小K的农场 值得注意的是这题使用最长路更合适,因为每一个人都要取得至少一个糖果.在添加超级起点时,这本身就是一个使用大于等于号的关系,如果更换成小于等于号则会导致边的方向改变,这样又违背了超级起点的初衷. #include<cstdio> #include<algorithm> using namespace std; struct data { int to,nex…
Luogu P2515 这道题的题面与P2146有点像.一些不同地方就是P2146是无环的,这题是有环的. 很显然,如果有几个软件的依赖关系形成环,那么这几个软件就可以被看成是一个大软件,其价值和空间都是原先的总和. 那么,我们就可以利用Tarjan算法求强连通分量+缩点,最后加一个树上的背包就可以了. 注意,缩点后的图不一定是一棵树,但是我们可以人为的加入一个权值为零的根节点,连接所有入度为0的点. 有关Tarjan算法和强连通分量: [Luogu P3387]缩点模板(强连通分量Tarjan…
Luogu P3388 在一个无向图中,如果有一个顶点集合,删除这个顶点集合以及这个集合中所有顶点相关联的边以后,图的连通分量增多,就称这个点集为割点集合. 如果某个割点集合只含有一个顶点X(也即{X}是一个割点集合),那么X称为一个割点. 为了便于理解,我们可以从狭义上进行分析:对于一个连通无向图,删去其中的一个点可以令这个图不再连通,那么这个点就是割点(之一). 那么再推广一下:对于一个无向图,删除其中一个点,使这个图的连通块增多,那么这个点就是割点之一. 对于这一类题目,仍然可以采用类似求…
点我进入原题Luogu P1981 [解题思路] 仔细分析题目,这就是一道模拟题…… 直接按照符号读入全部的数字,先算乘法,最后把全部数加起来就是结果了 记得要%10000取最后四位 [参考程序] #include<iostream> #include<cstring> #include<cstdio> using namespace std; string st; int n,num[100005],p[100005],ans; int main() { cin>…
题目原链接: Luogu 小A点菜 [解题思路] 常规的0-1背包,不过是求装满整个背包的方案数,只要把0-1背包的状态转移方程稍微改一下就行.因为要求方案数,那么把方程中的max换成sum就行. [解题反思] 要注意变量的含义和题目所问的问题 [参考程序] #include<iostream> #include<cstdio> using namespace std; int v,n,a[200005],f[10002]; int main() { cin>>v>…
题目链接:Luogu P2563 质数和分解(prime) [问题描述] 任何大于 1 的自然数 N,都可以写成若干个大于等于2且小于等于 N 的质数之和表达式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式.例如9 的质数和表达式就有四种本质不同的形式:9 = 2+5+2 = 2+3+2+2 = 3+3+3 = 2+7 . 这里所谓两个本质相同的表达式是指可以通过交换其中一个表达式中参加和运算的各个数的位置而直接得到另一个表达式.试编程求解自然数 N 可以写成多少种本质不…
Luogu P1090 [解题思路] 刚看到这题的时候,第一反应就是每次取两个最小,然后重新排序,再取最小.但是这样会TLE. 既然找最小的,那就可以利用单调队列了.显然输入的数据是不具有单调性的,但是可以排一次序,使之具有单调性. 这题需要两个队列,一个队列用于存储最先给出的堆,另一个队列用于存储合并后的堆. 值得一提的是,后面合并出来的堆,一定比前面合并出来的要大. 也就是说队列的单调性在这里是自然而然的,不需要维护的. 此时我们可以选择的操作有三种: 在队列1中选择最小两个 在队列2中选择…
POJ 2823 Luogu P1886 [解题思路] 这是一个单调队列算法的经典题目,几乎学习单调队列的人都接触过这题. 利用单调队列算法求出每一个固定区间内的最(大/小)值. 以下以最大值为例: 将要进队的值如果比队尾大,那么意味着进队值比队尾的值更优,那么 从尾部继续向前寻找,如果还是比前面的更优,那么就一直寻找.直到符合条件或者队列为空为止,接着进行进队操作. 如果队头已经不在区间内,那么队头出队. 对于本题来说,其实队头出队的操作不一定需要写while循环,其实使用if也是等价的. w…