UVALive 6915 J - Leveling Ground
2024-08-27 03:42:23
思路: 简单模拟下。从左向右扫描一次,求出挖出该区间空地的花费,并取个最小值即可。
至于怎么求区间内的高度最小值,就用线段树就好了。
#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 ;
}
最新文章
- Mysql的基础使用之SQL原生语句的使用:表的 创建 删除 修改 (一)
- Javascript将构造函数扩展为简单工厂
- robots.txt的介绍和写作
- Hive 实战(1)--hive数据导入/导出基础
- 操作iframe
- selenium python (四)键盘事件
- zoj3820 Building Fire Stations 树的中心
- 网站性能扩展案例:每天30-50亿请求,300K QPS是如何炼成的
- PowerDesigner提示This data item is already used in a primary identifier.的处理
- PHP学习笔记十四【面向对象】
- cocos2d-x中的尺寸之三
- poj 3176 Cow Bowling(区间dp)
- Nginx 訪问日志增长暴增出现尖刀的具体分析
- CSS中image和text显示高度不一致的问题
- C语言之输出空心棱形图案
- FastDFS 学习笔记
- 【开源】Netty轻松实现聊天室,附带数据记录,聊天历史
- windows创建定时任务执行python脚本
- Asp.net Image控件显示Bitmap生成图像
- DAY04、流程控制if、while、for