BZOJ2683 簡單題(CDQ分治)

傳送門
之前聽別人說CDQ分治不難學,今天才知道果真如此。之前一直為自己想不到CDQ的方法二很不爽,今天終于是想出來了一道了,太弱……
cdq分治主要就是把整段區間分成兩半,然后用左區間的值去更新右區間的答案,每次把區間折半。對于本題來說時間復雜度T(N)=T(N/2)+O(NlogN)
T(N)=O(Nlog2N)

/**************************************************************Problem: 2683Language: C++Result: AcceptedTime:6204 msMemory:35184 kb
****************************************************************/#include <cstdio>
#include <algorithm>
using namespace std;
#define MAXN 200005
struct Node {int t, x, y, v, k;inline bool operator < (const Node&r) const {if(x == r.x && y == r.y) return t < r.t;else if(x == r.x) return y < r.y;else return x < r.x;}
} q[MAXN << 2], nq[MAXN << 2];
int n, cnt, ans;
inline void GET(int &n) {n = 0; char c;do c = getchar(); while('0' > c || c > '9');do n = n * 10 + c - '0', c = getchar(); while('0' <= c && c <= '9');
}
namespace BIT {int t[MAXN << 2];inline void Add(int x, int v) {for(; x <= n; x += x&-x) t[x] += v;}inline int Query(int x, int s = 0) {for(; x; x -= x&-x) s+=t[x];return s;}
}
void cdq(int l, int r) {if(l >= r) return;using namespace BIT;int mid = (l + r) >> 1, lp = l, rp = mid+1;for(int i = l; i <= r; ++ i)if(q[i].t <= mid && q[i].k == 1) Add(q[i].y, q[i].v);else if(q[i].t > mid && q[i].k == 2) q[i].v += Query(q[i].y);for(int i = l; i <= r; ++ i) {if(q[i].t <= mid && q[i].k == 1) Add(q[i].y, -q[i].v);if(q[i].t <= mid) nq[lp ++] = q[i];else nq[rp ++] = q[i];}for(int i = l; i <= r; ++ i) q[i] = nq[i];cdq(l, mid); cdq(mid+1, r);
}
int main() {scanf("%d", &n);int op, x, y, a, b;while(~scanf("%d", &op) && 3 != op) {if(1 == op) {GET(x); GET(y); GET(a);q[++ cnt] = { cnt, x, y, a, 1 };}else {GET(x); GET(y); GET(a); GET(b);q[++ cnt] = { cnt, x-1, y-1, 0, 2 };q[++ cnt] = { cnt, x-1, b, 0, 2 };q[++ cnt] = { cnt, a, y-1, 0, 2 };q[++ cnt] = { cnt, a, b, 0, 2 };}}sort(q+1, q+cnt+1);cdq(1, cnt);for(int i = 1; i <= cnt; ++ i)if(q[i].k == 2) {ans = q[i].v - q[i+1].v - q[i+2].v + q[i+3].v;printf("%d\n", ans); i += 3;}return 0;
}

轉載于:https://www.cnblogs.com/geng4512/p/5296858.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/459049.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/459049.shtml
英文地址,請注明出處:http://en.pswp.cn/news/459049.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VS2010斷點設置技巧

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 許多Visual Studio下的程序員&#xff0c;甚至一些很有經驗的開發人員&#xff0c;都不…

IOS應用開發版本控制工具之Versions使用,iosversions

Versions版本控制工具破解版&#xff08;Versions.zip&#xff09;下載請見本博文附件。下載后在MAC安裝完以后&#xff0c;圖標是蓮花狀。見下圖&#xff1a; 雙擊運行如下圖&#xff1a; 點擊Repository&#xff0c;連接SVN服務器Repository&#xff08;服務器端采用的是SVN服…

php form action跳轉,form表單頁面跳轉方式提交練習

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓//form表單提交練習/*新建一個form.html網頁用來書寫前端HTML表單*/表單提交練習姓名:年齡:電話:地址:QQ:自我評價://以上功能可自己添加或修改/*在form.html網頁的基礎上新建一個foms.php網頁關聯之前的form.html網頁并書寫php測試…

VS2010調試快捷鍵

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** vs2010 調試快捷鍵 命令名 快捷鍵 說明 調試.應用代碼更改 Alt F10 啟動生…

什么是算法,什么是數據結構

盡管已經學了幾年&#xff0c;對它們也可以說大致懂得。但是&#xff0c;作為非計算機專業的人員&#xff0c;還是不會比計算機專業人員懂得多。既然沒有受過專門的學習訓練&#xff0c;自然會有三天打魚兩天曬網的感覺&#xff0c;一天可能冒出一個念頭。于是乎&#xff0c;寫…

如何在多web服務器共享SESSION數據

2019獨角獸企業重金招聘Python工程師標準>>> 一、問題起源 稍大一些的網站&#xff0c;通常都會有好幾個服務器&#xff0c;每個服務器運行著不同功能的模塊&#xff0c;使用不同的二級域名&#xff0c;而一個整體性強的網站&#xff0c;用戶系統是統一的&#xff0…

grpc php 返回值過大,使用grpc實現php、java、go三方互調

grpc作為經典的rpc協議&#xff0c;雖然略重&#xff0c;但是是有學習的價值的通過下面的內容可以快速上手這個grpc框架安裝命令行工具php需要這個額外的protoc、grpc_php_plugin工具把這個protobuf格式的文件生成php語言里的類go需要安裝protoc-gen-go工具把protobuf格式的接口…

SOCKET通信的基本步驟

SOCKET通信的基本步驟 1&#xff09;建立一個服務器ServerSocket&#xff0c;并同時定義好ServerSocket的監聽端口&#xff1b;2&#xff09;ServerSocket 調用accept()方法&#xff0c;使之處于阻塞。3&#xff09;創建一個客戶機Socket,并設置好服務器的IP和端口。4&#xff…

Linux epoll 筆記(高并發事件處理機制)

wiki&#xff1a; Epoll優點&#xff1b; Epoll工作流程&#xff1b; Epoll實現機制: epollevent; Epoll源碼分析&#xff1b; Epoll接口: epoll_create; epoll_ctl; epoll_close; Epoll工作方式: LT(level-triggered); ET(edge-triggered); Epoll應用模式; Epoll優點&#xff…

Django請求響應對象

請求與響應對象 HttpRequest HttpRequest存儲了客戶請求的相關參數和一些查詢方法。 path請求頁面的全路徑,不包括域名—例如, "/hello/"。 methodHttp請求方法&#xff0c;包括GET,POST。 GETQueryDict類實例&#xff0c;包含所有HTTP GET參數的字典對象。 POSTQuer…

matlab 作圖 虛線太長,matlab?極坐標繪圖?在matlab中,用polar畫的圖形,如何使虛線圓多顯示幾個?...

滿意答案iredwood推薦于 2018.12.26采納率&#xff1a;52% 等級&#xff1a;12已幫助&#xff1a;13535人打開polar.m 文件&#xff0c;路徑可通過輸入 which polar 命令得到。其中修改下面這段代碼&#xff0c;可以控制虛線圓的顯示個數。其中rticks 為控制顯示個數的參量。…

《學習opencv》筆記——矩陣和圖像處理——cvAnd、cvAndS、cvAvg and cvAvgSdv

矩陣和圖像的操作 (1)cvAnd函數 其結構 void cvAnd( //將src1和src2按像素點取“位與運算”const CvArr* src1,//第一個矩陣const CvArr* src2,//第二個矩陣CvArr* dst,//結果矩陣const CvArr* mask NULL;//矩陣經行像素點與的“開關” );程序實例#include <cv.h> #inc…

Hibernate之加載策略(延遲加載與即時加載)和抓取策略(fetch)

假設現在有Book和Category兩張表,表的關系為雙向的一對多,表結構如下: 假設現在我想查詢id為2的那本書的書名,使用session.get(...)方法: 1 Session sessionHibernateUtil.getSession(); 2 Book book (Book) session.get(Book.class,2); 3 System.out.println(book.getName());…

指紋圖像方向圖matlab,matlab指紋方向場方向圖程序

function Fangxiangtu zhiwen_fangxiangtu( Zhiwentuxiang )%函數功能計算指紋方向圖%函數參數指紋圖像Zhiwentuxiang%函數返回值指紋方向圖FangxiangtuSizeZhiwentuxiang size( Zhiwentuxiang ) ;Zhiwentuxiang double( Zhiwentuxiang ) ;W 4; % 窗口大小(2W1)*(2W1)W 4;…

怎樣實現一個簡單的jQuery編程

第一步&#xff1a;在head中載入jQuery框架 <script  type"text/javascript" src"jQuery文檔所在的絕對路徑"></script> 注&#xff1a; type——指定腳本的mime類型 src——規定外部腳本文件的URL jQuery是一個javascript庫&#xff0c;相…

php多人點餐可以看到對方點的菜,千萬不要小看你身邊那個會點菜的人,因為

飯局上&#xff0c;你常常是負責點菜的那個人&#xff0c;還是只負責吃&#xff1f;拿起菜單點菜&#xff0c;你是很從容&#xff0c;還是不知道怎么點&#xff1f;事實上&#xff0c;飯局上那個會點菜的人&#xff0c;千萬不能小看。某次隨老板外出開會&#xff0c;跟去的幾個…

gvim for php,轉 : Gvim建立IDE編程環境 (Windows篇)

說明&#xff1a;本文是作者在完全按照著名的《手把手教你把Vim改裝成一個IDE編程環境》一文&#xff0c;在Windows XP上用gvim建立IDE環境時所作的備忘。原作地址&#xff1a;http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx。1.安裝gvim7.2。運行gvim72.exe&…

1081. Rational Sum (20) -最大公約數

題目如下&#xff1a; Given N rational numbers in the form "numerator/denominator", you are supposed to calculate their sum. Input Specification: Each input file contains one test case. Each case starts with a positive integer N (<100), followe…

CRC8校驗分析

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** CRC即循環冗余校驗碼&#xff08;Cyclic Redundancy Check&#xff09;&#xff1a;是…

insert mysql后加where,如何在MySQL Insert語句中添加where子句?

This doesnt work:這不起作用:INSERT INTO users (username, password) VALUES ("Jack","123") WHERE id1;Any ideas how to narrow insertion to a particular row by id?任何想法如何通過id縮小插入到特定行?8 個解決方案#120In an insert statement y…