Codevs 1643 & 3027 线段覆盖
1643
题意
给定若干条线段,问最多可以安排多少条使得没有重合。
思路
贪心,同安排schedule,按结束时间早的排序。
Code
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define maxn 1000010
using namespace std;
typedef long long LL;
int n;
struct Seg {
int l, r;
bool operator < (const Seg& s) const { return r < s.r; }
}seg[maxn];
void work() {
for (int i = 0; i < n; ++i) {
scanf("%d%d", &seg[i].l, &seg[i].r);
if (seg[i].l > seg[i].r) swap(seg[i].l, seg[i].r);
}
sort(seg, seg+n);
int r = -inf, cnt = 0;
for (int i = 0; i < n; ++i) {
if (seg[i].l >= r) ++cnt, r = seg[i].r;
}
printf("%d\n", cnt);
}
int main() {
scanf("%d", &n); work();
return 0;
}
3027
题意
给定若干条线段,每条线段都有各自的价值,问怎样安排使得不重叠且总价值最大。
思路
dp
Code
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define maxn 1010
using namespace std;
typedef long long LL;
struct Seg {
int l, r; LL w;
bool operator < (const Seg& s) const { return r < s.r; }
}seg[maxn];
LL dp[maxn];
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; ++i) scanf("%d%d%d", &seg[i].l, &seg[i].r, &seg[i].w);
sort(seg, seg+n);
dp[0] = seg[0].w;
LL ans = dp[0];
for (int i = 1; i < n; ++i) {
dp[i] = 0;
for (int j = 0; j < i; ++j) {
if (seg[j].r <= seg[i].l) dp[i] = max(dp[i], dp[j]);
}
dp[i] += seg[i].w;
ans = max(ans, dp[i]);
}
printf("%lld\n", ans);
return 0;
}
Codevs 1643 & 3027 线段覆盖的更多相关文章
- CODEVS 3027 线段覆盖2
首先,先看题.....(虽然比较简单 3027 线段覆盖 2 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐 ...
- codevs 3027线段覆盖2
传送门 3027 线段覆盖 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标, ...
- wikioi 3027 线段覆盖 2
题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段 ...
- 线段覆盖 2(序列DP)
Code vs 3027 线段覆盖 2 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段, ...
- codevs 1214 线段覆盖/1643 线段覆盖 3
1214 线段覆盖/1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0< ...
- codevs 1643 线段覆盖 3
1643 线段覆盖 3 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 在一个数轴上有n条线段,现要选取其中 ...
- CodeVS 线段覆盖1~5
#include <bits/stdc++.h> using namespace std; ; struct Info{int l,r;}P[Maxn]; int n,Cnt,F[Maxn ...
- codevs 3012 线段覆盖 4 & 3037 线段覆盖 5
3037 线段覆盖 5 时间限制: 3 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 数轴上有n条线段,线段的两端都 ...
- codevs 1214 线段覆盖
1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段 ...
随机推荐
- Linux dmidecode命令
1.linux系统自带的dmidecode工具查询服务器硬件信息 dmidecode 用于获取服务器的硬件信息,通常是在不打开计算机机箱的情况下使用该命令来查找硬件详细信息 这个命令可以查看内存的几乎 ...
- Python知识点进阶——细节问题
int()强制转换浮点数 在int()的强制转换浮点数时候,不管是正数还是负数,只取整数部分. 注意:这里不是向上或者向下取整,也不是四舍五入. 无限递归 递归是为了将问题简化为更小规模的同类型问题, ...
- Gym - 101981D Country Meow(模拟退火)
题意 三维空间有\(n\)个点,找到另外一个点,离所有点的最大距离最小.求这个距离. 题解 \(1\).最小球覆盖,要找的点为球心. \(2\).模拟退火. 还是补一下模拟退火的介绍吧. 模拟退火有一 ...
- Spark性能优化:资源调优篇
在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置 ...
- 初识java,编写hello world语句
JDK: Java Develpment Kit - java开发工具包 JRE: Java Runtime Environment - java运行环境 JVM: Java Virtual Mach ...
- 17,基于scrapy-redis两种形式的分布式爬虫
redis分布式部署 1.scrapy框架是否可以自己实现分布式? - 不可以.原因有二. 其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls ...
- android shape.xml 文件使用
设置背景色可以通过在res/drawable里定义一个xml,如下: <?xml version="1.0" encoding="utf-8"?> ...
- complex类的定义、实现
复数类complex的定义.实现(求模.复数加法) #include <iostream> #include <cmath> using namespace std; clas ...
- Creating Hyperv Agent Installer
Creating Hyperv Agent Installer Skip to end of metadata Created by Anshul Gangwar, last modified ...
- Hyper-V 虚拟机快照:常见问题
发布时间: 2009年3月 更新时间: 2010年12月 应用到: Windows Server 2008 什么是虚拟机快照? 虚拟机快照可捕获正在运行的虚拟机的状态.数据和硬件配置. 快照有哪些用途 ...