機房練習賽 Dinner

2021-09-26 09:52:00 字數 825 閱讀 8658

本來看到這道題的第一想法是環形區間dp的,但是模擬完樣例我就恍然大悟,在10的時間內可以同時讓1,5點完餐,那不就是找最大值得最小值嗎?

然後就是二分答案了,二分最少時間。

然後就是我的玄學check 我在考試的時候是想到了變成二倍鏈在區間上處理的,但我直接o(n)處理了每個區間的和不大於x的塊,然後列舉二倍鏈上長度為n的序列看著兩個點之間的塊數有多少個,如果小於等於m就返回true; 然而這種玄學check錯了4個點,就只有60分。我想盡辦法都沒有出出一組hack資料。

評測時在網上搜題解,說是二分套二分再加倍增。而我們機房大佬yza提出了一種貪心的方法,使check的複雜度從n方降到了n,具體過程就是從只用列舉第乙個塊裡的數作為起點,因為二倍鏈之後一定會跳到n+1—n+q的塊其實那就等效於從第乙個塊開始。 這種貪心再隨機資料下期望複雜度是o(n)的。

具體細節就看**吧:

#includeusing namespace std;

const int maxn = 50100;

int n,m,t[maxn],r,l=-1,ans,a[maxn*2],b[maxn*2];

int qzh[maxn*2] ;

inline void read(int &x)

while(s>='0'&&s<='9')

x*=f;

}bool check(int x)

if(cnt<=m) return true;

} return false;

}int main()

printf("%d",ans);

return 0;

}

20170117 機房 練習賽

現代科學,面廣枝繁,不是一輩子學得了的。惟一的辦法是集中精力,先打破一缺口,建立一塊或幾塊根據地,然後乘勝追擊,逐步擴大研究領域。此法單刀直入,易見成效。王梓坤 我熱愛生活,我是一名快速成長的oier include include include define program name color...

機房練習賽4 3 drive

input file drive.in output file drive.out time limit 2 second 工頭cky 最近開了一家 公司,開始經商。作為cky 的忠實小弟,jyb 當了cky 老總的司機。一天晚上,cky 突然找到了乙個新的客戶,所以第二天一早要急著從成都去上海談生...

機房練習賽4 3 graph

input file graph.in output file graph.out time limit 1 second jyb 給大家講過強連通分量,強連通分量中的任意兩點之間都可以互相到達。這個條件感覺很苛刻,大部分圖 都不能滿足。現在jyb 告訴你乙個新的概念 單向連通圖 如果有向圖中,對於...