E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
BZOJ1044
bzoj1044
[HAOI2008]木棍分割
Description有n根木棍,第i根木棍的长度为Li,n根木棍依次连结了一起,总共有n−1个连接处.现在允许你最多砍断m个连接处,砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长度最小,并且输出有多少种砍的方法使得总长度最大的一段长度最小.并将结果mod10007。。。n⩽50000,0⩽m⩽min(n−1,1000),0⩽Li⩽1000。Solution第一问是一个显然的二分贪心搞定
aziint
·
2020-08-19 08:05
题解
dp
【
BZOJ1044
】【HAOI2008】木棍分割 二分+动规
转载请注明出处:http://blog.csdn.net/vmurder/article/details/42921155第一问裸二分,第二问乱搞。f[i][j]表示用掉i次机会,到j时合法的方案数。代码:#include#include#include#include#defineN50100#definemod10007#defineinf0x3f3f3f3fusingnamespacestd
空灰冰魂
·
2020-08-19 08:18
二分答案
动态规划
bzoj1044
[HAOI2008]木棍分割(dp+二分答案+贪心)
首先我们二分答案+贪心搞出第一问的答案ans。然后dp求方案数,f[i][j]表示前i根分成j段的方案数我们显然有O(n2k)的dp。考虑优化,我们每一次转移实际上是一段区间的和,且这个区间单调右移,于是我们可以用一个指针来优化转移,复杂度O(nk)然后还要滚动数组。#include#include#include#includeusingnamespacestd;#definelllonglon
Icefox_zhx
·
2018-04-09 21:02
二分答案
bzoj
贪心
bzoj1044
: [HAOI2008]木棍分割(二分+单调队列)
题目传送门跑了3s那些200ms的是怎么跑出来的。。解法:第一问蛮简单。以前大概做过这种类型的题。。就二分一下最长的那一段的长度。然后O(n)判断一下。第二问不简单。。求方案诶。我以前拿60分的时候打的是Dp。。f[i][j]表示前i个分成j段切最长长度不大于第一问的答案的方案数。那么继承就为f[k][j-1],k为上一段的结尾且满足k到i这一段木棍长度小于第一问的答案。这样的话n*m的数组就要炸
Hanks_o
·
2017-10-12 08:03
Dp
二分
BZOJ
单调队列
【
BZOJ1044
】【HAOI2008】木棍分割
Description有n根木棍,第i根木棍的长度为Li,n根木棍依次连结了一起,总共有n-1个连接处.现在允许你最多砍断m个连接处,砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长度最小,并且输出有多少种砍的方法使得总长度最大的一段长度最小.并将结果mod10007。。。Input输入文件第一行有2个数n,m.接下来n行每行一个正整数Li,表示第i根木棍的长度.n#include#inc
dcx2001
·
2017-09-19 06:59
区间dp
二分答案
[
BZOJ1044
][HAOI2008]木棍分割(二分+贪心+dp)
题目描述传送门题目大意:有n根木棍,第i根木棍的长度为Li,n根木棍依次连结了一起,总共有n-1个连接处.现在允许你最多砍断m个连接处,砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长度最小,并且输出有多少种砍的方法使得总长度最大的一段长度最小.并将结果mod10007。题解第一问贪心+二分判定判定出了答案之后dp一下,f(i,j)表示砍了i刀,砍到第j个的方案数,单调地扫一遍预处理出第i
Clove_unique
·
2017-05-02 21:02
题解
dp
贪心
省选
二分
BZOJ1044
二分答案(第一问)+动态规划(第二问)
第一问:满足二分性质,直接二分答案算答案l第二问:F[i][j]表示经过i此操作将前j个木棍分解的方案数(并且在第j个位置分解)F[i][j]=SigmaF[i-1][p](满足sum[j]-sum[p]#include#include#definemod10007#defineN50050#defineFf[i&1]#defineGf[1-i&1]usingnamespacestd;inta[N
HbFS-
·
2016-07-19 14:18
【
BZOJ1044
】【tyvj3511】【codevs1870】木棍分割,二分答案+滚动数组+前缀和DP
传送门1传送门2传送门3写在前面:就我看来,这是一道不错的题思路:一.对于“求总长度最大的一段的长度最小值”这个问题,我们比较容易想到二分答案然后判断是否合法,显然这个是可以直接贪心搞的,记录前缀和,从1-n枚举,一旦这一段长度超过mid就砍,并重新计算长度,直到某一单木棍长度超过mid或砍得超过m次,返回非法,否则合法二.“有多少种砍的方法”这个问题着实让我纠结了很久,最后想出来一个三维DP,记
xym_CSDN
·
2016-03-09 19:00
【
bzoj1044
】木棍分割 二分+贪心&dp优化
对于第一问: 直接二分+贪心即可。贪心策略:能加进来的加进来,否则就从当前一根起重新再砍一截。对于第二问: (1)简单dp。设f[j][i]表示到第i个点,截取j个木棍且满足要求的方案数。同时,用sum[i]表示到i为止的木棍做长度,则 f[j][i]={f[j-1][k]}(0xthen begin num:=num+1;sum:=0; ifnum>mthenexit(false);
lych_cys
·
2015-11-27 21:00
动态规划
二分
贪心
BZOJ1044
[HAOI2008]木棍分割(二分答案/单调性优化dp+递推优化)
我要吐槽,因为我被这题坑了一个晚上看网上的博客都写了二分答案的解法,可偏偏我就用了斜率优化dp的分析思路“设f[i][j]:前i个数分j段的最小值……”竟然还分析出来了。。。无奈各种诸如s[i] 2)k #include #defineMOD10007 ints[50005],f[50005][2],cnt[50005][2],q[50005]; intmax(inta,intb) { if(a>
cjk_cjk
·
2015-06-27 02:00
dp
递推
二分答案
单调性优化
bzoj1044
木棍分割
第一问二分答案 第二问dp需优化空间和时间 坑了一天 才写出个坑爹坑爹程序 program hehe; const q=10007; var ans,s,min,max,n,m,i,j,k,l,t:longint; sum,h:array[0..50000] of longint; d:array[0..50000,0..1] of integer; func
·
2015-06-04 21:00
ZOJ
【
BZOJ1044
】【HAOI2008】木棍分割 二分+动规
转载请注明出处:http://blog.csdn.net/vmurder/article/details/42921155第一问裸二分,第二问乱搞。f[i][j]表示用掉i次机会,到j时合法的方案数。代码:#include #include #include #include #defineN50100 #definemod10007 #defineinf0x3f3f3f3f usingnames
Vmurder
·
2015-01-20 17:00
动态规划
二分答案
BZOJ1044
HAOI2008
木棍分割
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他