传送门

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)的更多相关文章

  1. Codeforces 1142D(dp)

    题目传送 先给出设计dp的结论: dp[i][j]:以第i个位置.以rankj的数拓展出去的方案数.意会一下,我实在想不好语言-- 其中所谓rankj=真·rank%11 找到拓展的规律,转移也就顺理 ...

  2. Codeforces 1107F(dp)

    怎么就没人解释一下为啥用b排序可以保证正确性呢……太菜了,理解了好久. 时间流逝价值会丢失的背包,类似题洛谷1417 本题与洛谷1417不同之处在于流逝是有截止的. 1.这个dp[j]的含义是:最后跑 ...

  3. Codeforces 1107G(dp)

    1.答案要取连续的区间疯狂暗示线段树. 2.外层枚举r,内层枚举l显然过于暴力. 3.考虑内层的优化.dp[i]:以第i位为结尾的答案(长度大于1的).dp[i] = max(第一种情况,第二种情况) ...

  4. codeforces 682D(DP)

    题目链接:http://codeforces.com/contest/682/problem/D 思路:dp[i][j][l][0]表示a串前i和b串前j利用a[i] == b[j]所得到的最长子序列 ...

  5. codeforces 666A (DP)

    题目链接:http://codeforces.com/problemset/problem/666/A 思路:dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行,dp[i][1]表示第a ...

  6. Codeforces 1144G(dp)

    据说这题是种dp的套路?然后被我国红名神仙(南大Roundgod)贪心了,不过思路上非常相近了,故而可贪吧. 设的dp[i][0]是:如果把第i个数放在上升序列里了,那么下降序列结尾的那个最大是多少: ...

  7. Codeforces 1152D(dp)

    要点 寻找最多边的匹配的结论:贪心地从叶子开始找,最后答案都是奇数层下边的那条边. 设\(dp[i][j]\)表示当前长度为\(i\),平衡度为\(j\),平衡度为(数量减去)数量. 增加左右括号转移 ...

  8. Three displays CodeForces - 987C (dp)

    C. Three displays time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  9. LightOJ 1033 Generating Palindromes(dp)

    LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

随机推荐

  1. android4.3 蓝牙BLE编程

    一.蓝牙4.0简介 蓝牙4.0标准包含两个蓝牙标准,准确的说,是一个双模的标准,它包含传统蓝牙部分(也有称之为经典蓝牙Classic Bluetooth)和低功耗蓝牙部分(Bluetooth Low ...

  2. Backbone vs AngularJS

    首先 Backbone 没有 AngularJS 那么容易上手. 而且作者并没有想让Backbone草根化的意思. Backbone 比喻成战斗机. 看上去更像是真正的MVC框架, model-vie ...

  3. POj 3253 Fence Repair(修农场栅栏,锯木板)(小根堆 + 哈弗曼建树得最小权值思想 )

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 28359   Accepted: 9213 Des ...

  4. SpringMVC与Struts2区别与比较

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  5. 通过dom4j写.xml文件

    步骤: 1.左键选中src,点击红圈2: 2.新建类: 3.开始写代码: package com.bjsxt.xml; import java.io.File; import java.io.File ...

  6. 我的CSDN博客

    从csdn搬过来的: csdn地址:http://blog.csdn.net/WR_technology

  7. https证书自签

         https               http over ssl = https 443/tcp                 ssl: v3                 tls: ...

  8. java-swingButton

    package com.http; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.http. ...

  9. 基于区域的全卷积神经网络(R-FCN)简介

    在 Faster R-CNN 中,检测器使用了多个全连接层进行预测.如果有 2000 个 ROI,那么成本非常高. feature_maps = process(image)ROIs = region ...

  10. dockerfile_nginx+PHP+mongo数据库_完美搭建

      基于dockerfile创建nginx+PHP+mongo数据库_完美搭建     第一步:   从git上:git clone http://git.oursdata.com/wangyue/d ...