链接:http://acm.ecnu.edu.cn/problem/3263/

题意:

从 1 到 n 的一条数轴。有 m 个区间至少要安装一定数量的路灯,路灯只能装在整数点上,有k盏路灯已经安装好 ,现在求最少需要安装多少盏路灯。

分析:

一开始我的想法是按重叠部分给数轴每个整数点一个优先级,然后在区间中优先度高的先补灯。但比赛中无论如何都是WA,最后找出错误是因为这样补灯优先级相同时候他会按顺序补灯。

最后看题解发现他是根据右端点升序排序进行处理,然后不满足的话尽量往右边补灯,因为如果按右端点排序,那么每一个区域的左边肯定先被前一个区域考虑到了。

给出两组组数据, 第一组证明我第一个想法是错误的, 第二组测试。

8 3 1

8

1 6 2

1 3 1

4 6 1

1

答案是:2
9 5 6
1 2 3 4 5 7
1 5 4
4 8 5
1 3 3
2 9 7
1 8 3

答案是:2

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e4;
struct K
{
int x, y, num;
friend bool operator < (K a, K b)
{
return a.y < b.y;
} };
K ins[1000];
bool lap[maxn];
int n,m,k,ans,flag;
int main()
{
// freopen("1.txt","r",stdin);
int t;
scanf("%d", &t);
for(int kase = 1; kase <= t; kase ++)
{
memset(lap,0,sizeof(lap));
scanf("%d %d %d", &n, &m, &k);
for(int i = 0; i < k; i++)
{
int t;
scanf("%d", &t);
lap[t] = 1;
}
for(int i = 0; i < m; i++)
{
scanf("%d %d %d", &ins[i].x, &ins[i].y, &ins[i].num);
}
sort(ins, ins+m); ans = 0,flag = 0;
for(int i = 0; i < m; i++)
{
int b = ins[i].x, e = ins[i].y, need = ins[i].num;
int sum = 0;
for(int j = e; j >= b; j--)
{
if(lap[j])
{
sum++;
} }
int pos = e;
while(sum < need && pos >= 1)
{
if(!lap[pos])
{lap[pos] = 1;
sum++;
ans++;
}
pos--;
}
if(sum < need)
{
flag = 1;
break;
}
}
if(flag) printf("Case %d: -1\n",kase);
else printf("Case %d: %d\n",kase,ans);
} }

  

ECNU 3263 丽娃河的狼人传说 (贪心)的更多相关文章

  1. ECNU 3263 丽娃河的狼人传说(差分约束)

    丽娃河的狼人传说 Time limit per test: 1.0 seconds Memory limit: 256 megabytes 丽娃河是华师大著名的风景线.但由于学校财政紧缺,丽娃河边的路 ...

  2. ECNU 3263 - 丽娃河的狼人传说

    一定要纪念一下第一道在比赛中自己做出来的贪心. 题目链接:http://acm.ecnu.edu.cn/problem/3263/ Time limit per test: 1.0 seconds T ...

  3. Problem #3263 丽娃河的狼人传说 区间满足灯数,r排序后贪心。

    丽娃河的狼人传说 Time limit per test: 1.0 seconds Time limit all tests: 1.0 seconds Memory limit: megabytes ...

  4. EOJ 3263 丽娃河的狼人传说

    差分约束系统,$spfa$. 首先判断无解,若某个约束的$t$大于区间长度,则一定无解. 否则一定有解,可以得到一系列的不等式: 最终区间和大于等于目前的区间和:$S[R]-S[L-1]≥val$, ...

  5. EOJ3263:丽娃河的狼人传说(贪心)

    传送门 题意 分析 考虑将区间按右端点排序,再遍历区间,操作即可 建议以加方式写 trick 1.不需要判区间重合 代码 #include<cstdio> #include<cstr ...

  6. 超时空英雄传说2复仇魔神完全攻略&秘技

    ╓─╥───────────────────────────────────────────────────╥─╖ ║ ║ 超 時 空 英 雄 傳 說 2 ║ ║ ║ ║ --復 仇 魔 神-- ║ ...

  7. [原创]webapp/css3实战,制作一个《炉石传说》宣传页

    在移动网页,尤其是webapp中常需要用到大量的css3动画,来获得良好交互体验 我之前帮朋友做了一个,可惜没帮上忙现在和大家分享一下 目标是要做一个<炉石传说>游戏的介绍宣传页面,文字内 ...

  8. codevs 1021 玛丽卡(spfa)

    题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们 ...

  9. 狼人杀BETA阶段计划简介

    狼人杀beta阶段任务与目标 简介 一.前言 狼人杀alpha阶段终于在组团刷夜中结束了,我们取得了一些成绩,同时也暴露了团队的一些问题.但不管怎样,有了在alpha版本中收获的经验,我们将在beta ...

随机推荐

  1. NOIp 2014 联合权值 By cellur925

    题目传送门 这题自己(真正)思考了很久(欣慰). (轻而易举)地发现这是一棵树后,打算从Dfs序中下功夫,推敲了很久规律,没看出来(太弱了). 开始手动枚举距离为2的情况,模模糊糊有了一些概念,但没有 ...

  2. Centos 7 chrome

    share from https://www.cnblogs.com/lenmom/p/9195581.html 1. 下载Chrome浏览器的rpm包 https://www.chrome64bit ...

  3. linux下创建用户及组

    linux下创建用户及组: 1.创建组 groupadd  组名 2.创建用户,并将用户添加到组 useradd  用户名  -g  组名 3.更改用户的密码 password  用户名 4.修改目录 ...

  4. Hdu 5384 Danganronpa (AC自动机模板)

    题目链接: Hdu 5384 Danganronpa 题目描述: 给出n个目标串Ai,m个模式串Bj,问每个目标串中m个模式串出现的次数总和为多少? 解题思路: 与Hdu 2222  Keywords ...

  5. bnu oj 13288 Bi-shoe and Phi-shoe

    题目链接: http://www.bnuoj.com/contest/problem_show.php?pid=13288 题目大意: 给出一个n,然后给出n个幸运数([1,m]中不能被m整除的数的数 ...

  6. Oracle中的序列

    序列是什么? 序列是用来生成唯一.连续的整数的数据库对象.序列通常用来自动生成主键或唯一键的值.序列可以按升序排列,也可以按照降序排列. 其实Oracle中的序列和MySQL中的自增长差不多一个意思. ...

  7. 怪物猎人OL简单测评与碎碎念

    请移步我的个人网站查看: www.wuduojia.cn

  8. 一台机器运行多个JBoss多实例

    JBossXMLJVMTomcat应用服务器  我们经常会遇到这种情况,有时候希望在同一台机器上部署若干个JBoss实例,上面运行不同的应用程序,这样的话无论由于什么原因需要对某个JBoss实例进行关 ...

  9. Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射 下一篇:Farseer.net轻量级ORM开源 ...

  10. MVC学习(一)

    http://www.cnblogs.com/QLeelulu/archive/2008/09/30/1302462.html