fzu 2171 防守阵地 II
Accept: 31 Submit: 112
Time Limit: 3000 mSec Memory Limit : 32768 KB
Problem Description
部队中总共有N个士兵,每个士兵有各自的能力指数Xi,在一次演练中,指挥部确定了M个需要防守的地点,指挥部将选择M个士兵依次进入指定地点进行防守任务,获得的参考指数即为M个士兵的能力之和。随着时间的推移,指挥部将下达Q个指令来替换M个进行防守的士兵们,每个参加完防守任务的士兵由于疲惫等原因能力指数将下降1。现在士兵们排成一排,请你计算出每次进行防守的士兵的参考指数。
Input
输入包含多组数据。
输入第一行有两个整数N,M,Q(1<=N<=100000,1<=M<=1000,1<=Q<=100000),第二行N个整数表示每个士兵对应的能力指数Xi(1<=Xi<=1000)。
接下来Q行,每行一个整数X,表示在原始队列中以X为起始的M个士兵替换之前的士兵进行防守。(1<=X<=N-M+1)
对于30%的数据1<=M,N,Q<=1000。
Output
输出Q行,每行一个整数,为每次指令执行之后进行防守的士兵参考指数。
Sample Input
Sample Output
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<cstdlib>
using namespace std; int date[];
struct node
{
int l,r;
int color;
int len;
int sum;
}f[*];
void build(int l,int r,int n)
{
int mid=(l+r)/;
f[n].l=l;
f[n].r=r;
f[n].color=;
f[n].len=f[n].r-f[n].l+;
if(l==r){
f[n].sum=date[l];
return;
}
build(l,mid,n*);
build(mid+,r,n*+);
f[n].sum=f[n*].sum+f[n*+].sum;
}
void pudown(int n)
{
f[n*].color+=f[n].color;
f[n*+].color+=f[n].color;
f[n].color=; if(f[n*].l==f[n*].r && f[n*].color>)
{
f[n*].sum-=f[n*].color;
f[n*].color=;
}
if(f[n*+].l==f[n*+].r && f[n*+].color>)
{
f[n*+].sum-=f[n*+].color;
f[n*+].color=;
}
}
int query(int l,int r,int n)
{
int mid=(f[n].l+f[n].r)/;
int tmp;
if(f[n].l==l && f[n].r==r)
{
return f[n].sum-f[n].len*f[n].color;
}
if(f[n].color!=)
pudown(n);
if(mid>=r)
tmp = query(l,r,n*);
else if(mid<l)
tmp = query(l,r,n*+);
else{
tmp = query(l,mid,n*)+query(mid+,r,n*+);
}
return tmp;
}
void update(int l,int r,int n)
{
int mid=(f[n].l+f[n].r)/;
if(f[n].l==l && f[n].r==r)
{
f[n].color++;
return;
}
if(mid>=r)
update(l,r,n*);
else if(mid<l)
update(l,r,n*+);
else
{
update(l,mid,n*);
update(mid+,r,n*+);
}
f[n].sum=f[n*].sum-f[n*].color*f[n*].len + f[n*+].sum-f[n*+].len*f[n*+].color;
}
int main()
{
int n,m,q,k,i,l,r;
while(scanf("%d%d%d",&n,&m,&q)>)
{
for(i=;i<=n;i++)
scanf("%d",&date[i]);
build(,n,);
while(q--)
{
scanf("%d",&l);
r=l+m-;
k=query(l,r,);
update(l,r,);
printf("%d\n",k);
}
}
return ;
}
fzu 2171 防守阵地 II的更多相关文章
- FZU Problem 2171 防守阵地 II (线段树区间更新模板题)
http://acm.fzu.edu.cn/problem.php?pid=2171 成段增减,区间求和.add累加更新的次数. #include <iostream> #include ...
- FZU 2168 防守阵地 I(公式推导)(经典)(中等)
Problem 2168 防守阵地 I Accept: 377 Submit: 1280 Time Limit: 3000 mSec Memory Limit : 32768 KB Pr ...
- FZU 2168 防守阵地 I
Problem Description 部队中共有N个士兵,每个士兵有各自的能力指数Xi,在一次演练中,指挥部确定了M个需要防守的地点,按重要程度从低到高排序,依次以数字1到M标注每个地点的重要程度, ...
- FZU2171:防守阵地 II(线段树)
Problem Description 部队中总共同拥有N个士兵,每一个士兵有各自的能力指数Xi.在一次演练中,指挥部确定了M个须要防守的地点,指挥部将选择M个士兵依次进入指定地点进行防守任务.获得 ...
- FZU 2168 防守阵地 I(前n项和的前n项和)
这是一道很容易超时的题,我超了n次了,后来队友提示我才想到,bigsum ! ! ! !就是前n项和的前n项和 #include<iostream> #include<cstdio& ...
- 福州大学 Problem 2168 防守阵地 I
http://acm.fzu.edu.cn/problem.php?pid=2168 最重要的是 dp[k]=dp[k-1]-ans[k-1]+x[i]*m; ans[k-1]是m个数求和. Pro ...
- FZU2168——防守阵地 I——————【找规律或前缀和】
防守阵地 I Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- FZU_Problem 2168 防守阵地 I
Problem 2168 防守阵地 I Accept: 128 Submit: 392 Time Limit: 3000 mSec Memory Limit : 32768 KB Problem De ...
- FZU Problem 2168 防守阵地 I
http://acm.fzu.edu.cn/problem.php?pid=2168 题目大意: 给定n个数和m,要求从n个数中选择连续的m个,使得a[i]*1+a[i+1]*2+--a[i+m]*m ...
随机推荐
- 树形DP(Rebuilding Roads poj1947)
题意:给出一颗树,求要形成一颗元素个数是p的子树,最少要去掉多少边 #include"stdio.h" #include"string.h" #include& ...
- [reprint]useful linux commands
linux一说都是搞开发玩的,敲敲键盘就能完成所有的工作.其实你也可以这么玩,玩游戏的除外哦. 那我们就来侃侃如何玩,linux是命令的天下,高级的命令那是相当的多,但是我们正真用到的也就那么几个看你 ...
- Regist
using (RegistryKey key = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\Current ...
- /Users/alamps/AndroidStudioProjects/Demo10ScrollView
.define xml <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" andr ...
- fackbook的Fresco的Image Pipeline以及自身的缓存机制
fackbook的Fresco的Image Pipeline以及自身的缓存机制 配置之前.首先需要知道两点:一点是Bitmap缓存.一点是如果你仅仅需要一个缓存,那么不调用setSmallImageD ...
- 前端开发与Seo基础
网页代码优化 1:<title>标题:强调重点,重点关键词放在前面,每个页面的title尽量不相同 2:<meta keywords>关键词:列举出几个重要关键词, ...
- bootstrap, boosting, bagging 几种方法的联系
http://blog.csdn.net/jlei_apple/article/details/8168856 这两天在看关于boosting算法时,看到一篇不错的文章讲bootstrap, jack ...
- 深入了解webservice_概念总结
最近公司需要对java web端的第三方接口进行测试,使用WebService+TestNG实现,TsetNg是常用的自动化测试框架,这就不介绍了. WebService是一种跨编程语言和跨操作系统平 ...
- 《zw版·Halcon-delphi系列原创教程》halconxlib控件列表
<zw版·Halcon-delphi系列原创教程>halconxlib控件列表 Halcon v11.01版,com控件,安装后,共有75个控件, 不过最重要的控件,只有两个,T ...
- Sql Server Analysis Service 处理时找到重复的属性键、找不到属性键错误(转载)
这是两个非常常见的SSAS处理异常,网上也能找到很多文章讲解决办法,但很少见关于异常原因的分析,先来看看第一个" OLAP 存储引擎中存在错误: 处理时找到重复的属性键",一个维度 ...