1682. [HAOI2014]貼海報

来源:http://www.cnblogs.com/zwfymqz/archive/2017/05/27/6914161.html
-Advertisement-
Play Games

1682. [HAOI2014]貼海報 ★★☆ 輸入文件:ha14d.in 輸出文件:ha14d.out 簡單對比 時間限制:1 s 記憶體限制:256 MB 【題目描述】 Bytetown城市要進行市長競選,所有的選民可以暢所欲言地對競選市長的候選人發表言論。為了統一管理,城市委員會為選民準備了一個 ...


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 }
複製代碼
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉載請出自出處:http://www.cnblogs.com/hd3013779515/ 一、基本概念 1、redis集群是一個可以在多個節點之間進行數據共用的設施。redis集群提供了以下兩個好處1.1 將數據自動切分(split)到多個節點1.2 當集群中的某一個節點故障時,redis還可以繼續 ...
  • 遞推演算法 一、遞推演算法簡介 一般是兩步: 1、根據題目條件推出遞推公式 2、根據遞推公式編寫代碼求解(一般可以寫成普通迴圈和遞歸) 二、實例 2.1 斐波拉契數列 斐波拉契數列,1 1 2 3 5 8 13 21 34......,寫出第n項。 (1)遞推公式 f(n)=f(n-1)+f(n-2) ...
  • C++函數 一、函數簡介 函數就是方法,就是為了實現具體功能的一段代碼 二、函數結構 返回值類型 函數名(參數列表){ 函數體 } //求和函數 int sum(int a,int b){ return a+b;} 忘記函數結構怎麼寫的時候,就去想main函數結構,main函數總會寫吧 int ma ...
  • C++模板 C++信息學競賽編程模板 ...
  • 題目 synchronized怎麼實現線程同步?請修改《每天一道Java題[10]》中的MyRunnableThread類以解決三個線程都獲取到10的問題。 解答 方法一: 採用synchronized關鍵字包裹需要保證線程安全的代碼塊,來實現線程同步。語法格式為: 《每天一道Java題[10]》中 ...
  • 1.什麼是適配器模式? 適配器模式是一種過渡模式,用於溝通兩個不相容的事物,實現信息交換。 2.適配器模式的目的 使一個對象能夠以一種相對簡單的方式處理多個不同類型的對象,即一個對象相容多個不同類型的對象。例如,電腦接收外部硬體的插口唯一確定,不同尺寸的記憶體卡先插到讀卡器上,再由讀卡器插到唯一確定的 ...
  • 題目描述 在一個園形操場的四周擺放N堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。 試設計出1個演算法,計算出將N堆石子合併成1堆的最小得分和最大得分. 輸入輸出格式 輸入格式: 數據的第1行試正整數N,1≤N≤100,表示有N ...
  • 轉載請出自出處:http://www.cnblogs.com/hd3013779515/ 1.Redis安裝 使用的最新版本為 3.2.9,下載並安裝: 執行make後報錯 從錯誤看原因是缺少gcc,執行yum install gcc。之後再次執行make,還是報錯。 執行make distclea ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...