队友做出的这个题,赛后补的=、=

G - Alice’s Stamps (一般DP)

题目大意 :给你m个区间,选k个,求k个区间并集
1≤T≤100
1≤K≤M
1≤N,M≤2000
1≤Li≤ Ri ≤N
输出 :满足题意的最大的区间并

分析:

纯看数据范围很像是一般的背包dp,但是和常规背包不同,更像是一般的线性dp。同时一般的背包思维也不好想这个题。但我们用线性思维,先找出当前点在所有包含区间中的最左边界,(队友用当前点的最右边界写的也可过)
然后我们dp[i][j]表示为从左到j的区间内选i个区间的最大答案.
状态取 max.
(b[i]就是当前点的最小左区间在哪)然后能得dp方程 :

dp[i][j + 1] = max(max(dp[i][j + 1], dp[i][j]), dp[i - 1][b[j]] + j - b[j] + 1);

C++代码

/*made in dirt & sand */
#include <bits/stdc++.h> #include <deque>
#define bug(a) cout << a << endl
#define mem(a, b) memset(a, b, sizeof a)
#define bug2(a, b) cout << a << ' ' << b << endl
#define bug3(a, b, c) cout << a << ' ' << b << ' ' << c << endl
#define lowbit(x) (x & -x)
#define pb push_back
#define int long long
#define x first
#define y second
#define pii pair<int, int>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 1e5 + 10, M = 1e7 + 10;
const int inf = 1e-6;
int i, j, k, n, m, l, x, y, t, ge, hao, ans[N], b[N], d[N];
vector<int> mp[N];
bool p[N];
struct ss
{
int x, y;
} a[N];
int dp[2010][2010];
bool cmp(ss x, ss y)
{
return x.x < y.x;
}
signed main()
{
// freopen("black.in","r",stdin);
std::ios::sync_with_stdio(false);
cin.tie(0);
int ans = 0;
int T;
cin >> T;
for (int ii = 1; ii <= T; ii++)
{
cin >> n >> m >> k; for (i = 1; i <= n; i++)
b[i] = n + 10;
for (i = 0; i < m; i++)
{
cin >> a[i].x >> a[i].y;
}
sort(a, a + m, cmp);
int l = 1;
for (i = 0; i < m; i++)
{
for (; l <= a[i].y; l++)
{
b[l] = a[i].x;
}
}
for (j = 1; j <= n; j++)
{
for (i = 1; i <= k; i++)
{
dp[i][j + 1] = max(max(dp[i][j + 1], dp[i][j]), dp[i - 1][b[j]] + j - b[j] + 1);
}
ans = dp[k][j+1];
} for(int nn = 0 ; nn <= m + 10 ; nn ++ ){
for(int mm = 0 ; mm <= n+11 ; mm ++ ){
dp[nn][mm] = 0;
}
}
printf("Case #%d: %lld\n", ii, ans);
}
}

调Bug闲聊

一直改不对,一开始是dp数组没初始化,后来初始化没干净,都初始化了也没找到哪里错了,后来是dp数组放前面初始化了。放到后面就初始化干净的原因是,b数组初始化的有点问题导致引用到上一个状态的dp数组,而上一个状态的dp数组没有完全初始化。现在想起来能调出来是真的离谱。。。

SDUT 2021 Autumn Team Contest 36th G - Alice’s Stamps(补)的更多相关文章

  1. SDUT 2022 Autumn Team Contest 7th

    1.J题:给你T组数据,每一组数据给你一个区间,让你求这个区间的范围,区间的起始时间和终止时间可能被包含或重复 思路:思路的话,就是直接把给定的两个区间的之间的数包括端点存到vector去重,然后直接 ...

  2. Hdu-6249 2017CCPC-Final G.Alice’s Stamps 动态规划

    题面 题意:给你n个集合,每个集合有L到R这些种类的邮票,让你选择其中的K个集合,使得最后选择的邮票种类尽可能多,N,L,R都<=2000 题解:容易乱想到网络流,可是再细想一下就会发现处理不了 ...

  3. Alice’s Stamps HDU - 6249 (区间DP)

    点击传送 Alice’s Stamps Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  4. April Fools Day Contest 2016 G. You're a Professional

    G. You're a Professional 题目连接: http://www.codeforces.com/contest/656/problem/G Description A simple ...

  5. Nordic Collegiate Programming Contest 2015​ G. Goblin Garden Guards

    In an unprecedented turn of events, goblins recently launched an invasion against the Nedewsian city ...

  6. 2016 Multi-University Training Contest 1 G. Rigid Frameworks

    Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  7. The 15th UESTC Programming Contest Preliminary G - GC?(X,Y) cdoj1564

    地址:http://acm.uestc.edu.cn/#/problem/show/1564 题目: G - GC?(X,Y) Time Limit: 3000/1000MS (Java/Others ...

  8. 2014-2015 ACM-ICPC, NEERC, Eastern Subregional Contest Problem G. The Debut Album

    题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229669 时间限制:1s 空间限制:64MB 题目大意:给定n,a,b的值 求一个长度为n的 ...

  9. Asia Yokohama Regional Contest 2018 G题 What Goes Up Must Come Down

    链接 G题 https://codeforces.com/gym/102082 使其成为单峰序列需要交换多少次相邻的数. 树状数组维护逆序对. 对于每个序列中的数,要么在单峰的左侧,要么在单峰的右侧, ...

  10. 【cf contest 1119 G】Get Ready for the Battle

    题目 你有\(n\)个士兵,需要将他们分成\(m\)组,每组可以为0: 现在这些士兵要去攻打\(m\)个敌人,每个敌人的生命值为\(hp_i\) : 一轮游戏中一组士兵选定一个攻打的敌人,敌人生命值- ...

随机推荐

  1. Mybatis Log 插件

    目前的idea插件已经开始收费---找了一个免费的插件安装到idea中重启一下就可以了 百度网盘提取码:sjc8

  2. Ubuntu 设置 FTP 服务

    安装 VSFTP 服务 sudo apt install vsftpd 检查配置文件 sudo vim /etc/vsftpd.conf 确保以下配置项正确: #禁止匿名访问 anonymous_en ...

  3. 【图文安装教程】在docker中安装ES

    在docker中安装ES怎么安装?本文就教大家怎么安装 1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联.这里先创建一个网络: docker ...

  4. LoRA大模型微调的利器

    LoRA模型是小型的Stable Diffusion模型,它们对checkpoint模型进行微小的调整.它们的体积通常是检查点模型的10到100分之一.因为体积小,效果好,所以lora模型的使用程度比 ...

  5. 【YashanDB数据库】大事务回滚导致其他操作无法执行,报错YAS-02016 no free undo blocks

    问题现象 客户将一个100G的表的数据插入到另一个表中,使用insert into select插入数据.从第一天下午2点开始执行,到第二天上午10点,一直未执行完毕. 由于需要实施下一步操作,客户k ...

  6. C语言输出格式工整的日历——2乘6样式(详见本文)

    本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码如不能在Dev-C++上完好运行,出现如下问题: E:\Dev-Cpp\源代码\万年历.c [Error] 'for' loop initia ...

  7. 《SpringCloud微服务之间相互调用》之Feign实战

    一.场景再现 假设我们有这样一个场景: 用户付款成功后,扣除用户金额,还要减少仓库数量.按照微服务的设计理念,用户具有至少以下3个服务(项目): 1.订单 2.账户 3.仓库 微服务之间都是相互独立的 ...

  8. C++:使自定义类支持迭代器

    概述 在 C++ 中,链表迭代器是一种用来遍历链表(如 std::list)元素的工具.链表是一种数据结构,其中每个元素(节点)包含一个数据值和一个指向下一个节点的指针.链表迭代器允许以类似于数组的方 ...

  9. Asp.net 获取客户端的信息

    Response.Write("客户端计算机名:" + Request.UserHostName + "<BR />"); Response.Wri ...

  10. CSS – Clip Path

    前言 我是在搞 1 side box-shadow 发现这个功能的. 平常很少做特效, 所以对这个好功能缺乏认识. 这篇大概记入一下先, 以后有认真用再补上细节. 参考 Youtube – Aweso ...