题意:把一个包含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的更多相关文章

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

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

  2. SqlServer 分页查询

    1.not in方法 select top 10 from books where id not in (select top 30 id from books)   2.row_number()函数 ...

  3. 常用的CSS定位,XPath定位和JPath定位

    CSS定位 举例 描述 div#menu id为menu的div元素 div.action-btn.ok-btn class为action-btn和ok-btn的div元素 table#emailLi ...

  4. oracle基础语法大全

    -----创建序列create sequence book_idINCREMENT BY 1 -- 每次加几个 START WITH 001 -- 从1开始计数 NOMAXVALUE -- 不设置最大 ...

  5. 使用jsonpath解析json内容

    JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容.下面我把官网介绍的每个表达式用代码实现,可以更直观的知道该怎么用它. 一.首先需要 ...

  6. node-odata: 基于 NodeJS 的 REST 框架

    该开源项目目前已被 OData 官网 (odata.org)收录 关于 node-odata node-odata 可以让你轻松创建 REST API, 并能使用 OData 协议的格式进行数据的查询 ...

  7. 使用 node-odata 轻松创建基于 OData 协议的 RESTful API

    前言 OData, 相信身为.NET程序员应该不为陌生, 对于他的实现, 之前也有童鞋进行过介绍(见:这里1,这里2). 微软的WCF Data Service即采用的该协议来进行通信, ASP.NE ...

  8. iOS开发——实用篇&KVO与KVC详解

    KVO与KVC详解 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC ...

  9. JsonPath详解

    JsonPath is to JSON what XPATH is to XML, a simple way to extract parts of a given document. JsonPat ...

随机推荐

  1. jmeter乱码问题

    JMeter 的版本由 2.13 升级到了 3.0 发现之前接口脚本 POST 请求主体中的中文无法正确显示,现象如下图所示:

  2. JavaScript 生成n位随机数

    function RndNum(n){ var rnd=""; for(var i=0;i<n;i++) rnd+=Math.floor(Math.random()*10); ...

  3. ConcurrentHashMap 产生NullPointerException

    今天测试在发给我一段报错日志后,根据日志定位到从ConcurrentHashMap 的缓存中get的时候,ConcurrentHashMap的底层抛出了空指针,当时感觉很奇怪为什么在get的时候产生空 ...

  4. JAVA多线程提高十四: 面试题

    前面针对多线程相关知识点进行了学习,那么我们来来看看常见的面试题: 1. 空中网面试题1 package com.kongzhongwang.interview; import java.util.c ...

  5. php设计模式-工厂设计模式

    概念: 工厂设计模式提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类步骤. 很多高级模式都是依赖于工厂模式.

  6. JedisCluster实践

    1. Spring中运用JedisCluster http://blog.csdn.net/u010739551/article/details/52438101[spring集成 JedisClus ...

  7. centos无法通过ssh连接的解决

    系统环境是centos7,虚拟机环境下的.在使用ssh工具连接虚拟机的时候发现连接不上,用的是root 先检查openssh-server是否安装: yum list installed | grep ...

  8. Linux下压缩文件-1

    tar负责打包,gzip负责压缩 tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的 ...

  9. SVN 使用笔记

    SVN中检出 和 导出 的区别 检出得到的文件夹中,是受SVN客户端控制的,对其进行文件或文件夹的增删改操作都会被SVN客户端识别出来,对其可以进行update.commit操作.其中含有.svn隐藏 ...

  10. <转>Android APP字体大小,不随系统的字体大小变化而变化的方法

    从android4.0起系统设置的”显示“提供设置字体大小的选项.这个设置直接会影响到所有sp为单位的字体适配,所以很多app在设置了系统字体后瞬间变得面目全非.下面是解决方案 Resources r ...