UVALive 6915 J - Leveling Ground
思路: 简单模拟下。从左向右扫描一次,求出挖出该区间空地的花费,并取个最小值即可。
至于怎么求区间内的高度最小值,就用线段树就好了。
#include <bits/stdc++.h>
#define PB push_back
#define MP make_pair
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
#define PI acos((double)-1)
#define E exp(double(1))
#define K 1000000+9
struct node1
{
int h,kind;
}mp[K];
int n,m;
char ss[K];
struct node
{
int mi;
int left,right;
}tree[*K];
int build(int id,int l,int r)
{
tree[id].left=l;tree[id].right=r;
if(l==r)
tree[id].mi=mp[l].h;
else
{
build(*id,l,(l+r)/);
build(*id+,(l+r)/+,r);
tree[id].mi=min(tree[*id].mi,tree[*id+].mi);
}
return ;
}
int query(int id,int l,int r)
{
if(l==tree[id].left && r==tree[id].right)
return tree[id].mi;
int mid=(tree[id].left+tree[id].right)>>;
int ret=0x3f3f3f3f;
if(r<=mid)
ret=min(ret,query(id*,l,r));
else if(l>=mid+)
ret=min(ret,query(id*+,l,r));
else
{
int a,b;
a=query(id<<,l,mid);
b=query((id<<)+,mid+,r);
return min(a,b);
}
return ret;
}
double get_ans(int x,int mi)
{
double ans=;
ans+=mp[x].h-mi;
ans+=mp[x].kind==?:0.5;
return ans;
}
int main(void)
{
int t,cs=;cin>>t;
while(t--)
{
double ans,sum=;
scanf("%d%d%s",&n,&m,&ss[]);
mp[].h=;
for(int i=,ls=;i<=n;i++)
{
mp[i].h=mp[i-].h+ls;
if(ss[i]=='_')ls=,mp[i].kind=;
else if(ss[i]=='/')ls=,mp[i].kind=;
else if(ss[i]=='\\')ls=,mp[i].kind=,mp[i].h--;
//printf("%d : %d\n",i,mp[i].h);
}
build(,,n);
for(int i=,mi=query(,,m);i<=m;i++)
sum+=get_ans(i,mi);
ans=sum;
for(int i=m+,ls=query(,,m);i<=n;i++)
{
int mi=query(,i-m+,i);
sum-=get_ans(i-m,ls);
sum+=get_ans(i,mi);
if(ls>mi)
sum+=(m-1.0)*(ls-mi);
else if(ls<mi)
sum-=(mi-ls)*(m-1.0);
ls=mi;
ans=min(sum,ans);
}
printf("Case #%d: %.1f\n",cs++,ans);
} return ;
}
UVALive 6915 J - Leveling Ground的更多相关文章
- UVALive 6915 Leveling Ground 倍增RMQ
Leveling Ground 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid ...
- Leveling Ground(数论,三分法,堆)
Leveling Ground(数论,三分法,堆) 给定n个数和a,b每次可以选择一段区间+a,-a,+b或-b,问最少操作几次能把他们都变成0.n<=1e5. 首先差分一下序列,问题就会变成了 ...
- BZOJ2800 [Poi2012]Leveling Ground 【扩展欧几里得 + 三分 + 堆】
题目链接 BZOJ2800 题解 区间加极难操作,差分之后可转化为两点一加一减 那么现在问题就将每个点暂时独立开来 先判定每个点是否被\((A,B)\)整除,否则无解 之后我们先将\(A,B\)化为互 ...
- POI2012题解
POI2012题解 这次的完整的\(17\)道题哟. [BZOJ2788][Poi2012]Festival 很显然可以差分约束建图.这里问的是变量最多有多少种不同的取值. 我们知道,在同一个强连通分 ...
- SSD: Single Shot MultiBox Detector
By Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexande ...
- 深度学习笔记(七)SSD 论文阅读笔记简化
一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...
- 深度学习笔记(七)SSD 论文阅读笔记
一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...
- H5实现魔方游戏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
随机推荐
- php 判断时间是否超过
$str="2014-10-11"; echo "".strtotime($str); echo "<br/>"; echo & ...
- .NET学习笔记(2)
--在子页面设置模板页的图片: ( this.Master.FindControl(“imgHead”) as Image ).ImageUrl = “upload/image1.jpg” ; 文件的 ...
- js json 单双引号互换
var _adrobj = JSON.stringify(address).replace(/\"/g,"'"); var _nstr = _adrdata.replac ...
- MS SqlServer 2008R2- Sql语句循环遍历生成百条随机数
Sql语句,循环遍历生成区间5~20的随机数语句如下: are @i int DECLARE @Result INT DECLARE @Upper INT DECLARE @Lower INT ) ) ...
- Access 是/否 字段
Microsoft Access 数据库引擎 SQL 数据类型包含由 Microsoft® Jet 数据库引擎定义的 13 种主要数据类型,以及若干可识别为这些数据类型的有效同义词. 其中,在工作中遇 ...
- spring boot打包会有.war.original文件的原因 (笔记)
今天使用spring boot 2.1.1.RELEASE版本搭建项目,虽然可以直接打包成可运行的jar包,但是由于公司准备采用docker容器来管理项目,所以需要把jar包变成war包,并且war包 ...
- JZOJ.3769【NOI2015模拟8.14】A+B
Description 对于每个数字x,我们总可以把它表示成一些斐波拉切数字之和,比如8 = 5 + 3, 而22 = 21 + 1,因此我们可以写成 x = a1 * Fib1 + a2 * F ...
- c# + Sql server 事务处理
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便 ...
- MongoDB-1:安装和配置
一.简介 MongoDB一种非关系型数据库(NoSql),是一种强大.灵活.可扩展的数据存储方式,因为MongoDB是文档模型,自由灵活很高,可以让你在开发过程中畅顺无比,对于大数据量.高并发.弱事务 ...
- django博客项目8:文章详情页
首页展示的是所有文章的列表,当用户看到感兴趣的文章时,他点击文章的标题或者继续阅读的按钮,应该跳转到文章的详情页面来阅读文章的详细内容.现在让我们来开发博客的详情页面,有了前面的基础,开发流程都是一样 ...