UVALive 6190 Beautiful Spacing (2012 Tokyo regional)
题意是给一个文本排版,求在满足题目所给要求的条件下,最长连续空格最小是多少.
trick: 贪心地模拟是错的,至少无法证明正确性.
正解应该是二分答案+验证.
比较容易想到的验证方法是O(n^2)的.
// dp[i] 第i个单词能否为结尾
dp[] = true;
for ( i= ; i<=n ; i++ )
if (dp[i-])
{
for ( j=i+ ; j<=n ; j++ )
if (can(i,j)) dp[j] = true;
}
但是第二层循环可以优化: 仔细分析可以发现如果当前的 can(i,j) = false , 那么can(i+1,j)也为false;
所以用一个k记录当前最大的dp[]为true的下标,下次从k拓展就行了.
llong cnt[maxn];
int n,w,x[maxn]; void input()
{
int i;
for ( i= ; i<=n ; i++ ) scanf("%d",&x[i]);
for ( i= ; i<=n ; i++ ) cnt[i] = cnt[i-]+x[i];
} bool dp[maxn]; bool check(int d)
{
int i,j,k;
llong sum;
memset(dp,,sizeof(dp));
dp[] = true;
for ( k=,i= ; i<=n ; i++ )
if (dp[i-])
{
for ( j=k ; j<=n ; j++ )
{
if (j<=i) continue;
sum = cnt[j]-cnt[i-]+j-i;
if (sum>w) break;
int space = w - sum;
int D = space/(j-i) + (space%(j-i)>) + ;
if (D<=d)
{
dp[j] = true;
k = j;
}
}
}
sum = cnt[n]-cnt[k]+n-k-;
if (sum<=w) return true;
else return false;
} void solv()
{
int l,r;
l = ;
r = (w-)/+;
while (l<r)
{
if (check(mid)) r=mid;
else l=mid+;
}
printf("%d\n",l);
} int main()
{
freopen("test.txt","r",stdin);
while (scanf("%d%d",&w,&n)!=EOF)
{
if (n+w==)break;
input();
solv();
}
return ;
}
UVALive 6190 Beautiful Spacing (2012 Tokyo regional)的更多相关文章
- uva live 6190 Beautiful Spacing (二分法+dp试 基于优化的独特性质)
I - Beautiful Spacing Time Limit:8000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu ...
- 【BZOJ-4692】Beautiful Spacing 二分答案 + 乱搞(DP?)
4692: Beautiful Spacing Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 46 Solved: 21[Submit][Statu ...
- 2014-2015 ACM-ICPC, Asia Tokyo Regional Contest
2014-2015 ACM-ICPC, Asia Tokyo Regional Contest A B C D E F G H I J K O O O O O O A - Bit ...
- HDU 4474 Yet Another Multiple Problem【2012成都regional K题】 【BFS+一个判断技巧】
Yet Another Multiple Problem Time Limit: 40000/20000 MS (Java/Others) Memory Limit: 65536/65536 K ...
- bzoj4692: Beautiful Spacing
先二分答案后dp 设\(su[n]\)为\(\sum_{1}^{n}xi[i]\) 设\(f[n]\)为1时表示第n个单次能做某一行的结尾,且之前的空格满足二分出来的答案. 考虑怎样的\(f[i]\) ...
- [Regionals 2012 :: Asia - Tokyo ]
链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=56 ...
- HDU 4465 - Candy(概率与数学优化)
2012成都Regional的B题,花了一个小时推出了式子,但是搞了好久发现都控制不了精度,后来突然想到组合数可以用log优化,改了之后就AC了 比较水的概率题 #include <stdio. ...
- HDU 4291 A Short problem(2012 ACM/ICPC Asia Regional Chengdu Online)
HDU 4291 A Short problem(2012 ACM/ICPC Asia Regional Chengdu Online) 题目链接http://acm.hdu.edu.cn/showp ...
- zoj 3659 Conquer a New Region The 2012 ACM-ICPC Asia Changchun Regional Contest
Conquer a New Region Time Limit: 5 Seconds Memory Limit: 32768 KB The wheel of the history roll ...
随机推荐
- c语言通过时间种子产生随机数并选出最大值以及下标
1 #include <stdio.h> #include <stdlib.h> #include <time.h> //2016 10 10 void main( ...
- day52
今天依旧 阅读2篇的整理 数学试卷一套 综合练习计算 政治视频一个 范帅长难句一个 翻译两句 作文大小各一个 linux基础 今天折腾最久的应该是linux了 自己重新手动安装了一下 遇到的不少问题在 ...
- poj 1466 Girls and Boys(二分匹配之最大独立集)
Description In the second year of the university somebody started a study on the romantic relations ...
- Adroid APPIUM实例步骤
1.下载eclipse 2.安装java 配置环境变量 3.eclipse 安装adt android development tools 4.android sdk manager 安装tool ...
- swift 弹窗
直接拷贝使用即可 let alert = UIAlertController(title:nil,message:"输入不能为空",preferredStyle: .Alert) ...
- UVA 825 Walking on the Safe Side(记忆化搜索)
Walking on the Safe Side Square City is a very easy place for people to walk around. The two-way ...
- Qt Label show Images
第一.我们需要让QLabel的大小不因为图片的大小变化而变化,可以用下面语句实现 ui->imageLabel->setSizePolicy(QSizePolicy::Ignored, Q ...
- sql server 2008 中的架构(schame)理解
机构是属于数据库里面的.在一个数据库中,每一张表都属于一个架构,架构就像是命名空间,把数据库中的表分成不同的组,一个组就是一个命名空间,方便管理
- Python进阶之路---1.3python环境搭建
python环境安装 windows python环境安装 下载安装包 https://www.python.org/downloads/ 安装并指定安装目录 C:\python2 ...
- UIApplication的作用
1.设置app图标右上角的数字2.设置状态栏的属性(样式.是否要显示)3.打开某个链接\发短信\打电话4.keyWindow : 访问程序的主窗口(一个程序只能有一个主窗口)5.windows : 访 ...