2020 02 13普及C組模擬賽6(第三題)

2021-10-03 07:15:03 字數 1679 閱讀 4465

題目描述

題目:

農夫約翰最近正在將他的柵欄粉刷一下(這裡所有的柵欄都是在一條直線上的)。他是這樣來粉刷的:他從位置0出發,然後執行n條指令,例如,指令可以是「10 l」,表示約翰從當前的位置向左移動10個單位的距離,並且粉刷移動過程中遇到的柵欄,又或者是「15 r」,表示約翰從當前的位置向右移動15個單位的距離,並且粉刷移動過程中遇到的柵欄。
問題描述:

給定所有約翰需要移動的指令,請計算所有柵欄中至少被粉刷兩次的柵欄的總長度。約翰最多遠離初始位置1000000000個單位的距離。
輸入

第一行乙個正整數n。

接下來第2行到第n+1行,每行表示每條指令。

輸出

只有一行乙個整數,表示所有柵欄中至少被粉刷兩次的柵欄的總長度。
樣例輸入

2 r6 l

1 r8 l

1 r2 r

樣例輸出

資料範圍限制

資料範圍:1<=n<=100000。

提示

說明:樣例中,有6個單位的長度至少被粉刷兩次。分別是[-11,-8],[-4,-3],[0,2]。

正解

把每一次的操作變成乙個區間,存區間的右端和左端。

按照從小到大的順序快排

然後純模擬五種情況分類討論。

ac**

#include

#include

#include

using

namespace std;

int n,x,o,head,tail,s;

char ch;

struct stu

a[100005];

bool

cmp(stu x,stu y)

//快排

intmain()

else

}sort

(a+1

,a+n+

1,cmp)

; head=a[1]

.head;

tail=a[1]

.tail;

for(

int i=

2;i<=n;i++

)//下面是區間模擬

if(a[i]

.head>=tail&&x==0)

if(a[i]

.head<=head&&x==0)

if(x==0)

} cout

}

2020.02.13普及c組模擬賽6(第一題)

2020.02.13普及c組模擬賽6(第二題)

2020.02.13普及c組模擬賽6(第三題)

2020.02.13普及c組模擬賽6(第四題)

2020.02.13普及c組模擬賽6(總結)

2020 02 13普及C組模擬賽6(總結)

t1 花了1個小時才想到正解,開始想錯了,後來就用冒泡ac了 t2知道用dp,寫錯了,忘記減去重複的羊的個數了,比完賽發現不對,改過來才ac 唉 唉 唉 嘆氣三連 無奈t3 知道用區間,但是不會打,用暴力成功爆零。經過講解,知道區間的5種情況,才act4 還快就想到了正解,開始忘記加乙個特判,後來發...

2020 02 13普及C組模擬賽6(第二題)

題目描述 農場主約翰養了兩群有世仇的牛,它們被稱為蒙塔戈斯家族和卡普魯特家族。蒙塔戈斯家族的成員,羅密歐,愛上了美麗的朱麗葉,但後者正好是卡普魯特家族的成員。羅密歐希望與朱麗葉約會,但不希望卡普魯特家族的其他成員發現 否則會有可怕的事情發生!羅密歐和朱麗葉希望在牧場柵欄邊一塊盡可能大的區域中相見,這...

2020 10 05 普及組 模擬賽C組總結

總結這次考試沒發揮好,第二題沒有拿滿分,下次要繼續努力 t1 superpow 10 題目大意 已知a b 超級冪 代表 b個a的冪,求n對數的超級冪之積的個位數。正確思路 當打表後可以發現 b是沒用的,如果b大於2,b就等於2,答案和原來的是一樣的。所以處理一下跑個快速冪就行了。至於為什麼拿10分...