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 ...
随机推荐
- drop,delete,truncate区别
drop,delete,truncate区别 drop-->删除少量信息 eg:drop table 表名: delete-->删除某些数据 eg:delete from 表名: ...
- 使用git做服务器端代码的部署
传统部署方案 windows 远程桌面 FTP/SFTP 登录服务器pull github代码 Phing(PHP专业部署工具) git 自动部署流程图 服务器端准 ...
- mysql报错 "code":"08S01","msg":"SQLSTATE
2016-04-25 09:22 97人阅读 评论(0) 收藏 举报 分类: Magento(6) 今天在批量伪造测试数据时,MySQL收到下面异常:ERROR 1153 (08S01): Got a ...
- EBS常用小常识(转)
值集: 1.编辑信息:取上一个值集所选的数据.(值集关联) WHERE BANK_ACCOUNT_ID = :$FLEX$.CE_BANK_ACCOUNT_NUM_NAME ORDER BY STAT ...
- 夺命雷公狗ThinkPHP项目之----企业网站4之数据库连接
我们众所周知,我们在开发的时候网站是需要连接上我们的数据库的,毕竟数据库是网站的最核心之一嘛,废话不多说直接开干.... 我们先找到:config.php文件对她进行修改,因为我们网站前后台都用到数据 ...
- 《zw版·delphi与halcon系列原创教程》hello,zw
<zw版·delphi与halcon系列原创教程>hello,zw 按惯例,第一个程序是‘hello’ 毕竟,Halcon是专业的图像库,所以我们就不用纯文本版的,来一个专业版.Halco ...
- 如何通过类找到对应的jar包
ctrl+shift+T 然后输入对应类
- 原生js轮播以及setTimeout和setInterval的理解
下面这个代码是从一个群下载下来的,为了帮助自己理解和学习现在贴出来,与初学者共勉. <!DOCTYPE html> <html> <head> <meta c ...
- mysql字段varchar区分大小写utf8_bin、utf8_general_ci编码区别
mysql字段varchar区分大小写utf8_bin.utf8_general_ci编码区别 在mysql中存在着各种utf8编码格式:utf8_bin将字符串中的每一个字符用二进制数据存储,区分大 ...
- laravel运行url404错误
url输入正确的根目录时老是提示404错误,竟然不知道为什么,稀里糊涂的,最后发现输入url时后面默认会加上一个\,一定记得把\去掉!!!!