SDUT 2021 Autumn Team Contest 36th G - Alice’s Stamps(补)
队友做出的这个题,赛后补的=、=
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(补)的更多相关文章
- SDUT 2022 Autumn Team Contest 7th
1.J题:给你T组数据,每一组数据给你一个区间,让你求这个区间的范围,区间的起始时间和终止时间可能被包含或重复 思路:思路的话,就是直接把给定的两个区间的之间的数包括端点存到vector去重,然后直接 ...
- Hdu-6249 2017CCPC-Final G.Alice’s Stamps 动态规划
题面 题意:给你n个集合,每个集合有L到R这些种类的邮票,让你选择其中的K个集合,使得最后选择的邮票种类尽可能多,N,L,R都<=2000 题解:容易乱想到网络流,可是再细想一下就会发现处理不了 ...
- Alice’s Stamps HDU - 6249 (区间DP)
点击传送 Alice’s Stamps Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- 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 ...
- Nordic Collegiate Programming Contest 2015 G. Goblin Garden Guards
In an unprecedented turn of events, goblins recently launched an invasion against the Nedewsian city ...
- 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) ...
- 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 ...
- 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的 ...
- Asia Yokohama Regional Contest 2018 G题 What Goes Up Must Come Down
链接 G题 https://codeforces.com/gym/102082 使其成为单峰序列需要交换多少次相邻的数. 树状数组维护逆序对. 对于每个序列中的数,要么在单峰的左侧,要么在单峰的右侧, ...
- 【cf contest 1119 G】Get Ready for the Battle
题目 你有\(n\)个士兵,需要将他们分成\(m\)组,每组可以为0: 现在这些士兵要去攻打\(m\)个敌人,每个敌人的生命值为\(hp_i\) : 一轮游戏中一组士兵选定一个攻打的敌人,敌人生命值- ...
随机推荐
- js map方法处理返回数据,获取指定数据简写方法
map方法处理返回数据,获取指定数据简写方法 前言 后端返回数据为数组列表时,通常比较全面,包含了很多不需要的数据,可以通过 map 方法处理返回数据,筛选出想要的数据 例如 // 返回数据 res ...
- .NET+WPF 桌面快速启动工具 GeekDesk
前言 大家在平时工作中,是不是经常为了找某个文件或者应用而在电脑桌面上来回翻找?桌面图标乱七八糟,每次找东西都像在大海捞针一样. 今天给大家介绍一个开源项目 GeekDesk,它能够让桌面焕然一新,工 ...
- 计算机二级c语言学习总结
咱就是说,还有一周多久要进行计算机二级考试了,咱开始在b站上找一些视频进行学习.毕竟咱c语言实战经验自认为是完全足够应付计算机二级了,所以,咱现在的学习目标是先把计算机二级的大概知识过一遍,进行查漏补 ...
- css flex属性
css学的不咋熟,搞一个复杂一点的水平居中,用display 属性 + position属性 + float属性,搞了好久居然没搞出来,然后我去翻资料,发现我最不常用的flex能解决这个问题,于是我就 ...
- Winform 子窗体调用父窗体方法
子窗体部分 1.定义委托 /// <summary> /// 双击委托事件 /// </summary> /// <param name="path" ...
- 生产者消费者模式,以及基于BlockingQueue的快速实现
生产者消费者模式,以及基于BlockingQueue的快速实现什么是生产者消费者模式,简单来说就是有两个角色,一个角色主要负责生产数据,一个角色主要负责消费(使用)数据.那么生产者直接依赖消费者,然后 ...
- k8s网络原理之Calico
什么是Calico: Calico是一个基于BGP的纯三层网络方案,其会为每个容器(pod)分配一个可路由的IP,在通信时不需要解包和拆包,因此网络性能损耗小,易于排查和水平扩展.Calico网络功能 ...
- Gluon 编译 JavaFx -> exe
Gluon 编译 JavaFx -> exe 能力强的伙伴可以直接参考官方文档 开发工具 idea 2023.3 idea gluon plugin git apache-maven-3.8.4 ...
- CSS MASK
首先看如下效果: 这种效果看起来很赞,可以做出很酷炫的交互,比如图上这种,还有一种就是引导页 经过我阅读作者的文章,原文地址. 发现其实只要使用两个核心CSS样式就能实现这个效果 分别为: 1. ba ...
- 如何将图片转换为向量?(通过DashScope API调用)
本文介绍如何通过模型服务灵积DashScope将 图片转换为向量 ,并入库至向量检索服务DashVector中进行向量检索. 模型服务灵积DashScope,通过灵活.易用的模型API服务,让各种模态 ...