2118: 簽到題
時間限制: 1 sec 記憶體限制: 128 mb
提交: 54 解決: 22
[提交] [狀態] [討論版] [命題人:admin]
題目描述
作為acm集訓隊一員的你,有一天拿到了你的歷史訓練時長記錄表。你當然是想讓你的訓練時長看起來好看一些,所以你想調整這份記錄表,使得訓練時長最少的一天的時間在所有可能的調整方案中最大。你還有m分鐘就夢醒了,時間緊迫,你每一分鐘可以使得連續的w天時長記錄多乙個單位時間。注意,在夢中,你不需要考慮一天有多少的時間限制。 輸出經過你的調整,最小的時長。(睡醒前的答案)
輸入多組資料,第一行為乙個整數t,表示資料組數(t<=10) 接下來每組資料,開頭為n,m,w(1<=w , n<=100000, 0<=m <= 1000000),表示有記錄的歷史訓練天數 接下來一行n個數,表示這一天你的簽到時長t(0<=t<=1000000)
輸出輸出t行,每行代表一組的答案。
樣例輸入
13 2 1
2 1 2
樣例輸出
二分答案,差分檢查。
#include
#define fi first
#define se second
#define log2(a) log(n)/log(2)
#define show(a) cout<#define show2(a,b) cout<#define show3(a,b,c) cout<#define tim printf("time cost : %lf s\n",(double)clock()/clocks_per_sec);
using namespace std;
typedef
long
long ll;
typedef pair p;
typedef pair lp;
const ll inf =
0x3f3f3f3f
;const
int n =
2e5+10;
const ll mod =
1e12
;const ll p=
1e6;
const
int base=
131;
const
double pi=
acos(-
1);int a[n]
,n,rm,w,m;
int num[n]
;bool check
(int x)
}return m>=0?
1:0;
}int
main()
else r=mid-1;
}printf
("%d\n"
,ans);}
}
二分 差分 思維
二分 差分 思維 當猜了乙個數 x 總共有三種情況 裁判說數大了,那麼裁判說對的取值範圍是 x 裁判說數小了,那麼裁判說對的取值範圍是 x,裁判說數一樣,那麼裁判說對的取值範圍是 x,x 那麼我們只需要求最大有多少個區間重疊了就行了,問題就轉化成了區間的修改,單點查詢,可以考慮差分了。注意題目資料 ...
金牌廚師(二分 差分)
乙個廚師可以做出辣度範圍是 1,n 的菜。現在有 m 個同學,每個同學可以接受的辣度範圍是 l i,r i 廚師每天會選擇一部分同學,做出讓他們都滿意的菜。滿意程度定義為選出的同學的人數 k 和能讓這部分同學都接受的菜的種類數 x 這裡理解為一種辣度對應一種菜 兩者中的最小值,即 min k,x 求...
二分入門題
在乙個遞增的序列裡,查詢元素是否存在,若存在輸出yes,不存在輸出no.本題多組資料,首先輸入乙個數字n,然後輸入n個數,資料保證數列遞增,然後再輸入乙個查詢數字。若存在輸出yes,不存在輸出no.4 1 3 5 8 3 yes include include includeusing namesp...