本來看到這道題的第一想法是環形區間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 告訴你乙個新的概念 單向連通圖 如果有向圖中,對於...