题目链接:

http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3941

题解:

先吧所给的区间合并,得到若干个独立的区间。

然后从左到右把所有的区间都铺满个,并且对每个独立的区间的最后一个点考虑放和不放两种情况(dfs做,总复杂度也就2^10),然后去所有答案里面最大的那个。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL; int n, k, m; struct Node {
LL l, r;
bool operator < (const Node& tmp) const {
return l < tmp.l || l == tmp.l&&r < tmp.r;
}
}arr[], nds[]; int tot; //pos表示当前已经覆盖到了pos-1的位置,从pos开始是还未覆盖的部分
void solve(LL pos, int cur, LL cnt, LL ret, LL &ans) {
if (cnt > m) return;
if (cur == tot || cnt == m) {
ans = max(ans, ret); return;
}
LL lef, len, sum;
if (pos <= nds[cur].r) {
lef = max(pos, nds[cur].l);
len = nds[cur].r - lef + ;
sum = len / k;
if (len%k) sum++;
if (cnt + sum>m) { ans = max(ans, ret + (m - cnt)*k); }
//最后一个点不放
solve(lef + k*sum, cur + , cnt + sum, ret + sum*k, ans);
//最后一个点放
solve(nds[cur].r + k, cur + , cnt + sum + , ret + nds[cur].r + k - lef, ans);
}
else {
//最后一个点不放
solve(pos, cur + , cnt, ret, ans);
//最后一个点放
solve(max(pos, nds[cur].r + k), cur + , cnt + , ret + max((LL), nds[cur].r + k - pos), ans);
}
} int main() {
int tc;
scanf("%d", &tc);
while (tc--) {
tot = ;
scanf("%d%d%d", &n, &k, &m);
for (int i = ; i < n; i++) {
scanf("%lld%lld", &arr[i].l, &arr[i].r);
}
sort(arr, arr + n);
//合并区间
for (int i = ; i < n; i++) {
if (tot == ) {
nds[tot++] = arr[i];
}
else {
if (arr[i].l <= nds[tot - ].r) {
nds[tot - ].r = max(nds[tot - ].r, arr[i].r);
}
else {
nds[tot++] = arr[i];
}
}
}
LL ans = ;
solve(, , , , ans);
printf("%lld\n", ans);
}
return ;
}

ZOJ 3941 Kpop Music Party 贪心的更多相关文章

  1. ZOJ 3941 Kpop Music Party(省赛, 贪心)

    Kpop Music Party Time Limit: 2 Seconds      Memory Limit: 65536 KB Marjar University often hosts Kpo ...

  2. ZOJ 3941 Kpop Music Party

    先把能合并的区间都合并起来. 考虑最裸的贪心策略,从左到右一段一段的取. 但是,这样会有错,错在没有考虑每段区间选取最后一个点. 因为N只有10,所以枚举一下哪些区间最后一个点会被选择,然后按照最裸的 ...

  3. ZOJ 3699 Dakar Rally(贪心)

    这是一道贪心题,他的贪心思想很容易想明白,我们保证油箱里的油始终是最便宜的我们最后的花费就能是最少的.实现方法就是:比如现在在i点,我们看邮箱满载能最远到达哪里,不妨设最远到达j,(j >= i ...

  4. ZOJ 2002 Copying Books 二分 贪心

    传送门:Zoj2002 题目大意:从左到右把一排数字k分,得到最小化最大份,如果有多组解,左边的尽量小. 思路:贪心+二分(参考青蛙过河). 方向:从右向左. 注意:有可能最小化时不够k分.如     ...

  5. ZOJ 3607 Lazier Salesgirl(贪心)

    题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3607 题意:一个卖面包的小姑娘,给第i个来买面包的人的价格是pi, ...

  6. ZOJ 2968 Difference Game 【贪心 + 二分】

    题意: 有Ga.Gb两堆数字,初始时两堆数量相同.从一一堆中移一一个数字到另一一堆的花费定义为两堆之间数 量差的绝对值,初始时共有钱C.求移动后Ga的最小小值减Gb的最大大值可能的最大大值. 思路: ...

  7. ZOJ 3829 Known Notation(贪心)题解

    题意:给一串字符,问你最少几步能变成后缀表达式.后缀表达式定义为,1 * 1 = 1 1 *,题目所给出的字串不带空格.你可以进行两种操作:加数字,交换任意两个字符. 思路:(不)显然,最终结果数字比 ...

  8. ZOJ - 3829 Known Notation(模拟+贪心)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 给定一个字符串(只包含数字和星号)可以在字符串的任意位置添加一个数字 ...

  9. ZOJ - 3987 - Numbers (大数 + 贪心)

    参考自:https://blog.csdn.net/u013534123/article/details/78484494 题意: 给出两个数字n,m,把n分成m份,使得以下最小 思路: 或运算只有0 ...

随机推荐

  1. 第一章:1-06、 试将TCP/IP和OSI的体系结构进行比较。讨论其异同之处?

    <计算机网络>谢希仁著第四版课后习题答案答:(1)OSI和TCP/IP的相同点是二者均采用层次结构,而且都是按功能分层.(2)OSI和TCP/IP的不同点:①OSI分七层,自下而上分为物理 ...

  2. 使用JavaScript获取Request中参数的值

    本人很少写博客,有不正确的地方还希望大家多多指导. 假设现在有一个URL,如下. http://www.jacky.com/?id=1101&name=jacky 如何通过JS访问到id和na ...

  3. PHP实现的一分页工具类代码

    总的页数是一个长度一定的木块,这把尺子在这个木块上滑动,前提,尺子的两端不能超出木块:D.发现这么一来要做的事情就是去找这个尺子在木块上的起始点,根据用户给传进来的page变量.哈哈,关键代码下面: ...

  4. 有关IE的操作(收藏夹,清理缓存等)

    1.添加网页到收藏夹的函数: procedure AddURL(Folder, Url, Title: string); var MyUrlFile: TextFile; begin if Folde ...

  5. C#发送邮件源码

    介绍 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属于TCP/IP协议 ...

  6. p ython笔记第三天

    #!/usr/bin/env python# -*- coding:utf-8 -*- # v = "李杰"# for item in v:# print(item)####### ...

  7. WPF实现3D翻转的动画效果

    1.前端代码实现 1.1 原理见代码注析 <Grid MouseDown="Grid_MouseDown"> <Viewport3D> <Viewpo ...

  8. 线程操作API

    线程操作API 1.currentThread 2.getId() .getName().getPriority().getStart.isAlive().isDaemon().isInterrupt ...

  9. Douglas Crockford: entityify & deentityify

    大神之字符与字符实体的相互转换方法 // & to & if (!String.prototype.entityify) { String.prototype.entityify = ...

  10. TFS使用指南

    上一篇文章已经简略介绍过TFS的安装与管理,本篇文章主要描述一下我个人在工作过程中使用TFS的一些指南与建议.本章内容预览: 1.  项目计划与跟踪 经常有很多朋友在日常聊天中抱怨做计划很无畏,因为计 ...