D. Portals

由于每个点可以选择前面的某些点存在重复选择的情况,考虑除去重复选择的可能。

贪心:对于每一个城堡,我们都尽可能在最晚的时间控制,也就是在最后一个能控制它的点考虑是否控制

于是考虑设计dp

状态表示:f(i,j)f_{(i,j)}f(i,j)​表示考虑到第iii个城堡(已经占领),当前士兵是jjj的情况的最大值
状态转移:①不选择占领城堡从第i−1i-1i−1个城堡转移②考虑占领城堡

注意:考虑第iii个城堡占领的情况时,可以占领多个城堡因而与“分组背包”不同(分组背包每组只能选一个)

#define IO ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr)
#pragma GCC optimize(2)
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
constexpr int N=5010;
int a[N],b[N],c[N];
int n,m,k;
int f[N][N];
int last[N];
vector<int> g[N];
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>m>>k;for(int i=1;i<=n;i++) cin>>a[i]>>b[i]>>c[i];while(m--){int u,v;cin>>u>>v;last[v]=max(last[v],u);}for(int i=1;i<=n;i++){last[i]=max(last[i],i);g[last[i]].push_back(i);}memset(f,-0x3f,sizeof f);f[0][k]=0;for(int i=1;i<=n;i++){for(int j=a[i];j+b[i]<=5000;j++)f[i][j+b[i]]=max(f[i][j+b[i]],f[i-1][j]);for(auto t:g[i])for(int j=0;j<=4999;j++)f[i][j]=max(f[i][j],f[i][j+1]+c[t]);}int res=-1;for(int i=0;i<=5000;i++) res=max(res,f[n][i]);cout<<res<<'\n';}return 0;
}

带悔贪心

nlog⁡(n)n\log(n)nlog(n)
用一个优先队列维护选择的集合,每次把每个城堡连接的城堡都占领,士兵不够的时候从优先队列集合中弹出

#define IO ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr)
#pragma GCC optimize(2)
#include<queue>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
constexpr int N=5010;
int a[N],b[N],c[N];
int n,m,k;
int last[N];
vector<int> g[N];
int main()
{IO;int T=1;//Pinit(1000000);//Cinit(1000);//cin>>T;while(T--){cin>>n>>m>>k;for(int i=1;i<=n;i++) cin>>a[i]>>b[i]>>c[i];while(m--){int u,v;cin>>u>>v;last[v]=max(last[v],u);}for(int i=1;i<=n;i++){last[i]=max(last[i],i);g[last[i]].push_back(i);}priority_queue<int,vector<int>,greater<int> >  q;int now=k;for(int u=1;u<=n;u++){while(now<a[u]&&q.size()) now++,q.pop();if(now<a[u]) return cout<<-1<<'\n',0;now+=b[u];for(auto t:g[u]) q.push(c[t]),now--;}while(now<0&&q.size()) now++,q.pop();if(now<0) cout<<-1<<'\n';else{int res=0;while(q.size()) res+=q.top(),q.pop();cout<<res<<'\n';}}return 0;
}

codeforces1271 D. Portals(dp or 带悔贪心)相关推荐

  1. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明) AC(带悔贪心)

    下面两个题都是选择iii有个价值如果选择iii则不能选择i−1,i+1i-1,i+1i−1,i+1,让价值最大或最小 P1792 [国家集训队]种树 野心qwq 的博客 #include<bit ...

  2. 带撤销贪心——cf1148F好题

    自己不会做,看了题解懂得 从最高位依次往低位遍历,因为偶数个1是不改变符号的,所以带个贪心即可(可以看成是带撤销的..) 每轮循环用sum记录该位选择1可以减少的值 如果是负数,就不要改成1 如果是正 ...

  3. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

  4. 【11.5校内测试】【倒计时5天】【DP】【二分+贪心check】【推式子化简+线段树】...

    Solution 非常巧妙的建立DP方程. 据dalao们说题目明显暗示根号复杂度??(反正我是没看出来 因为每次分的块大小一定不超过$\sqrt n$,要不然直接每个位置开一个块答案都才为$n$. ...

  5. 【ZOJ - 4019】Schrödinger's Knapsack (dp,背包,贪心,组内贪心组间dp)

    题干: 有两种物品,k分别为k1,k2,有大小各不一的这两种物品若干,放入容量为c的背包中,能获得求最大的值.放的顺序会影响结果.每次放入一物品,其获得的值都可以用v=kr计算,r表示放入后背包剩下的 ...

  6. Codeforces Round #699 (Div. 2) E.Sorting Books(贪心+DP / 线段树)超高质量题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 E - Sorting Books 一排书架上有 nnn 本书排成一排,每本书上有一个颜色 aia_i ...

  7. CodeForces - 1341D Nastya and Scoreboard(dp+贪心)

    题目链接:点击查看 题目大意:给出 n 个二进制数字,1 ~ n 分别表示从最高位到最低位的数字,每个二进制数字的长度都为 7 ,分别表示相应位置是否被点亮 现在总共需要再点亮 k 个位置,问能否有一 ...

  8. BZOJ 3875 - SPFA处理带环的DP

    本题的DP思路很好想:设f[i]为第i个怪兽被消灭所需要的最小代价,那么, f[i]=min{spl[i],ori[i]+∑j∈App[i]f[j]} 然而,由于f[j]有可能也要依赖f[i],所以这 ...

  9. CF1579G - Minimal Coverage(DP,贪心,二分)

    文章目录 CF1579G - Minimal Coverage 题目描述 分析 做法1:DP 做法2:贪心(bitset优化+二分 CF1579G - Minimal Coverage 题目描述 给出 ...

最新文章

  1. 使用PowerDesigner创建数据库表
  2. linux系统下载经验,linux系统的学习经验首篇
  3. Q_INIT_RESOURE
  4. mysql explain中key_len值的说明
  5. shopify 开发_播客第57集:从Shopify的作家到开发人员,与Adam Hollett一起
  6. excel引用指定单元格数据_数据、运算符及单元格引用
  7. JavaScript中String的replace函数
  8. 2021-05-06
  9. cisco 交换机 定期 自动 备份配置 -linux,cisco 交换机自动备份配置
  10. 超级简单的纯js 象棋,看一遍你也会写
  11. 555定时器原理及应用(报告)
  12. Java—计算球体积
  13. python极简讲义(张玉宏著)的几处补充说明
  14. mac服务器文件夹权限设置密码,如何在Mac os优胜美地给文件和文件夹加密
  15. JS高级程序设计读书笔记(第五章 引用变量)
  16. 倒三角打印乘法口诀python_Python打印乘法口诀表
  17. 解决html5直播延迟大问题,SRS 直播系统使用中发现延迟过大
  18. oracle安装配置
  19. 计算机三级数据库技术 第14章 数据仓库与数据挖掘
  20. Shapefile格式数据去除投影坐标系

热门文章

  1. 京瓷1020怎么打印自检页_[建筑]喷墨打印机如何打印自检页 详细
  2. git pull 覆盖本地_SVN与Git比较的优缺点差异
  3. 算法设计与分析——算法思想总结
  4. 用来表示python代码块的是什么_三分钟带你用简单的Python代码深入理解Python中的元类...
  5. redis spring 切面缓存_今日份学习: Spring中使用AOP并实现redis缓存?
  6. HDU 3590 PP and QQ(反nim博弈,删边游戏)
  7. Educational Codeforces Round 81 (Rated for Div. 2) E. Permutation Separation 线段树 + dp
  8. P3403 跳楼机 同余最短路
  9. 【牛客NOIP模拟】 牛牛的RPG游戏【二维偏序】【任意坐标斜率优化】【CDQ 分治】【李超线段树】
  10. 【NOI2020】命运【树形dp】【线段树合并】