UESTC_秋实大哥与花 2015 UESTC Training for Data StructuresProblem B

B - 秋实大哥与花

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit Status

秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前。

所以秋实大哥精心照料了很多花朵。现在所有的花朵排成了一行,每朵花有一个愉悦值。

秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉悦值都会增加一个相同的值v(v可能为负)。

同时他想知道每次他唱完歌后这一段连续的花朵的愉悦值总和是多少。

Input

第一行有一个整数n,表示花朵的总数目。

第二行包含n个整数ai,表示第i朵花初始的愉悦值。

第三行包含一个整数m,表示秋实大哥唱了m天的歌。

接下来m行,每行包含三个整数l r v,表示秋实大哥对着[l,r]这个区间内的花朵歌唱,每朵花的愉悦值增加了v

1nmai|v|1000001lrn

Output

输出共m行,第i行表示秋实大哥完成第i天的歌唱后,那一段花朵的愉悦值总和。

Sample input and output

Sample InputSample Output
3
0 0 0
3
1 2 1
1 2 -1
1 3 1
2
0
3

解题报告:

没啥好说的,线段树模板基础题。。唯一需要注意的就是long long了.

当然我是使用的树状数组:

题目中操作属于区间更新 - 区间查询<查询点也是区间嘛>类型,可使用树状数组来实现.

令C[i]为从1至i号花的共同更新之和.

首先考虑更新,add[l,r,v] → c[r] += v , c[l-1] -=v;

 Sum[x] = 从 1 至 x 号花的value之和.

  Sum[x] = c[1]*1 + c[2]*2 + c[3] * 3 ..... + c[x] * x + (c[x+1] + .... C[n] ) *x;

          = (segema)f(x) + (segema)g(x) * x;

          = 两个树状数组,一个维护 c[i]*i ,一个维护c[i]

之后考虑区间查询:

 Query(l , r)

 = sum[r] - sum[l-1]

 

 1 #include <iostream>
 2 #include <cstring>
 3 typedef long long ll;
 4 using namespace std;
 5 const int maxn = 1e5 + 50;
 6 ll n;
 7 ll f[maxn],g[maxn];
 8 
 9 
10 inline ll lowbit(ll idx)
11 {
12     return idx & (-idx);
13 }
14 
15 void updataf(ll idx,ll res)
16 {
17     if (!idx)
18      return;
19     while(idx <= n)
20      {
21          f[idx] += res;
22          idx += lowbit(idx);
23      }
24 }
25 
26 void updatag(ll idx,ll res)
27 {
28     if (!idx)
29      return;
30     while(idx <= n)
31      {
32          g[idx] += res;
33          idx += lowbit(idx);
34      }
35 }
36 
37 ll sumf(ll idx)
38 {
39     ll res = 0;
40     while(idx > 0)
41      {
42          res += f[idx];
43          idx -= lowbit(idx);
44      }
45     return res;
46 }
47 
48 ll sumg(ll idx)
49 {
50     ll res = 0;
51     while(idx > 0)
52      {
53          res += g[idx];
54          idx -= lowbit(idx);
55      }
56     return res;
57 }
58 
59 int main(int argc,char *argv[])
60 {
61   ll m;
62   scanf("%lld%lld",&n,&m);
63   memset(f,0,sizeof(f));
64   memset(g,0,sizeof(g));
65   for(int j = 1 ; j <= n ; ++ j)
66    {
67          ll v;
68          scanf("%lld",&v);
69          updataf(j,v*j);
70          updataf(j-1,-v*(j-1));
71          updatag(j,v);
72          updatag(j-1,-v);
73    }
74   while(m--)
75    {
76          ll i,j,v;
77          scanf("%lld%lld%lld",&i,&j,&v);
78          updataf(j,v*j);
79          updataf(i-1,-v*(i-1));
80          updatag(j,v);
81          updatag(i-1,-v);
82          i--;
83          ll res1 = sumf(i) + i*(sumg(n)-sumg(i));
84       ll res2 = sumf(j) + j*(sumg(n)-sumg(j));
85          printf("%lld\n",res2 - res1);
86    }
87   return 0;
88 }

 

 

转载于:https://www.cnblogs.com/Xiper/p/4470205.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java的三大特性,封装,继承,多态

封装 Java代码 /** * 所谓封装&#xff0c;就是将对象具有的成员变量和成员函数包装和隐藏起来&#xff0c;让外界无法直接使用&#xff0c; * 被封装的成员只能通过某些特定的方式才能访问。 * 实现封装有两个步骤&#xff1a; * 1、将不能暴露的成员隐藏起来&#x…

银行家算法实验报告c语言版,银行家算法实验报告C语言版.doc

《操作系统》课程综合性实验报告姓名&#xff1a; 学号&#xff1a; 2016 年 11 月 20 日实验题目进程调度算法程序设计一、实验目的通过对安全性算法和银行家算法的模拟&#xff0c;进一步理解资源分配的基本概念&#xff0c;加深对资源申请&#xff0c;资源分配(银行家算法)以…

GetModuleHandle(NULL)获取当前DLL模块基址?

做一项目想在DLL内部代码实现获取本DLL的模块基址&#xff0c;而且不知道本DLL名称 最简单的方法是想到GetModuleHandle(NULL)&#xff0c;是否可以呢? 参看http://blog.csdn.net/guzhou_diaoke/article/details/8826558到的答案是否 自己尝试了一下: DLL代码(testDll): BOOL …

DataTable是否存在某个列的判断

使用 DataTable.Columns.Contains方法可以判断某个列名是否存在于某个DataTable中 //添加模拟数据 DataTable t new DataTable(); DataColumn col new DataColumn("aaa"); t.Columns.Add(col); col new DataColumn("bbb"); t.Columns.Add(col); col ne…

【评分】第三次作业-团队展示

【评分】第三次作业-团队展示 总结 【2017-10-10】更新&#xff1a; 分数映射至 [1,2] 分 【注意】&#xff1a; 为了保护大家隐私&#xff0c;以后发表博客&#xff1a; 涉及到学号时&#xff0c;仅提供后三位涉及到姓名时&#xff0c;仅提供名&#xff08;省略姓&#xff09;…

c语言变量为什么要定义,C语言为什么要规定对所用到的变量要“先定义,后使用”...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼int a10;以上一句话对变量a进行了声明&#xff0c;定义以及初始化extern int a;以上一句话仅仅对变量a进行了声明&#xff0c;将a的链接属性设置为externalint *p;以上定义了一个指针int a10;int *p;p&a;以上为指针变量进行了赋…

iOS 开发--github的demo

令人惊讶的是&#xff0c;YYText 虽然代码量很大&#xff08;超过一万行&#xff09;&#xff0c;但它只是 ibireme 的作品之一。ibireme 利用业余时间完成了 YYKit 工具库&#xff0c;包括&#xff1a; YYModel — 高性能的 iOS JSON 模型框架。 YYCache — 高性能的 iOS 缓存…

RabbitMQ快速安装配置指南

RabbitMQ快速安装配置指南 官网的安装教程由于需要解释原理很多废话&#xff0c;这里总结一下在CentOS7环境下的安装配置过程。如需理解原理&#xff0c;请看官网原文的安装指南或翻译1. 安装RabbitMQ server ## 安装epel源 yum install -y epel-release## 安装Erlang yum inst…

[转]基于Starling移动项目开发准备工作

最近自己趁业余时间做的flash小游戏已经开发得差不多了&#xff0c;准备再完善下ui及数值后&#xff0c;投放到国外flash游戏站。期间也萌生想法&#xff0c;想把游戏拓展到手机平台。这两天尝试了下&#xff0c;除去要接入ane接口的工作&#xff0c;小游戏本身不用做任何改动就…

c语言float输出分数,c语言同一题目求解结果用float和int输出值差1.

c语言同一题目求解结果用float和int输出值差1.答案:3 信息版本&#xff1a;手机版解决时间 2018-12-08 22:35已解决2018-12-08 05:38c语言同一题目求解结果用float和int输出值差1.最佳答案2018-12-08 06:01试试这样就好了#include main(){long i;float j,j1,j2,j4,j6,j10;j110…

《构建之法》阅读笔记02

今天我阅读了《构建之法》4-6章。有许多的感悟。 以前编程序总喜欢乱命名变量&#xff0c;觉得自己看的懂就行了。但读完构建之法第四章。我知道了程序是给别人看的&#xff0c;然后那只是程序比较简单而已。如果一个程序过于庞大&#xff0c;而变量的命名有没有实际的意义&…

2017-10-03 前端日报

2017-10-03 前端日报 精选 你需要知道的几类npm依赖包管理看Zepto如何实现增删改查DOM把cookie聊清楚6 Pro Tips from React DevelopersMulti-user experiences with A-Frameclintonwoo/hackernews-react-graphql: Hacker News clone rewritten with universal JavaScript, usi…

【朴灵评注】JavaScript 运行机制详解:再谈Event Loop

PS: 我先旁观下大师们的讨论&#xff0c;得多看书了~别人说的&#xff1a;“看了一下不觉得评注对到哪里去&#xff0c;只有吹毛求疵之感。 比如同步异步介绍&#xff0c;本来就无大错&#xff1b;比如node图里面的OS operation&#xff0c;推敲一下就可以猜到那是指同步操作&a…

c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型

实例如下&#xff1a;//strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的\0)并添加\0char *strcat(char * strDest, const char *strSrc){char *resstrDest;assert((strDest!NULL)&&(strSrc!NULL));while(*strDest)strDest;while(*strDest*strSrc){s…

angular——更多按钮的上拉菜单(路由跳转)

<button class"btn gray_text_btn list_item" ng-click"action.toMoreOptions()"><i class"icon ion-navicon"></i> </button> <!-------------------- 底部按钮 -----------------------><section class&qu…

Python版——博客网站四 编写日志创建页

2019独角兽企业重金招聘Python工程师标准>>> 开源地址&#xff1a;https://github.com/leebingbin/Python3.WebAPP.Blog 单从编码来说&#xff0c;WebApp开发真正困难的地方在于编写前端页面。前端页面需要混合HTML、CSS和JavaScript&#xff0c;如果对这三者没有深…

c语言0-1匀分布随机数,C++ generate_canonical均匀分布随机数函数用法详解

标准均匀分布是一个在范围 [0&#xff0c;1) 内的连续分布。generate_canonical() 函数模板会提供一个浮点值范围在 [0&#xff0c;1) 内&#xff0c;且有给定的随机比特数的标准均匀分布。它有 3 个模板参数&#xff1a;浮点类型、尾数的随机比特的个数&#xff0c;以及使用的…

第三十四天 how can I 坚持

“不要把所有的鸡蛋放在同一个篮子里”是错误的&#xff0c;投资应该像马克吐温说的那样&#xff0c;要把所有的鸡蛋放在同一篮子里&#xff0c;并小心的看好他。---巴菲特。 那盆花还没死&#xff0c;但是我又能做什么呢&#xff1f;技术。永远的技术。睡觉。转载于:https://w…

01-Swift 介绍

简介 Swift 语言由苹果公司在 2014 年推出&#xff0c;用来撰写 OS X 和 iOS 应用程序2014 年&#xff0c;在 Apple WWDC 发布 几家欢喜,几家愁愁者:只学Object-C的人欢喜者:之前做过java/python/js语言的人历史 2010 年 7 月&#xff0c;苹果开发者工具部门总监 Chris Lattner…

2017—2018 实验报告:实验一

实验一&#xff1a;实验报告 课程&#xff1a;程序设计与数据结构 班级&#xff1a; 1623 姓名&#xff1a; 张旭升 学号&#xff1a;20162329 指导教师&#xff1a;娄嘉鹏 王志强 实验日期&#xff1a;9月25日 实验密级&#xff1a; 非密级 预习程度&#xff1a; 已预习 必修/…