首页 > 其他分享 >CF1271D Portals Sol

CF1271D Portals Sol

时间:2022-11-23 10:37:16浏览次数:41  
标签:Portals space int Sol lt 士兵 CF1271D dp

虽然给出了图,但是和图没有太大关系。

首先可以想到一个非常朴素的 DP。

设 \(dp_{i,j}\) 表示当前占领到 \(i\),拥有 \(j\) 个士兵的最大 \(\sum c\)。

那么转移就很显然了。

\(\begin{cases}dp_{i,j+b_i}\leftarrow dp_{i-1,j}\space(j\ge a_i)\\dp_{i,j}\leftarrow dp_{i,j+1}+c_{to}\space(i-to\text{ is connected})\end{cases}\)

枚举 \(i,j,to\),时间复杂度 \(O(n^2m)\),不能承受。

考虑进行优化。由于 \(to\) 是唯一一个状态内没出现的枚举量,从 \(to\) 方面优化。

想到一个贪心。对于每一个 \(to\),显然是到最后能走的时候再走最优。

为什么?因为每一次占领不消耗士兵,而有限制 \(a_i\),所以当前士兵越多越好。

也就是,不妨让士兵再走一段,来获得 \(b_i\) 个士兵,最后再走到 \(to\) 去。

所以预处理出每一个点最后由哪个点到达,再走就好了。

#include <bits/stdc++.h>
using namespace std;

const int N = 5e3 + 10, MAX = 5e3, inf = 1e9;
int n, m, k, lt[N], a[N], b[N], c[N], dp[N][N];
pair <int, int> fk[N];

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0);
    cin >> n >> m >> k; for (int i = 1; i <= n; ++i)
        cin >> a[i] >> b[i] >> c[i], lt[i] = i;
    for (int i = 1, u, v; i <= m; ++i)
        cin >> u >> v, lt[v] = max(lt[v], u);
    for (int i = 1; i <= n; ++i) fk[i] = {lt[i], c[i]};
    sort(fk + 1, fk + 1 + n);
    for (int i = k + 1; i <= MAX; ++i) dp[0][i] = -inf;
    int prev = 1;
    for (int i = 1; i <= n; ++i) {
        for (int j = 0; j <= MAX; ++j) dp[i][j] = -inf;
        for (int j = a[i]; j <= MAX; ++j)
            dp[i][j + b[i]] = max(dp[i][j + b[i]], dp[i - 1][j]);
        while (prev <= n && fk[prev].first == i) {
            for (int j = 0; j < MAX; ++j)
                dp[i][j] = max(dp[i][j], dp[i][j + 1] + fk[prev].second);
            ++prev;
        }
    }
    int res = -1;
    for (int i = 0; i <= MAX; ++i) res = max(res, dp[n][i]);
    cout << res << endl;
    return 0;
}

标签:Portals,space,int,Sol,lt,士兵,CF1271D,dp
From: https://www.cnblogs.com/MistZero/p/CF1271D-Sol.html

相关文章

  • 如何安装和配置solr
     如何在linux上安装solr一.安装solr1.下载地址http://archive.apache.org/dist/lucene/solr/7.6.0/2.上传到linux系统3.解压进入solr压缩包存放的文件夹解压命......
  • Codeforces887C-Solution for Cube
    C.SolutionforCubetimelimitpertestmemorylimitpertestinputoutput......
  • 前端014-后台布局3--absolute+overflow
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>css后台布局</title><style>body{margin:0}/*去掉边框,*/.page-heade......
  • 前端013-css-后台布局2-absolute定位
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>css后台布局</title><style>body{margin:0}/*去掉边框,*/.page-heade......
  • CF1271D Portals
    CF1271DPortals一个基本的结论:每一个点都尽量在离它最远的地方传送过来人把它占领。dp设\(f_{i,j}\)表示前\(i\)个城堡有\(j\)个人的答案。转移:\(f_{i-1,j-b_i}......
  • 野花--fixed和absolute在浏览器边界的影响
    这个是在练习动画展示效果时的一个问题.鼠标经过图标时,会有内容从右边移动出来,如图.  实际中,是将移动的内容预先放在右边,在浏览器视图之外,所以看不到,鼠标经过......
  • 全文搜索引擎solr使用过程中遇到的一些问题分析
    产生背景​ 在整个项目中实现商品搜索功能电商项目中,因为用户有时候不是多么清楚他所需要的东西的名称或者商店的名称,有时候仅仅是只知道他所需要的商品是干嘛用的,又或者是......
  • SW2023新版本 SOLIDWORKS Simulation仿真功能升级
    ​​SOLIDWORKS2023​​新版本已经与大家见面,今天微辰三维与大家分享SOLIDWORKSSimulation 2023新功能,让我们先一起来看看视频——​​点击观看SOLIDWORKSSimulation 2......
  • Solution - ARC152D Halftree
    首先\(n\)为偶数时无解,这是显然的,因为一次加两条边,总边数一定是偶数。下面我们证明\(n\)为奇数时一定有解,直接进行构造。首先将每一个点编号加上\(k\)再模\(n\)......
  • Solution Set -「LGR-126」洛咕咕的 NOIP 模拟赛
      机房在三楼,不在五楼.  三楼确实有阶梯教室.  三楼向外望是一楼大厅屋顶所以看上去不高.  十一点前必须离开科技楼是因为爱因斯坦要锁大门.  我不会被自......