8-10 Coping Books uva714
题意:把一个包含m个正整数的序列划分为k个 1<=k<=m<=500的非空连续子序列 使得每个正整数恰好属于一个序列 设第i个序列的各个数之和为 Si 你的任务是让所有的 Si的最大值尽量小 输出用‘/’划分好的序列
输出时 如果有多解 s1尽量小 如果s1相同 s2尽量小。。。。。
求最大值的最小值
可以采用ida*
但是ida*毕竟是枚举 效率远不如二分答案来的快
之前有一题最大值的最小值也是用二分答案来写很方便
最好在输入数据部分 统计L和R 这题R为给出序列的和 L为最大元素
切记 sum L R 用long long
这题难在输出部分
我的思路和LRJ的一样 反向做一个贪心 最后面的尽量取多 前面就会少
但是出现了 后面划分的太开了 导致剩余括号太多了的问题 可能前面几个子序列都为空了。
LRJ加了一条代码很简单的解决了这个问题
并且 能不递归就不递归方便!
#include<bits/stdc++.h>
using namespace std;
#define N 1001
int n,k;
int a[N];
int ok(int x)
{ int cnt=;
long long sum=;
for(int i=;i<=n;i++)
{
if(sum+a[i]<=x)
sum+=a[i];
else
{
cnt++;
sum=a[i];
if(cnt>k)return ;
}
}
if(sum!=)cnt++;
if(cnt<=k)return ;
return ;
} void show(long long x)
{
long long sum=;
int remain=k;
int last[N];
memset(last,,sizeof last);
for(int i=n;i>=;i--)
{
if(sum+a[i]>x || i<remain )
{
last[i]=;sum=a[i];remain--;
}
else sum+=a[i];
}
for(int i=;i<n;i++)
{
printf("%d ",a[i]);
if(last[i])printf("/ ");
}
printf("%d\n",a[n]);
} int main()
{
int cas;cin>>cas;
while(cas--)
{
cin>>n>>k;
long long tot=;
int maxx=-;
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
tot+=a[i];
maxx=max(maxx,a[i]);
}
long long L=maxx,R=tot;
while(L<R)
{
int mid=(L+R)/;
if(!ok(mid) )L=mid+;
else R=mid;
}
show(L);
}
}
8-10 Coping Books uva714的更多相关文章
- 高效算法——B 抄书 copying books,uva714
Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Description ...
- SqlServer 分页查询
1.not in方法 select top 10 from books where id not in (select top 30 id from books) 2.row_number()函数 ...
- 常用的CSS定位,XPath定位和JPath定位
CSS定位 举例 描述 div#menu id为menu的div元素 div.action-btn.ok-btn class为action-btn和ok-btn的div元素 table#emailLi ...
- oracle基础语法大全
-----创建序列create sequence book_idINCREMENT BY 1 -- 每次加几个 START WITH 001 -- 从1开始计数 NOMAXVALUE -- 不设置最大 ...
- 使用jsonpath解析json内容
JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容.下面我把官网介绍的每个表达式用代码实现,可以更直观的知道该怎么用它. 一.首先需要 ...
- node-odata: 基于 NodeJS 的 REST 框架
该开源项目目前已被 OData 官网 (odata.org)收录 关于 node-odata node-odata 可以让你轻松创建 REST API, 并能使用 OData 协议的格式进行数据的查询 ...
- 使用 node-odata 轻松创建基于 OData 协议的 RESTful API
前言 OData, 相信身为.NET程序员应该不为陌生, 对于他的实现, 之前也有童鞋进行过介绍(见:这里1,这里2). 微软的WCF Data Service即采用的该协议来进行通信, ASP.NE ...
- iOS开发——实用篇&KVO与KVC详解
KVO与KVC详解 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC ...
- JsonPath详解
JsonPath is to JSON what XPATH is to XML, a simple way to extract parts of a given document. JsonPat ...
随机推荐
- JAVA-JSP隐式对象
JSP隐式对象 在本章中,我们将讨论和学习JSP中的隐式对象.这些对象是JSP容器为每个页面中的开发人员提供的Java对象,开发人员可以直接调用它们而不用显式地声明它们再调用. JSP隐式对象也称为预 ...
- Dubbo学习笔记1:使用Zookeeper搭建服务治理中心
Zookeeper是Apache Hadoop的子项目,是一个树形的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,推荐生成环境使用. , 下面结合上图介绍Zookeeper在 ...
- 详解tomcat连接数和线程数
前言 在使用tomcat时,经常会遇到连接数.线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector). 在前面的文章 详解Tomcat配置文件server.xm ...
- PHP 神盾解密工具
前两天分析了神盾的解密过程所用到的知识点,昨晚我把工具整理了下,顺便用神盾加密了.这都是昨天说好的,下面看下调用方法吧. 先下载 decryption.zip然后解压放到一个文件夹里,把你要解密的文件 ...
- [php]php总结(2)
18.数组$arr[null] = 20; //array([]=>20)$arr[] = 20;//默认为下一个下标赋值unset()可以删除数组元素,但不会重建索引array_values( ...
- 天梯赛 L2-011. (二叉树) 玩转二叉树
题目链接 题目描述 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格 ...
- php中路径斜杠的应用,兼容win与linux
更多内容推荐微信公众号,欢迎关注: PHP中斜杠的运用 兼容win和linux 使用常量:DIRECTORY_SEPARATOR如:"www".DIRECTORY_SEPARATO ...
- TCP三次握手与四次挥手过程
TCP连接的建立(三次握手) 首先,客户端与服务器均处于未连接状态,并且是客户端主动向服务器请求建立连接: 客户端将报文段中的SYN=1(同步位),并选择一个seq=x,(即该请求报文的序号为x) ...
- scala tuple中的syntactic sugar
List[Tuple2[String, Int]] // Base List[(String, Int)] // Syntactic sugar List[Tuple3[String, Float, ...
- Python_oldboy_自动化运维之路(八)
本节内容: 列表生成式,迭代器,生成器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器,生成器 1.列表生成式 #[列表生成] #1.列 ...