ZOJ——Copying Books 最大值最小化問題 (貪心 + 二分)
#include <cstdio>
#include <cmath>
#include<vector>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stack>
#include<string>
#include<iostream>
#include<set>
#include<vector>
using namespace std;
#define maxn 505
int m,k;
long long arr[maxn],sum,Min,ans;
bool vis[maxn];
int divide(long long M)
{
memset(vis,0,sizeof(vis));
int cnt=0;
int pos=m-1;
while(pos>=0)
{
long long sum=0;
bool ok=true;
while(pos>=0&&sum+arr[pos]<=M)
{
ok=false;
sum+=arr[pos];
--pos;
}
if(ok)
{
return k+1;
}
if(pos>=0)
vis[pos]=true;//這裡想了hin久,就是如果和不超過M,但是k還少的話,下一個函式就要加上/
++cnt;
}
return cnt;
}
long long binary()
{
long long left=Min,right=sum,mid;
while(left<right)
{
mid=(left+right)/2;
if(divide(mid)<=k)
right=mid;
else
left=mid+1;
}
return right;
}
void output()
{
int cnt=divide(ans);
for(int i=0;i<m-1&&cnt<k;++i)
{
if(!vis[i])
{
vis[i]=true;
++cnt;
}
}
for(int i=0;i<m;++i)
{
if(i)
printf(" %lld",arr[i]);
else
printf("%lld",arr[i]);
if(vis[i])
printf(" /");
}
puts("");
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&k);
sum=0;
Min=0;
for(int i=0;i<m;i++)
{
scanf("%lld",&arr[i]);
sum+=arr[i];
if(arr[i]>Min)
Min=arr[i];
}
ans=binary();
output();
}
return 0;
}
相關文章
- leetcode1552題解【二分+貪心】LeetCode
- 刪數問題(貪心)
- 貪心-刪數問題
- leetcode410分割陣列的最大值(二分+貪心,困難)LeetCode陣列
- 區間問題的貪心方法
- 貪心演算法——換酒問題演算法
- 貪心例題
- 貪心演算法篇——區間問題演算法
- 加油站問題(貪心演算法)演算法
- 反悔貪心雜題
- 【貪心】【二分】[NOIP2015]跳石頭
- 「貪心」做題記錄
- 貪心 做題筆記筆記
- 活動選擇問題理解貪心演算法演算法
- 汽車加油問題 SDUT OJ 貪心演算法演算法
- E Revenge on My Boss CCPC 2023 Harbin Site 貪心,二分
- 二分/貪心(ICPC小米預賽第一場 A 2020)
- 貪心(入門簡單題)
- 使用貪心演算法解決集合覆蓋問題演算法
- 貪心
- C240817C. 團隊協作:二分答案+貪心
- Find the Maximum - 題解【思維,貪心】
- 2020ICPC小米邀請賽2 A-2020(貪心+二分)
- 反悔貪心
- Supermarket(貪心)
- leetcode1546題解【字首和+貪心】LeetCode
- 探索貪心演算法:解決最佳化問題的高效策略演算法
- 貪心+搜尋
- 2439. 最小化陣列中的最大值陣列
- 【ybtoj】【貪心】【堆】【例題1】奶牛曬衣服
- LeetCode:動態規劃+貪心題目整理LeetCode動態規劃
- 股票問題-求收益最大值
- [經典演算法]海盜分金問題sql求解(貪心演算法)演算法SQL
- codeforces 1428E. Carrots for Rabbits(貪心(非常優秀的貪心題),結構體過載運算子)結構體
- bzoj3613: [Heoi2014]南園滿地堆輕絮(二分+貪心)
- 貪心演算法演算法
- 貪心、構造合集
- HDU 5821 Ball(貪心)