HDU 1166 敵兵佈陣

来源:http://www.cnblogs.com/Silenceneo-xw/archive/2016/10/13/5958291.html
-Advertisement-
Play Games

敵兵佈陣 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 79267 Accepted Submission(s): 33532 Problem ...


敵兵佈陣

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 79267    Accepted Submission(s): 33532


Problem Description

C國的死對頭A國這段時間正在進行軍事演習,所以C國間諜頭子Derek和他手下Tidy又開始忙乎了。A國在海岸線沿直線佈置了N個工兵營地,Derek和Tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數C國都掌握的一清二楚,每個工兵營地的人數都有可能發生變動,可能增加或減少若幹人手,但這些都逃不過C國的監視。
中央情報局要研究敵人究竟演習什麼戰術,所以Tidy要隨時向Derek彙報某一段連續的工兵營地一共有多少人,例如Derek問:“Tidy,馬上彙報第3個營地到第10個營地共有多少人!”Tidy就要馬上開始計算這一段的總人數並彙報。但敵兵營地的人數經常變動,而Derek每次詢問的段都不一樣,所以Tidy不得不每次都一個一個營地的去數,很快就精疲力盡了,Derek對Tidy的計算速度越來越不滿:"你個死肥仔,算得這麼慢,我炒你魷魚!”Tidy想:“你自己來算算看,這可真是一項累人的工作!我恨不得你炒我魷魚呢!”無奈之下,Tidy只好打電話向電腦專家Windbreaker求救,Windbreaker說:“死肥仔,叫你平時做多點acm題和看多點演算法書,現在嘗到苦果了吧!”Tidy說:"我知錯了。。。"但Windbreaker已經掛掉電話了。Tidy很苦惱,這麼算他真的會崩潰的,聰明的讀者,你能寫個程式幫他完成這項工作嗎?不過如果你的程式效率不夠高的話,Tidy還是會受到Derek的責罵的.  

 

Input

第一行一個整數T,表示有T組數據。
每組數據第一行一個正整數N(N<=50000),表示敵人有N個工兵營地,接下來有N個正整數,第i個正整數ai代表第i個工兵營地里開始時有ai個人(1<=ai<=50)。
接下來每行有一條命令,命令有4種形式:
(1) Add i j,i和j為正整數,表示第i個營地增加j個人(j不超過30)
(2)Sub i j ,i和j為正整數,表示第i個營地減少j個人(j不超過30);
(3)Query i j ,i和j為正整數,i<=j,表示詢問第i到第j個營地的總人數;
(4)End 表示結束,這條命令在每組數據最後出現;
每組數據最多有40000條命令  

 

Output

對第i組數據,首先輸出“Case i:”和回車,
對於每個Query詢問,輸出一個整數並回車,表示詢問的段中的總人數,這個數保持在int以內。  

 

Sample Input

1 10 1 2 3 4 5 6 7 8 9 10 Query 1 3 Add 3 6 Query 2 7 Sub 10 2 Add 6 3 Query 3 10 End  

Sample Output

Case 1: 6 33 59  

 

Author

Windbreaker  

 

Recommend

Eddy     題目大意:中文題面,不再贅述。   解題思路:線段樹的單點更新,區間求和問題。就是一道模板題,只要會模板即可。詳見代碼。     附上AC代碼:
 1 #include <bits/stdc++.h>
 2 #define lrt rt<<1
 3 #define rrt rt<<1|1
 4 #define lson l, m, lrt
 5 #define rson m+1, r, rrt
 6 using namespace std;
 7 const int maxn = 50005;
 8 int sumv[maxn<<2];
 9 int n;
10 char op[10];
11 
12 void push_up(int rt){
13     sumv[rt] = sumv[lrt]+sumv[rrt];
14 }
15 
16 void build(int l, int r, int rt){
17     if (l == r){
18         int num;
19         scanf("%d", &num);
20         sumv[rt] = num;
21         return ;
22     }
23     int m = (l+r)>>1;
24     build(lson);
25     build(rson);
26     push_up(rt);
27 }
28 
29 void modify(int p, int val, int l, int r, int rt){
30     if (l == r){
31         sumv[rt] += val;
32         return ;
33     }
34     int m = (l+r)>>1;
35     if (p <= m)
36         modify(p, val, lson);
37     else
38         modify(p, val, rson);
39     push_up(rt);
40 }
41 
42 int query(int ql, int qr, int l, int r, int rt){
43     if (ql<=l && r<=qr)
44         return sumv[rt];
45     int m = (l+r)>>1;
46     int sumr = 0;
47     if (ql <= m)
48         sumr += query(ql, qr, lson);
49     if (qr > m)
50         sumr += query(ql, qr, rson);
51     return sumr;
52 }
53 
54 int main(){
55     int T, cas=0;
56     scanf("%d", &T);
57     while (T--){
58         scanf("%d", &n);
59         build(1, n, 1);
60         printf("Case %d:\n", ++cas);
61         int a, b;
62         while (~scanf("%s", op) && op[0]!='E'){
63             scanf("%d%d", &a, &b);
64             if (op[0] == 'Q')
65                 printf("%d\n", query(a, b, 1, n, 1));
66             else
67                 modify(a, op[0]=='A' ? b : -b, 1, n, 1);
68         }
69     }
70     return 0;
71 }
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 閑來無事,寫了個swing界面,運行後看到當點擊按鈕時,中間文字會出現一個剛好把文字圍住的小方框,這是按鈕獲得焦點的標誌,我是覺得一個字:醜!怎麼去掉呢?萬能的度娘告訴我,設置下button的setFocusPainted為false,我試了一下,果然ok,下麵將代碼分享給大家,可以將設置屬性的那句 ...
  • I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 66742 Accepted Submission(s): 25969 Pro ...
  • 【Python練習題 009】 列印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。 這題也是送分題,只要能把任意三位數的百位、十位、個位拆解出來就好辦了。思路:將任意3位數除以100 ...
  • 最近工作需要用到對硬碟進行shell腳本自動化分區和mount的操作,google了一些資料,下麵做個總結。 如果硬碟沒有進行分區(邏輯分區或者擴展分區,關於兩者概念,自行google),我們將無法將使用該硬碟來進行讀寫。我們要使用一塊硬碟需要進行下麵三步: 本筆記會著重講一下第一步中涉及的fdis ...
  • 記得兩年前實習的時候,繼哥說,一個程式員如果把一些範疇內的事情做得完美,其他人會少很多事情,包括測試,運維,方便自己,方便大家。。這次有機會將一個項目進行重構,併進行前後端分離,分析了一些需求和後期的規劃後,決定放棄以前“肥大”的springMVC那一套東西,採用近兩年越來越火的微服務架構試一試,當 ...
  • 【Python練習題 008】判斷101-200之間有多少個素數,並輸出所有素數。 這題算是送分題吧,據說解法很多。我的思路是:先建立101-200的整數列表,再進行判斷,如果某個數字能被“從2至這個數字前一位”整除,則將這個數字從列表剔除。挨個走一遍後,剩下的就都是素數了。代碼如下: 輸出結果如下 ...
  • 程式猿成長之路少不了要學習和分析源碼的。最近難得能靜得下心來,就針對dubbox為目標開始進行源碼分析。 【服務提供方】 com.alibaba.dubbo.container.Main.main(args);dubbo.properties -> dubbo.container -> contai ...
  • 【Python練習題 007】 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 這題反正我自己是算不出來。後來搜索了網上,說是經典的“斐波納契數列”。於是我自己排畫了一下(如下圖,小寫表示小兔子,大寫表示大兔子): ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...