今天是bessie的生日,他買了乙個蛋糕和朋友們一起分享,蛋糕可以看成是乙個r行c列的**,共有r*c個格仔,每個格仔都有乙個0至9的數字,表示該格仔蛋糕擁有的巧克力。現在bessie要把蛋糕橫的切3刀再豎的切3刀,由於bessie刀法厲害,所以每個格仔蛋糕都是完整的,顯然蛋糕會被切成16份,然後bessie和他的15個朋友們每人拿乙份,bessie比較客氣,總是等其他朋友拿完了,bessie拿最後剩下的那乙份。bessie的朋友們都很不客氣,都是挑最多巧克力的那份去拿,於是bessie最後拿到手的那份蛋糕總是巧克力總和最少的。bessie心想:既然自己總是最後拿蛋糕,那應該怎麼切蛋糕,才能使得自己拿的那部分蛋糕的有盡量多的巧克力呢?這個問題自然是你的任務了。
要求最大值最小,自然考慮到二分答案,
那麼暴力列舉橫切的三條邊,
將豎切的三條邊用三次二分來找出來,如果無法找出這縮小二分出的答案。
時間複雜度o(
log2
(sum
16)n3
3log
2n)
#include
#include
#include
#include
#include
#include
#include
const
int maxlongint=2147483647;
const
int mo=1000000007;
const
int n=85;
using
namespace
std;
int a[n][n],n,m,sum[n][n],d[4];
int val(int x,int y,int x1,int y1)
int rf(int l,int r,int v)
return l;
}bool ok(int v)
bool dg(int x,int j,int v)
for(int i=j;i<=n;i++)
}return
false;
}int main()
for(int i=1;i<=n;i++) a[i][m+1]=100;
for(int i=1;i<=n;i++)
for(int j=1;j<=m+1;j++)
sum[i][j]=a[i][j]+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
int l=0,r=num/16;
while(l+1
int mid=(l+r)/2;
if(dg(1,1,mid)) l=mid;
else r=mid;
}if(dg(1,1,r)) printf("%d",r);
else
printf("%d",l);
}
NOIP2014模擬11 3 噪音
fj有m個牛棚,編號1至m,剛開始所有牛棚都是空的。fj有n頭牛,編號1至n,這n頭牛按照編號從小到大依次排隊走進牛棚,每一天只有一頭奶牛走進牛棚。第i頭奶牛選擇走進第p i 個牛棚。由於奶牛是群體動物,所以每當一頭奶牛x進入牛棚y之後,牛棚y裡的所有奶牛們都會喊一聲 歡迎歡迎,熱烈歡迎 由於聲音很...
noip2014 螺旋矩陣 (模擬)
p1913螺旋矩陣 accepted 標籤 noip普及組2014 乙個 n 行 n 列的螺旋矩陣可由如下方法生成 從矩陣的左上角 第 1 行第 1 列 出發,初始時向右移動 如果前方是未曾經過的格仔,則繼續前進,否則右轉 重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中 依次填入 1,2...
NOIP2014 比例簡化 模擬
輸入檔案 ratio.in輸出檔案 ratio.out簡單對比 時間限制 1 s 記憶體限制 256 mb 在社交 上,經常會看到針對某乙個觀點同意與否的民意調查以及結果。例如,對某一觀點表示支援的有1498人,反對的有902人,那麼贊同與反對的比例可以簡單的記為1498 902。不過,如果把調查結...