好久不更新主要是怠惰了。。。。还要加强训练。

题意分析与思路

注意到这样一句话:

our goal is to minimize the maximum number of pages assigned to a single scriber. Your task is to find the optimal assignment.

这种最大化最小、最小化最大,显然是二分。

如何二分呢,枚举分成k份中各份的最大值,判断在$max_t$的情况下能否分成$\le k$份,能的话那么我们的$max_t$还能更小,不然就得变大。虽然思路很简单,但是由于不熟练,还是写的满磕磕绊绊的,对状态细节的把握不熟练。

代码

#include <bits/stdc++.h>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ALL(x) (x).begin(),(x).end()
#define ZERO(x) memset((x),0,sizeof(x))
typedef long long ll;
typedef unsigned long long ull;
using namespace std; int p[505],m,k;
bool judge(int threshold)
{
int tmp=p[m],cnt=1;
for(int i=m-1;i>=1;--i)
{
if(tmp+p[i]<=threshold)
{
tmp+=p[i];
}
else
{
cnt++;
tmp=p[i];
}
}
if(cnt<=k) return true;
else return false;
} int main()
{
int kase; cin>>kase;
while(kase--)
{
cin>>m>>k;
ll l=-1,r=0;
for(int i=1;i<=m;++i)
{
cin>>p[i];
r+=p[i];
l=max(l,(ll)p[i]);
}
while(l<r)
{
int mid=(l+r)/2;
if(judge(mid)) r=mid;
else l=mid+1;
}
int tmp=0,cnt=1;
bool cur[505]; memset(cur,false,sizeof(cur));
//cout<<l<<" "<<r<<endl;
for(int i=m;i>=1;--i)
{
if(i<=k-cnt) { cur[i]=true; cnt++; /*cout<<i<<" set"<<endl;*/ }
else
{
if(tmp+p[i]<=l)
tmp+=p[i];
else
{
//cout<<i<<" put"<<endl;
tmp=p[i];
cur[i]=true;
cnt++;
}
} }
for(int i=1;i<=m;++i)
{
cout<<p[i];
if(i==m) cout<<endl;
else if(cur[i]) cout<<" / ";
else cout<<" ";
}
}
return 0;
}

「个人训练」Copying Books(UVa714)的更多相关文章

  1. 高效算法——B 抄书 copying books,uva714

    Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description ...

  2. 「日常训练」 Fire!(UVA-11624)

    与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ...

  3. 「国庆训练」ArcSoft's Office Rearrangement(HDU-5933)

    题目与分析 题解见https://blog.csdn.net/cmershen/article/details/53200922. 训练赛场上我们写出来了--在4小时50分钟的时候...激情补题啊.. ...

  4. 「国庆训练」Bomb(HDU-5934)

    题意 给定\(n\)个炸弹,每个炸弹的坐标与代价与影响范围给定,炸弹会引爆影响范围内其他所有炸弹.求引爆所有炸弹的最小代价. 分析 先做\(n^2\)的循环,然后建图,对\(i\)能引爆\(j\)建边 ...

  5. 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)

    题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...

  6. 「日常训练」COMMON 约数研究(HYSBZ-1968)

    题意与分析 感谢https://www.cnblogs.com/Leohh/p/7512960.html的题解.这题话说原来不在我的训练范围,正好有个同学问我,我就拿来做做.数学果然不是我擅长的啊,这 ...

  7. 「暑期训练」「基础DP」 Common Subsequence (POJ-1458)

    题意与分析 很简单:求最长公共子序列. 注意子序列与子串的差别:一个不连续一个连续.一份比较好的参考资料见:https://segmentfault.com/a/1190000002641054 状态 ...

  8. 「日常训练」 Mike and Fun (CFR305D2B)

    题意(CodeForces 548B) 每次对01矩阵中的一位取反,问每次操作后,单列中最长连续1的长度. 分析 非常非常简单,但是我当时训练的时候WA了四次...无力吐槽了,人间 不值得.jpg 代 ...

  9. 「日常训练」Common Subexpression Elimination(UVa-12219)

    今天做的题目就是抱佛脚2333 懂的都懂. 这条题目干了好几天,最后还是参考别人的代码敲出来了,但是自己独立思考了两天多,还是有收获的. 思路分析 做这条题我是先按照之前的那条题目(The SetSt ...

随机推荐

  1. c#写入配置文件(text)

    1.获取当前时间 System.DateTime currentTime = new System.DateTime(); currentTime = System.DateTime.Now; 写入配 ...

  2. 写一个简单的shellcode

    0x00 前言 漏洞利用中必不可缺的部分就是shellcode,不会编写shellcode和咸鱼有什么区别,跳出咸鱼第一步. 0x01 系统调用 通过系统调用execve函数返回shell C语言实现 ...

  3. axios简单了解

    简单介绍 axios是基于客户端的promise,面向浏览器和nodejs 特色 浏览器端发起XMLHttpRequests请求 node端发起http请求 支持Promise API 监听请求和返回 ...

  4. Several ports (8005, 8080, 8009) required by Tomcat v8.5 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To sta

    eclipse出现:Several ports (8005, 8080, 8009) required by Tomcat v8.5 Server at localhost are already i ...

  5. css的基础用法(下)

    定位: <html> <head> <meta charset="utf-8" /> <title>定位</title> ...

  6. Redis集群的安装和使用

  7. Question 20171115 String&&StringBuffer&&StringBuilder的区别与联系?

    Question 20171114 String&&StringBuffer&&StringBuilder的区别和联系 创建成功的String对象,其长度是固定的,内容 ...

  8. NEC css规范

    CSS规范 - 分类方法 SS文件的分类和引用顺序 通常,一个项目我们只引用一个CSS,但是对于较大的项目,我们需要把CSS文件进行分类. 我们按照CSS的性质和用途,将CSS文件分成“公共型样式”. ...

  9. Ajax之404,200等查询

    xmlhttp.readyState的值及解释: 0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()). 2:请求已发送,正在处理中(通常现在可 ...

  10. 【ospf-链路验证】

    根据项目需求搭建好拓扑图 配置RT1的环回口IP和G0/0/0IP地址 开启RT1接口ospf认证,配置接口密码为H3C 配置RT1的ospf区域 同理 开启RT2接口ospf认证,配置接口密码为g0 ...