ZOJ 3941 Kpop Music Party
先把能合并的区间都合并起来。
考虑最裸的贪心策略,从左到右一段一段的取。
但是,这样会有错,错在没有考虑每段区间选取最后一个点。
因为N只有10,所以枚举一下哪些区间最后一个点会被选择,然后按照最裸的的贪心策略从左到右选择即可,每次更新最大值。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<algorithm>
using namespace std; const int maxn=;
struct X
{
long long L,R;
} s[maxn],tmp[maxn];
int n;
long long k,m,ans;
int g[maxn]; bool cmp(const X&a,const X&b)
{
if(a.L==b.L) return a.R<b.R;
return a.L<b.L;
} void f()
{
sort(tmp+,tmp++n,cmp);
int cnt=;
s[].L=tmp[].L,s[].R=tmp[].R;
for(int i=; i<=n; i++)
{
if(tmp[i].L<=s[cnt].R+)
s[cnt].R=max(s[cnt].R,tmp[i].R);
else
{
cnt++;
s[cnt].L=tmp[i].L,s[cnt].R=tmp[i].R;
}
}
n=cnt;
} long long check()
{
long long sum=,pos=; long long sy=m; for(int i=;i<=n;i++)
{
if(pos<s[i].L)
{
long long u=min(sy,(s[i].R-s[i].L+)/k);
sum=sum+u*k,pos=s[i].L-+u*k;
sy=sy-u; if(sy==) return sum; if(pos<s[i].R)
{
sum=sum+k,pos=pos+k;
sy=sy-; if(sy==) return sum;
} if(g[i]==)
{
sum=sum+s[i].R+k--pos;
pos=s[i].R+k-;
sy=sy-; if(sy==) return sum;
}
}
else if(pos>=s[i].R)
{
if(g[i]==)
{
sum=sum+s[i].R+k--pos;
pos=s[i].R+k-;
sy=sy-; if(sy==) return sum;
}
}
else
{
long long u=min(sy,(s[i].R-pos)/k);
sum=sum+u*k,pos=pos+u*k;
sy=sy-u; if(sy==) return sum; if(pos<s[i].R)
{
sum=sum+k,pos=pos+k;
sy=sy-; if(sy==) return sum;
} if(g[i]==)
{
sum=sum+s[i].R+k--pos;
pos=s[i].R+k-;
sy=sy-; if(sy==) return sum;
}
}
}
return sum;
} void dfs(int tot)
{
if(tot==n+)
{
ans=max(ans,check());
return;
}
g[tot]=; dfs(tot+);
g[tot]=; dfs(tot+);
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
ans=;
scanf("%d%lld%lld",&n,&k,&m);
for(int i=; i<=n; i++)
scanf("%lld%lld",&tmp[i].L,&tmp[i].R);
f();
dfs();
printf("%lld\n",ans);
}
return ;
}
ZOJ 3941 Kpop Music Party的更多相关文章
- ZOJ 3941 Kpop Music Party 贪心
题目链接: http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3941 题解: 先吧所给的区间合并,得到若干个独立的区间. 然后从左 ...
- ZOJ 3941 Kpop Music Party(省赛, 贪心)
Kpop Music Party Time Limit: 2 Seconds Memory Limit: 65536 KB Marjar University often hosts Kpo ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
- ZOJ 3686 A Simple Tree Problem
A Simple Tree Problem Time Limit: 3 Seconds Memory Limit: 65536 KB Given a rooted tree, each no ...
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
- ZOJ Problem Set - 1392 The Hardest Problem Ever
放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...
- ZOJ Problem Set - 1049 I Think I Need a Houseboat
这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...
- ZOJ Problem Set - 1006 Do the Untwist
今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...
- ZOJ Problem Set - 1001 A + B Problem
ZOJ ACM题集,编译环境VC6.0 #include <stdio.h> int main() { int a,b; while(scanf("%d%d",& ...
随机推荐
- 5.1 timestamp数据类型默认值
5.1 不支持同一张表中有多个tmiestamp类型字段的默认值为current_time, 5.6版本无此问题
- JavaBean技术的一些讲解
JavaBean: 由于原先的jsp的html代码和css代码以及java代码都是写在一起的,所以看起来就比较冗余,同时 也体现不了javaBean中面向对象的思想的{当然可以同过jstl标签库以及m ...
- php 数据库并发处理
在并行系统中并发问题永远不可忽视.尽管PHP语言原生没有提供多线程机制,那并不意味着所有的操作都是线程安全的.尤其是在操作诸如订单.支付等业务系统中,更需要注意操作数据库的并发问题. 接下来我通过一个 ...
- AutoTile 自动拼接(六 大结局) 学习与实践
昨天在网上找了一些资源图片,这回就不用担心 背景资源不多的问题了,现在我一边 制作,一边发布文章. 各种各样,500多个,这里还是特别感谢 ,万恶的资本主义,不设密码就给我分享. 在制作前,大家看下这 ...
- HDU 4738 Caocao's Bridges(割边)
乍一看一个模板题,仔细一看还是模板题,但是三个坑.1,不是连通图,放0个.2 守卫为0,放1个. 3注意重边. #include<iostream> #include<cstdio& ...
- synchronized关键字以及实例锁 类锁
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchronized(this ...
- StringWriter/PrintWriter在Java输出异常信息中的作用
闲来无事,看看JUnit的源代码.刚刚开始看就发现一段有趣的代码: public String trace() { StringWriter stringWriter = new StringWrit ...
- 《Peering Inside the PE: A Tour of the Win32 Portable Executable File Format》阅读笔记二
Common Sections The .text section is where all general-purpose code emitted by the compiler or assem ...
- 使用NGUI进行类似Button的操作
下面例子以Label和Sprite为例,进行说明如何在NGUI中对控件添加单击响应的事件方法. 首先在UIRoot下添加Label控件,然后Scene场景中右键Label-->Attach--& ...
- double类型之四舍五入
题目: A - Tutor Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%I64d & %I64u Submi ...