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.pswp.cn/news/257368.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257368.shtml
英文地址,請注明出處:http://en.pswp.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; 已預習 必修/…