Codeforces 1131G(dp)
传送门
与Codeforces1107G一起食用
思路
- 想到要用dp……然后常规地设dp[i]为推倒前i个牌的最小花费
- 有两种情况:一是当前这个推,二是不推而被别人推。对于第一种,需要找到这个左推(因为扫到这里他是最后一个所以不用右推)的最远处,于是有了预处理每一位的最左边;对于第二种,巨弱鲁莽地优先队列搞了,看大佬代码直接单调栈快了我好几倍,菜不成声。
const int maxn = 25e4 + 5, maxm = 1e7 + 5;
int n, m, k[maxn], q, tot, h[maxm], L[maxm], R[maxm];
ll val[maxm], dp[maxm];
vector<int> a[maxn];
vector<ll> c[maxn];
void Read() {
read(n), read(m);
rep(i, 1, n) {
read(k[i]);
rep(j, 1, k[i]) {
int aa;
read(aa);
a[i].push_back(aa);
}
rep(j, 1, k[i]) {
ll cc;
read(cc);
c[i].push_back(cc);
}
}
for (read(q); q; q--) {
int id, mul;
read(id), read(mul);
rep(i, 1, k[id]) {
h[tot + i] = a[id][i - 1];
val[tot + i] = c[id][i - 1] * mul;
}
tot += k[id];
}
}
void Pre() {
stack<pii> st;
rep(i, 1, m) {
int l = max(1, i - h[i] + 1);
while (!st.empty() && st.top().second >= l) st.pop();
if (st.size() && l <= st.top().first) l = st.top().second;
L[i] = l;
st.push({i, L[i]});
}
while (!st.empty()) st.pop();
irep(i, m, 1) {
int r = min(m, i + h[i] - 1);
while (!st.empty() && st.top().second <= r) st.pop();
if (st.size() && r >= st.top().first) r = st.top().second;
R[i] = r;
st.push({i, R[i]});
}
}
ll Dp() {
typedef pair<ll, int> P;
priority_queue<P, vector<P>, greater<P>> Q;
rep(i, 1, m) {
dp[i] = val[i] + dp[L[i] - 1];
while (!Q.empty() && Q.top().second < i) Q.pop();
if (Q.size()) dp[i] = min(dp[i], Q.top().first);
Q.push({dp[i - 1] + val[i], R[i]});
}
return dp[m];
}
int main() {
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
Read();
Pre();
writeln(Dp());
return 0;
}
Codeforces 1131G(dp)的更多相关文章
- Codeforces 1142D(dp)
题目传送 先给出设计dp的结论: dp[i][j]:以第i个位置.以rankj的数拓展出去的方案数.意会一下,我实在想不好语言-- 其中所谓rankj=真·rank%11 找到拓展的规律,转移也就顺理 ...
- Codeforces 1107F(dp)
怎么就没人解释一下为啥用b排序可以保证正确性呢……太菜了,理解了好久. 时间流逝价值会丢失的背包,类似题洛谷1417 本题与洛谷1417不同之处在于流逝是有截止的. 1.这个dp[j]的含义是:最后跑 ...
- Codeforces 1107G(dp)
1.答案要取连续的区间疯狂暗示线段树. 2.外层枚举r,内层枚举l显然过于暴力. 3.考虑内层的优化.dp[i]:以第i位为结尾的答案(长度大于1的).dp[i] = max(第一种情况,第二种情况) ...
- codeforces 682D(DP)
题目链接:http://codeforces.com/contest/682/problem/D 思路:dp[i][j][l][0]表示a串前i和b串前j利用a[i] == b[j]所得到的最长子序列 ...
- codeforces 666A (DP)
题目链接:http://codeforces.com/problemset/problem/666/A 思路:dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行,dp[i][1]表示第a ...
- Codeforces 1144G(dp)
据说这题是种dp的套路?然后被我国红名神仙(南大Roundgod)贪心了,不过思路上非常相近了,故而可贪吧. 设的dp[i][0]是:如果把第i个数放在上升序列里了,那么下降序列结尾的那个最大是多少: ...
- Codeforces 1152D(dp)
要点 寻找最多边的匹配的结论:贪心地从叶子开始找,最后答案都是奇数层下边的那条边. 设\(dp[i][j]\)表示当前长度为\(i\),平衡度为\(j\),平衡度为(数量减去)数量. 增加左右括号转移 ...
- Three displays CodeForces - 987C (dp)
C. Three displays time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
随机推荐
- UVA11149 Power of Matrix —— 矩阵倍增、矩阵快速幂
题目链接:https://vjudge.net/problem/UVA-11149 题意: 给出矩阵A,求出A^1 + A^2 …… + A^k . 题解: 1.可知:A^1 + A^2 …… + A ...
- 一个测试基础面试题——如何测试web银行开户
之前面试被问到过这样一个问题,自己答的都是一些UI界面上的case,看了一些大神的关于这类面试题的总结才知道自己差的不是一点半点,今天也总结下. 内管银行开户,有账号.用户名.用户证件类型.证件号三个 ...
- Program received signal SIGSEGV, Segmentation fault.
GDB调试的时候出现了: Program received signal SIGSEGV, Segmentation fault.(程序收到信号SIGSEGV,分段故障) SIGSEGV:在POSIX ...
- codeforces 462C Appleman and Toastman 解题报告
题目链接:http://codeforces.com/problemset/problem/461/A 题目意思:给出一群由 n 个数组成的集合你,依次循环执行两种操作: (1)每次Toastman得 ...
- PHP生成一个不重复随机数组的封装方法
<?php /** array unique_rand( int $min, int $max, int $num )* 生成一定数量的不重复随机数* $min 和 $max: 指定随机数的范围 ...
- Object.prototype.constructor
Returns a reference to the Object function that created the instance's prototype. 注意这个属性的值是函数本省的引用,而 ...
- 记录一个读pcap数据包的软件:Fiddler
Fiddler.大神推荐的.名字老忘. 用wireshark在wifi共享精灵共享出来的无线网上抓包,发现一个SSDP(简单服务发现协议)一直在尝试找连上这个网络上的设备. 连上NEXUS4后出现了I ...
- [SHOI 2017] 寿司餐厅
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4873 [算法] 注意到题目中的限制条件可表述为 : 若选择区间[L , R] , 则 ...
- live555 基本类之间的关系
live555 中存在这5个最基本的类.每个类中都拥有一个BasicUsageEnvironment. 这是这几个类之间的相互关系. MediaSession可以拥有多个subsession.
- TQ210 —— S5PV210 uboot顶层Makefile分析
转自:http://blog.csdn.net/wqx521/article/details/52469759 # (C) Copyright 2000-2008 # Wolfgang Denk, D ...