codeforces 1106 E
显然是dp啊,dp[i][j]表示到时间i打扰了j次的最小收益
显然要排序,官方题解说set没看懂,优先队列就行啊。
按照时间排序,显然这样扫的话可以保证当前时间点的点在优先队列里吧,
然后有打断和不打断两种方式。搞一下就行了。
这个题其实只要想清楚,我在每个点能选的红包是唯一的,这样子一想就变得很**了。
头脑混乱写不出来不能怪我啊,我老人家持续表演了一个月的小品了啊
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct Red{
ll s,t,d,w;
bool operator<(const Red& a)const{
if(w==a.w)
return d<a.d;
return w<a.w;
}
}r[];
bool cmp(Red a,Red b){
if(a.s==b.s){
if(a.w==b.w){
return a.d>b.d;
}
return a.w>b.w;
}
return a.s<b.s;
}
int n,m,k;
ll dp[][];
priority_queue<Red> q;
int main() {
ios::sync_with_stdio(false);
cin>>n>>m>>k;
for(int i=;i<=n+;i++)for(int j=;j<=m;j++)dp[i][j]=1e18;
for(int i=;i<=k;i++){
cin>>r[i].s>>r[i].t>>r[i].d>>r[i].w;
}
sort(r+,r++k,cmp);
int j=;
for(int i=;i<=n;i++){//
for(;j<=k;){
if(r[j].s<=i) {
q.push(r[j]);
j++;
} else break;
}
while (!q.empty()&&q.top().t<i) q.pop();
if(q.empty()){
for(int l=;l<=m;l++){
dp[i+][l]=min(dp[i+][l],dp[i][l]);
}
continue;
}
Red tmp = q.top();
for(int l=;l<=m;l++) {
dp[min(tmp.d+,n+1ll)][l]=min(dp[min(tmp.d+,n+1ll)][l],dp[i][l]+tmp.w);
}
for(int l=;l<=m;l++){
dp[i+][l]=min(dp[i+][l],dp[i][l-]);
}
}
ll ans = 1e18;
for(int i=;i<=m;i++){
ans = min(ans,dp[n+][i]);
}
cout<<ans<<endl;
}
codeforces 1106 E的更多相关文章
- Codeforces 1106 简要题解
文章目录 A题 B题 C题 D题 E题 F题 传送门 A题 传送门 读错题还能过样例我给自己点个赞. 题意简述:给一个010101网格SSS,问满足Si,j=Si+1,j+1=Si+1,j−1=Si− ...
- Codeforces 1106 E. Lunar New Year and Red Envelopes 优先队列+dp
题意大致是Bob新年拿红包,每个红包可以在s-t时间内取,但是取了之后得在d+1时间开始才能继续取红包. 同时他女儿能在m个时间点阻止他取红包,求女儿阻止后Bob取得的w总和最小值. Bob取红包的策 ...
- 【Codeforces 1106E】 Lunar New Year and Red Envelopes
Codeforces 1106 E 题意:有\(k\)个红包,第\(i\)个红包可以在\(s_i\)到\(t_i\)的时间内抢,同时获得\(w_i\)的钱,但是抢完以后一直到\(d_i\)都不可以继续 ...
- Codeforces round 1106
Div 2 536 题目链接 我还是太菜了.jpg E 傻逼DP直接做 我居然调了1.5h 我真的是太菜了.jpg 堆+扫描线直接维护每个位置的贪心结果 然后要么使用干扰 要么就接受贪心的结果 #in ...
- Codeforces Round #536 (Div. 2) F 矩阵快速幂 + bsgs(新坑) + exgcd(新坑) + 欧拉降幂
https://codeforces.com/contest/1106/problem/F 题意 数列公式为\(f_i=(f^{b_1}_{i-1}*f^{b_2}_{i-2}*...*f^{b_k} ...
- Codeforces Round #536 (Div. 2) E dp + set
https://codeforces.com/contest/1106/problem/E 题意 一共有k个红包,每个红包在\([s_i,t_i]\)时间可以领取,假如领取了第i个红包,那么在\(d_ ...
- Codeforces Round #536 (Div. 2)--1106D - Lunar New Year and a Wander
https://codeforces.com/contest/1106/problem/D 题意:求出字典序最小的走法 解法:走到每个点,都选取与这个点连通的序号最小的点,并且这个序号最小的点没有被访 ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
随机推荐
- webloigc 控制台修改登录密码
- python测试开发django-51.Ajax发送post请求登录案例
前言 我想实现一个登录功能:登录的接口是另外一个地方提供,页面上点登录按钮的时候,先访问登录接口,根据接口返回json信息判断是否登录成功,登录成功页面跳转,登录不成功,在登录首页显示失败原因 登录页 ...
- .net core安装及初体验
.net core安装及初体验 .net core 作为微软的新一代技术,在开发跨平台.微服务等方面有很大的优势,也更贴近现代的编码习惯.在2.0版发布很久以后,近期终于决定进行学习和体验. 安装 作 ...
- 正則表達式 - C语言
http://blog.csdn.net/pipisorry/article/details/37073843 sscanf/scanf正则使用方法 %[ ] 的使用方法:%[ ]表示要读入一个字符集 ...
- html5学习笔记——基础
一:Canvas <canvas> 标签只是图形容器,图形的绘制需要用JS来定义. 1:绘制与填充 stroke():绘制,空心. fillXX():填充,实心. 2:绘制线条 var c ...
- 基于R语言的时间序列指数模型
时间序列: (或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列.时间序列分析的主要目的是根据已有的历史数据对未来进行预测.(百度百科) 主要考虑的因素: 1.长期趋势(Lon ...
- centos7磁盘挂载及取消
磁盘挂载查看已经挂载磁盘数 cat /proc/scsi/scsi | grep HostHost: scsi1 Channel: 00 Id: 00 Lun: 00Host: scsi2 Chann ...
- python3 利用正则获取网页中的想保存下来的内容
需要获取某个网页中表格部分中某个产品的成份 分析在html中成份的元素代码 <a href="/composition/4c3060178d1184935a48c4e51be4f63f ...
- 前端学习-jQuery
老师博客:https://www.cnblogs.com/yuanchenqi/articles/6070667.html day43,day44 jquery 中文文档:http://jquery. ...
- Fluent动网格【12】:扩散光顺
扩散光顺是Fluent提供的另外一种常用的网格光顺方法.其基本原理是通过求解扩散方程得到网格节点的运动位移. 扩散光顺基本计算 扩散光顺通过求解 以下扩散方程来设置网格的节点位置. \[ \nabla ...