『ACM C++』 Codeforces | 1066A - Points in Segments

来源:https://www.cnblogs.com/winniy/archive/2019/02/28/10454175.html
-Advertisement-
Play Games

大一生活真 特麽 ”豐富多彩“ ,多彩到我要忙到哭泣,身為班長,很多班級的事情需要管理,也是,什麼東西都得體驗學一學,從學生會主席、團委團總支、社團社長都體驗過一番了,現在差個班長也沒試過,就來體驗了一番哈哈哈,其實這種精心服務一個班級的人還是很棒的一種感覺呢。思考思考最近的任務啊: (1)英語劇 ...


 

  大一生活真 特麽 ”豐富多彩“ ,多彩到我要忙到哭泣,身為班長,很多班級的事情需要管理,也是,什麼東西都得體驗學一學,從學生會主席、團委團總支、社團社長都體驗過一番了,現在差個班長也沒試過,就來體驗了一番哈哈哈,其實這種精心服務一個班級的人還是很棒的一種感覺呢。思考思考最近的任務啊:

  (1)英語劇

  (2)三下鄉公益策劃

  (3)兼職 - 影視劇組後期特效

  (3)三月底程式設計大賽天梯賽

  (4)班會以及班級細節事件處理

  (5)多模態視頻處理

  (6)兼職 - 校方藝考航拍記錄

  (7)六月四級考試和三下鄉

  (8)七月暑假學車

  (9)兼職 - Eddy工作

  哇 大致想了想我真的可以忙死加學到死鴨,嘛,能者多勞,扛住就是勝利!!!好啦~不扯多,今天ACM集訓隊訓練有道坑題得六個心眼,媽耶交了九次WA九次,最後一次交終於AC,哭邁

 

 

今日興趣新聞:

MWC摺疊屏刷屏背後的一場大戲:5家廠商恩怨情仇史

鏈接:https://mbd.baidu.com/newspage/data/landingsuper?context=%7B"nid"%3A"news_9543883370009568888"%7D&n_type=0&p_from=1

  最近華為的新手機在朋友圈刷了不少圈,這種合併平板和手機的方式說不定真的會在未來暢銷,因為這兩者的用戶需求量本來就是挺大的~,這篇新聞還是蠻有趣的講了這幾年的勢頭,可以看看。

 

 

------------------------------------------------題目----------------------------------------------------------

A. Points in Segments

You are given a set of nn segments on the axis OxOx, each segment has integer endpoints between 11 and mm inclusive. Segments may intersect, overlap or even coincide with each other. Each segment is characterized by two integers lili and riri (1lirim1≤li≤ri≤m) — coordinates of the left and of the right endpoints.

Consider all integer points between 11 and mm inclusive. Your task is to print all such points that don't belong to any segment. The point xxbelongs to the segment [l;r][l;r] if and only if lxrl≤x≤r.

Input

The first line of the input contains two integers nn and mm (1n,m1001≤n,m≤100) — the number of segments and the upper bound for coordinates.

The next nn lines contain two integers each lili and riri (1lirim1≤li≤ri≤m) — the endpoints of the ii-th segment. Segments may intersect, overlap or even coincide with each other. Note, it is possible that li=rili=ri, i.e. a segment can degenerate to a point.

Output

In the first line print one integer kk — the number of points that don't belong to any segment.

In the second line print exactly kk integers in any order — the points that don't belong to any segment. All points you print should be distinct.

If there are no such points at all, print a single integer 00 in the first line and either leave the second line empty or do not print it at all.

Examples

input

3 5
2 2
1 2
5 5

output

2
3 4 

input

1 7
1 7

output

 0

Note

In the first example the point 11 belongs to the second segment, the point 22 belongs to the first and the second segments and the point 55belongs to the third segment. The points 33 and 44 do not belong to any segment.

In the second example all the points from 11 to 77 belong to the first segment.

------------------------------------------------題目----------------------------------------------------------

 

(一) 原題大意:

    題目願意是:輸入四個量:L、V、left、right,其中從1到L為範圍界,即1<=x<=L,當滿足x可以整除V時,說明該處有燈籠,但left和right這個範圍內沒有燈籠,請統計有幾個燈籠。

    題目感覺是不難的,但就是在一些端點特值處理上會有些問題。

 

(二) 題目分析:

    這裡記錄一下我原本的錯誤思想:

    第一次我的錯誤想法是直接就for暴力搜索了,結果就會超時Time limit exceeded on test 2

    錯誤代碼:

#include<stdio.h>
int times,L,V,left,right;
int ans_light;
int main()
{
    scanf("%d",&times);
    while(times--)
    {
        ans_light = 0;
        scanf("%d %d %d %d",&L,&V,&left,&right);
        for(int i = 1;i<left;i++) if(i%V == 0) ans_light++;
        for(int i = right+1;i<=L;i++) if(i%V == 0) ans_light++;
        printf("%d\n",ans_light);
    }
    return 0;
 } 

    謹記千萬沒事就不要暴搜,看看有沒有快捷的方式可以快速得到答案,這是ACM要訓練我們的。

    第二個錯誤的想法:

    原本的想法是用了ceil函數,即向上取整,讓V輸入的數是個浮點數,代碼大概如下:

             ans_light_1 = ceil((left - 1)/V);
             ans_light_2 = ceil((L - right)/V);
             printf("%d\n",ans_light_1+ans_light_2);

    然而這個做法,在V小於left的時候,答案是正確的,交了半天發現當V大於等於left的時候就會出現問題了

    所以第三個錯誤想法,我就把V和left的兩種情況區分開來討論了:

#include<stdio.h>
#include<math.h>
int times,L,left,right;
float V;
int ans_light_1,ans_light_2;
int main()
{
    scanf("%d",&times);
    while(times--)
    {
        ans_light_1 = ans_light_2 = 0;
        scanf("%d %f %d %d",&L,&V,&left,&right); 
        if(V<left)
        {
             ans_light_1 = ceil((left - 1)/V);
             ans_light_2 = ceil((L - right)/V);
             printf("%d\n",ans_light_1+ans_light_2);
        }
        else
        {
            ans_light_1 = L/int(V);
            ans_light_2 = right/int(V) - left/int(V);
            if(left % int(V) == 0)
            {
                printf("%d\n",ans_light_1 - ans_light_2 - 1);
                continue;
            }
            printf("%d\n",ans_light_1 - ans_light_2);
        }
    }
    return 0;
 } 

    結果寫到這裡的時候,突然發現可以直接用一個公式直接求解:

    這裡的燈籠數,實際上等於 L / V 減去 ( r / V - ( l - 1 ) / V ) 這樣就能得到結果了。

 

(三) AC代碼:

    因為代碼比較簡單,就不分塊了,直接獻上,給自己留個提醒。

#include<stdio.h>
#include<math.h>
int times,L,left,right;
int V;
int ans_light_1,ans_light_2;
int main()
{
    scanf("%d",&times);
    while(times--)
    {
        ans_light_1 = ans_light_2 = 0;
        scanf("%d %d %d %d",&L,&V,&left,&right); 
        ans_light_1 = L/V;
        ans_light_2 = right/V - (left-1)/V;
        printf("%d\n",ans_light_1 - ans_light_2);
    }
    return 0;
 } 

 

 

(四)AC截圖:

 

 

註:我還是個渣渣輝,代碼可能寫得不夠高效不夠好,我也會努力優化,如果有更好的解法,真心希望您能夠評論留言貼上您的代碼呢~互相幫助互相鼓勵才能成長鴨~~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 定義:用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象 原型模式其實就是通過一個對象來創建一個新的可定製(可以是源對象的一個副本也可以有所改變)的對象,而且我們並不需要知道具體創建的細節。在java中使用原型模式是非常簡單的,因為Object類中提供了一個本地方法clone,就是用來拷 ...
  • PHP語言在Linux系統上運行的時候,需要在Linux系統上部署相應的Nginx、MySQL、PHP等環境,只有將這些環境參數都設置好,PHP相關應用程式才可正常運行,部署環境的方法有很多種,可手動模式下一個個軟體環境進行安裝,也可使用工具進行快速部署,此文以阿裡雲的Centos系統為例,介紹在C ...
  • 這一篇博客,還是接著說那些常見的反爬蟲措施以及我們的解決辦法。同樣的,如果對你有幫助的話,麻煩點一下推薦啦。 一、防盜鏈 這次我遇到的防盜鏈,除了前面說的Referer防盜鏈,還有Cookie防盜鏈和時間戳防盜鏈。Cookie防盜鏈常見於論壇、社區。當訪客請求一個資源的時候,他會檢查這個訪客的Coo ...
  • FPM(FastCGI Process Manager)是PHP FastCGI運行模式的一個進程管理器,從它的定義可以看出,FPM的核心功能是進程管理,那麼它用來管理什麼進程呢?這個問題就需要從FastCGI說起了。 FastCGI是Web伺服器(如:Nginx、Apache)和處理程式之間的一種 ...
  • 裝飾者模式 想看本系列前作的朋友可以點擊下麵鏈接哦。 一起去開心的購物吧——淺談觀察者模式 記一場精彩的籃球比賽——淺談策略模式 大家好,又跟大家見面啦,今天呢,我與大家分享一個新的Java設計模式——裝飾者模式。 首先,不能免俗的我們來看一下官方給的定義: 裝飾者模式動態地將責任附加到對象上。若要 ...
  • 一、前言說明 本機運行環境:系統環境Win10,運行環境Python3.6,運行工具Pycharm 需要Python的包有:pywifi 這是一種暴力破解wifi的模式,需要的時間比較長,本文主要提供一個破解思路 二、思路介紹 先生成一個密碼字典(此步驟也可以從網上下載字典) 迴圈用密碼字典的每個密 ...
  • 安裝 laravel(版本 5.8):這裡是全局安裝的, 也就是說在終端任何位置都可以執行下麵的命令進行安裝. 創建一個項目:安裝之後, 進入你存放所有項目的文件夾(我所有的項目都是在 site 文件夾): 然後新建一個項目, 名字可以自定義. 啟動服務:項目創建好了, 現在進入剛剛創建的項目的文件 ...
  • [TOC] python裝飾器初級 認識裝飾器 概念: 簡單地說: 原則 : 不修改被裝飾函數的源代碼 不修改被裝飾函數的調用方式 優點: 有助於讓我們的代碼更簡短,也更Pythonic(Python範兒 應用場景: 在項目迭代過程中,需要不停的為某一個功能(函數)新增或刪除某些小功能, 如果可復用 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...