layout: post

title: Codeforces Round 536 (Div. 2)

author: "luowentaoaa"

catalog: true

tags:

mathjax: true

- codeforces

- DP

- 数据结构


传送门

前四题签到题不讲,

E.Lunar New Year and Red Envelopes (DP+数据结构)

题意

有k个红包,每个红包可以在一个时间段拿起,并且在拿起之后知道D时间都不能拿其他红包

如果在某一时刻可以拿红包会拿金额最大的,如果金额同样大会拿D最大的,

有m次干扰的机会,可以让在某一时刻不能拿红包。

问最少可以得到多少金额

题意

首先,每一时刻拿哪个红包和时间D都已经固定了,于是我们就直接构造dp转移一下就行

\[dp[i][j]=在i时刻用了j次机会得到的最少金额
\]

那么对于一个时刻,如果没有红包那么就直接转移到下一时间

\[dp[i+1][j]=min(dp[i+1][j],dp[i][j]);
\]

如果可以抢红包那么,

\[dp[i+1][j+1]=min(dp[i+1][j+1],dp[i][j]) 被打扰
\]

\[dp[d+1][j]=min(dp[d+1][j],dp[i][j]+w[i]);//不去打扰;dp[d+1][j]=min(dp[d+1][j],dp[i][j]+w[i]);//不去打扰
\]

然后这题的很多解法的DP都差不多,主要差别是如何获取每一时间的最优金额和D的,

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
const int maxn=1e5+20;
const ll inf=0x3f3f3f3f3f3f3f3fLL;
ll dp[maxn][205];
int n,m,k;
struct node{
int w,d;
void add(int ww,int dd){
if(ww>w)w=ww,d=dd;
if(ww==w&&dd>d)d=dd;
}
}my[maxn<<2];
void down(int i){
my[i<<1].add(my[i].w,my[i].d);
my[i<<1|1].add(my[i].w,my[i].d);
}
void update(int i,int l,int r,int ql,int qr,int w,int d){
if(l>=ql&&r<=qr){
my[i].add(w,d);
return;
}
int mid=(l+r)/2;
down(i);
if(ql<=mid)update(i<<1,l,mid,ql,qr,w,d);
if(qr>mid)update(i<<1|1,mid+1,r,ql,qr,w,d);
}
node query(int i,int l,int r,int pos){
if(l==r){
return my[i];
}
down(i);
int mid=(l+r)/2;
if(pos<=mid)query(i<<1,l,mid,pos);
else query(i<<1|1,mid+1,r,pos);
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
cin>>n>>m>>k;
for(int i=1;i<=k;i++){
int s,t,d,w;
cin>>s>>t>>d>>w;
update(1,1,n,s,t,w,d);
}
memset(dp,inf,sizeof(dp));
for(int i=0;i<=m;i++)dp[1][i]=0;
for(int i=1;i<=n;i++){
node now=query(1,1,n,i);
int w=now.w;int d=now.d;
for(int j=0;j<=m;j++){
if(d){
dp[d+1][j]=min(dp[d+1][j],dp[i][j]+w);
dp[i+1][j+1]=min(dp[i+1][j+1],dp[i][j]);
}
else
dp[i+1][j]=min(dp[i+1][j],dp[i][j]);
}
}
ll ans=inf;
for(int i=0;i<=m;i++)ans=min(ans,dp[n+1][i]);
cout<<ans<<endl;
return 0;
}

Codeforces Round 536 (Div. 2) (E)的更多相关文章

  1. 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} ...

  2. Codeforces Round #536 (Div. 2) E dp + set

    https://codeforces.com/contest/1106/problem/E 题意 一共有k个红包,每个红包在\([s_i,t_i]\)时间可以领取,假如领取了第i个红包,那么在\(d_ ...

  3. Codeforces Round #536 (Div. 2)--1106D - Lunar New Year and a Wander

    https://codeforces.com/contest/1106/problem/D 题意:求出字典序最小的走法 解法:走到每个点,都选取与这个点连通的序号最小的点,并且这个序号最小的点没有被访 ...

  4. Codeforces Round #536 (Div. 2)

    前言 如您所见这又是一篇咕了的文章,直接咕了10天 好久没打CF了 所以还是个蓝名菜鸡 机房所有人都紫名及以上了,wtcl 这次前4题这么水虽然不知道为什么花了1h,结果不知道为什么搞到一半出锅了,后 ...

  5. Codeforces Round #536 (Div. 2) B. Lunar New Year and Food Ordering

    #include <bits/stdc++.h> #define N 300010 #define PII pair<int, int> using namespace std ...

  6. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  7. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  8. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  9. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

随机推荐

  1. BZOJ1513 [POI2006]Tet-Tetris 3D 【二维线段树】

    题目链接 BZOJ1513 题解 真正地理解了一波线段树标记永久化的姿势 每个节点维护两个值\(v\)和\(tag\) \(v\)代表儿子中的最值 \(tag\)代表未下传的最值 显然节点的区间大于等 ...

  2. poj3375 Network Connection

    Description There are \(M\) network interfaces in the wall of aisle of library. And \(N\) computers ...

  3. CSS中的text-shadow。

    text-shadow(文字投影),box-shadow(容器投影),border-radius(圆角)这三个属性估计以后用的比较多,记录 一下.目前不支持IE系列(不过可以使用其他方法实现,下文有详 ...

  4. shell编程 if 注意事项

    read -n 1 -p "Let's go(y or n):" if [ "$REPLY"x = "y"x -o "$REPLY ...

  5. eclipse+jetty+web项目调试---不显示源码

    本人eclipse版本:JUNO 1.问题现象:显示源码时,不显示箭头(指示到哪行) 解决办法: debug configurations  --->Goals设置参数  clean -X je ...

  6. 设计模式开篇综述(Java)

    设计原则是规范,设计模式是技巧.如果在项目中能够灵活运用这些基础知识,那么我相信一定会得到意想不到的收获. 接下来的时间里,我将继续学习设计模式,将对每一个设计模式从以下几点进行分析和学习,如有不妥当 ...

  7. CSS3学习笔记之loading动画

    效果截图: HTML代码: <div class="divBox"> <div class="loader"> <div clas ...

  8. Spring 中 AbstractExcelView 支持根据模板生成Excel文件. 通过设置 view 的 URL 属性指定模板的路径

     注意:1. 模板需放在 WEB-INF 目录下2. 指定模板路径时不需要添加扩展名, Spring将自动添加 .xls 到URL 属性中.3. 在指定URL前需先设置 view 的 Applicat ...

  9. 动态规划:树形DP

    典型例题有三道: 没有上司的舞会 选课 景点中心 我们可以把动态规划的状态和转移描述成DAG 对于有根树来说,如果我们规定边的方向由父节点指向叶子节点 或者是由叶子节点指向父节点(奇葩) 那么它也是一 ...

  10. html初探

    HTML HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏 ...