1682. [HAOI2014]贴海报

★★☆   输入文件:ha14d.in   输出文件:ha14d.out   简单对比
时间限制:1 s  
内存限制:256 MB

【题目描述】

Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论。为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙。

张贴规则如下:

1.electoral墙是一个长度为N个单位的长方形,每个单位记为一个格子;

2.所有张贴的海报的高度必须与electoral墙的高度一致的;

3.每张海报以“A B”表示,即从第A个格子到第B个格子张贴海报;

4.后贴的海报可以覆盖前面已贴的海报或部分海报。

现在请你判断,张贴完所有海报后,在electoral墙上还可以看见多少张海报。

【输入格式】

第一行:     N   M            分别表示electoral墙的长度和海报个数

接下来M行:   Ai   Bi          表示每张海报张贴的位置

【输出格式】

输出贴完所有海报后,在electoral墙上还可以看见的海报数。

【样例输入】

100 5

1 4

2 6

8 10

3 4

7 10

【样例输出】

4

【提示】

【约束条件】

1 0<= N <= 10000000     1<=M<=1000   1<= Ai <= Bi <=10000000

所有的数据都是整数。数据之间有一个空格

上来看了一眼立马用10min打出了暴力,打完T3的暴力之后回来看了一下这个题感觉是线段树的裸体

然后用15min写出了线段树

但是!!!

线段树!!

居然!!

比!!

暴力!!

慢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

而且!!

还!!

爆内存!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

这就比较尴尬了,望着对拍程序上每次都是暴力先跑完然后线段树等一秒再出结果的场景,我还能说什么、、

难道是因为我写的线段树太丑了???

=.=

暴力思路:模拟张贴每一个海报

 1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 using namespace std;
6 const int MAXN=10000001;
7 int n,m,x,y;
8 int read(int & n)
9 {
10 char c='/';int x=0,flag=0;
11 while(c<'0'||c>'9')
12 {c=getchar();
13 if(c=='-')flag=1;}
14 while(c>='0'&&c<='9')
15 {x=x*10+c-48;c=getchar();}
16 if(flag)n=-x;
17 else n=x;
18 return n;
19 }
20 int a[MAXN];
21 int vis[MAXN];
22 int now=1;
23 int ans=0;
24 int main()
25 {
26 freopen("a.in","r",stdin);
27 freopen("b.out","w",stdout);
28 read(n);read(m);
29 for(int i=1;i<=m;i++)
30 {
31 read(x);read(y);
32 if(x>y)swap(x,y);
33 for(int j=x;j<=y;j++)
34 a[j]=i;
35 }
36 for(int i=1;i<=n;i++)
37 {
38 if(vis[a[i]]==0&&a[i]!=0)
39 {
40 ans++;
41 vis[a[i]]=1;
42 }
43 }
44 printf("%d",ans);
45 return 0;
46 }

正解:老师讲了个扫描线但是没听懂啊,,,,,so参考了题解的浮水法

首先我们读入每一个海报的l和r,

然后逆序扫描,默认ans为一,因为最后的一张一定能看见

对于每一个i一直向上枚举,就像浮水一样,如果经过不断的裁剪之后能够>n的话

ans++

 1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #include<algorithm>
6 using namespace std;
7 const int MAXN=1001;
8 int n,m,ans=1;
9 int vis[MAXN];
10 struct node
11 {
12 int l;
13 int r;
14 int id;
15 }a[MAXN];
16 int read(int & n)
17 {
18 char c='/';int flag=0,x=0;
19 while(c<'0'||c>'9')
20 {if(c=='-')flag=1;
21 c=getchar();}
22 while(c>='0'&&c<='9')
23 {x=x*10+(c-48);
24 c=getchar();}
25 if(flag)n=-x;
26 else n=x;
27 }
28 void water(int ll,int rr,int now,int pos)
29 {
30 if(vis[pos])
31 return ;
32 while(now<=m&&(rr<=a[now].l||ll>=a[now].r))
33 now++;
34 if(now>m)
35 {
36 vis[pos]=1;
37 ans++;
38 return ;
39 }
40 if(ll<a[now].l&&rr>a[now].l)
41 water(ll,a[now].l,now+1,pos);
42 if(rr>a[now].r&&ll<a[now].r)
43 water(a[now].r,rr,now+1,pos);
44
45 }
46 int main()
47 {
48 freopen("ha14d.in","r",stdin);
49 freopen("ha14d.out","w",stdout);
50 read(n);read(m);
51 for(int i=1;i<=m;i++)
52 {
53 read(a[i].l);
54 read(a[i].r);
55 a[i].r=a[i].r+1;
56 a[i].id=i;
57 }
58 for(int i=m-1;i>=1;i--)
59 {
60 water(a[i].l,a[i].r,i+1,i);
61 }
62 printf("%d",ans);
63 return 0;
64 }

1682. [HAOI2014]贴海报的更多相关文章

  1. cogs1682. [HAOI2014]贴海报 x

    1682. [HAOI2014]贴海报 ★★☆   输入文件:ha14d.in   输出文件:ha14d.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] Bytetow ...

  2. 【题解】Luogu P3740 [HAOI2014]贴海报

    woc,今天已经是day -1了 再写一颗珂朵莉树来++rp吧 否则就要AFO了qaq 这有可能是我最后一篇题解/博客qaq 原题传送门:P3740 [HAOI2014]贴海报 考前刷水题到底是对还是 ...

  3. Luogu P3740 [HAOI2014]贴海报_线段树

    线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...

  4. 洛谷P3740 【[HAOI2014]贴海报】

    (呃...本蒟蒻的第一篇题解qwq)..不废话了讲正题..思路来源于铺地毯(-->传送门)..先算出每一个格子上覆盖的海报并把可见的海报做标记然后算出有多少海报是可见的..但是作为省选题怎么可能 ...

  5. BZOJ5168: [HAOI2014]贴海报 线段树

    Description Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委 员 会为选民准备了一个张贴海报的electoral墙.张贴规则如下 ...

  6. 洛谷P3740 [HAOI2014]贴海报

    题目描述 Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规则如下: electo ...

  7. 【线段树】【P3740】 [HAOI2014]贴海报

    传送门 Description Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规 ...

  8. 洛谷 P3740 [HAOI2014]贴海报

    题目描述 Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规则如下: electo ...

  9. [haoi2014]贴海报

    Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙.张贴规则如下:1.electoral墙是 ...

随机推荐

  1. operamasks-omGrid的使用

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="personTab.aspx ...

  2. 我的arcgis培训照片7

    来自:http://www.cioiot.com/successview-553-1.html

  3. 计算机常识--win7 删除文件、拒绝訪问等等,所有提示权限不够 解决的方法

    本来都不想写这些东西的,可是又常常遇到,还是记录一下吧! 一键获取管理员的最高权限 创建一个txt文件,然后将其后缀改为.reg格式:内容例如以下 Windows Registry Editor Ve ...

  4. Tomcat启动一半闪退问题解决

    近期刚刚接触Tomcat.对其还不是非常了解. 在这几天,遇到一个Tomcat启动闪退的问题.通过查阅各种资料.算是完美解决.在此分享给朋友们. 首先.确定你的问题在哪里.有两个方法,你能够通过日志去 ...

  5. Restful WebService简介

    RESTful Web Services已经渐渐開始流行, 主要是用于解决异构系统之间的通信问题.非常多站点和应用提供的API,都是基于RESTful风格的Web Services,比較就有Googl ...

  6. ios19---xib

    // // ViewController.m #import "ViewController.h" @interface ViewController () @end @imple ...

  7. CPU上电时序详细分析

    首先是RTC电源,这部分电力是永远不关闭的,除非电池(纽扣电池)没电并且没接任何外部电源(比如电池和电源适配器). RTC用以保持机器内部时钟的运转和保证CMOS配置信息在断电的情况下不丢失:其次,在 ...

  8. 使用Java实现图像分割

    为减少动画制作过程中的IO操作,我们可以使用连续动画来改善动画播放效率.如果我们对图像中的每张小图像单独分割成独立的文件,那么当每次要使用这些小图像的时候,我们都得从文件中读取图像信息. 实际上我们可 ...

  9. easyui-filebox 文件上传

    参考文章:http://blog.csdn.net/fsdad/article/details/73200618 easyui论坛:http://www.jeasyui.com/forum/index ...

  10. 如何彻底卸载Vs2015

    当我们卸载了VS2015想再安装VS软件的时候,发现安装路径根本更改不了. 网上查的由很多方法. 要真的找注册表去完全删除时非常繁琐的这里可以使用的方法就是 先下载卸载软件 https://githu ...