教主的魔法

傳送門

這道題序列很長,但是操作數很少,然后也沒想到什么好的數據結構來維護,那就分塊吧。

感覺維護的過程很好想,修改的時候對于整個塊都在內的直接打標記,兩個零散的區間暴力重構,重新排序。查詢的時候,對于整塊的,直接在塊內lowerbound一下z-add[i]的位置,零散的話直接暴力計算即可。

復雜度O(ksqrt(n)logsqrt(n)).注意數組別開小了……

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#include<set>
#include<queue>
#define rep(i,a,n) for(int i = a;i <= n;i++)
#define per(i,n,a) for(int i = n;i >= a;i--)
#define enter putchar('\n')using namespace std;
typedef long long ll;
const int M = 2000005;
const int N = 2005;
const ll INF = 1e17+9;
const ll mod = 19260817;ll read()
{ll ans = 0,op = 1;char ch = getchar();while(ch < '0' || ch > '9'){if(ch == '-') op = -1;ch = getchar();}while(ch >= '0' && ch <= '9'){ans *= 10;ans += ch - '0';ans %= mod;ch = getchar();}return ans * op;
}ll a[M],b[N][N],l[N],r[N],blo[M],add[N],n,m,B,cnt,g = 1,x,y,z;
char s[5];ll query(ll x,ll y,ll z)
{ll L = blo[x],R = blo[y],ans = 0;if(L == R){rep(i,x,y) if(a[i] + add[L] >= z) ans++;return ans;}rep(i,L+1,R-1){//rep(j,1,B) printf("%lld ",b[i][j]);enter;//printf("!%lld\n",z - add[i]);int d = lower_bound(b[i]+1,b[i]+B,z - add[i]) - b[i];//printf("#%d\n",d);if(d == B && b[i][d] < z - add[i]) continue;ans += B - d + 1;}rep(i,x,r[L]) if(a[i] + add[blo[i]] >= z) ans++;rep(i,l[R],y) if(a[i] + add[blo[i]] >= z) ans++;return ans;
}void modify(ll x,ll y,ll z)
{ll L = blo[x],R = blo[y],cur = 0;if(L == R){rep(i,x,y) a[i] += z;rep(i,l[L],r[L]) b[L][++cur] = a[i];sort(b[L]+1,b[L]+1+B);return;}rep(i,L+1,R-1) add[i] += z;rep(i,x,r[L]) a[i] += z;rep(i,l[R],y) a[i] += z;rep(i,l[L],r[L]) b[L][++cur] = a[i];sort(b[L]+1,b[L]+B+1),cur = 0;rep(i,l[R],r[R]) b[R][++cur] = a[i];sort(b[R]+1,b[R]+B+1);
}int main()
{n = read(),m = read(),B = sqrt(n);cnt = (n % B) ? n / B + 1 : n / B;rep(i,1,cnt) l[i] = r[i-1] + 1,r[i] = l[i] + B - 1;r[cnt] = n;rep(i,1,n) a[i] = read();rep(i,1,n){blo[i] = g;if(i == r[g]) g++;}rep(i,1,cnt){int cur = 0;rep(j,l[i],r[i]) b[i][++cur] = a[j];sort(b[i]+1,b[i]+B+1);}rep(i,1,m){scanf("%s",s);x = read(),y = read(),z = read();if(s[0] == 'A') printf("%lld\n",query(x,y,z));else modify(x,y,z);}return 0;
}

?

轉載于:https://www.cnblogs.com/captain1/p/9834471.html

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

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

相關文章

obs自定義編碼設置_通過7個步驟設置OBS進行實時編碼

obs自定義編碼設置by Wesley McCann韋斯利麥肯(Wesley McCann) 通過7個步驟設置OBS進行實時編碼 (Setting up OBS for Live Coding in 7 Steps) Twitch TV is a popular live-streaming service. You traditionally used Twitch to stream yourself playing video games, but …

java hadoop api_Hadoop 系列HDFS的Java API( Java API介紹)

HDFS的Java APIJava API介紹將詳細介紹HDFS Java API&#xff0c;一下節再演示更多應用。Java API 官網如上圖所示&#xff0c;Java API頁面分為了三部分&#xff0c;左上角是包(Packages)窗口&#xff0c;左下角是所有類(All Classes是)窗口&#xff0c;右側是詳情窗口。這里推…

最大連通子數組

這次是求聯通子數組的求和&#xff0c;我們想用圖的某些算法&#xff0c;比如迪杰斯特拉等&#xff0c;但是遇到了困難。用BFS搜索能達到要求&#xff0c;但是還未能成功。 那么我們這樣想&#xff0c;先將每行的最大子數組之和&#xff0c;然后再將這些最大之和組成一個數組&a…

redis的zset的底層實現_Redis(三)--- Redis的五大數據類型的底層實現

1、簡介Redis的五大數據類型也稱五大數據對象&#xff1b;前面介紹過6大數據結構&#xff0c;Redis并沒有直接使用這些結構來實現鍵值對數據庫&#xff0c;而是使用這些結構構建了一個對象系統redisObject&#xff1b;這個對象系統包含了五大數據對象&#xff0c;字符串對象(st…

科學計算機簡單編程_是“計算機科學”還是“編程”?

科學計算機簡單編程by Sam Corcos由Sam Corcos 是“計算機科學”還是“編程”&#xff1f; (Is It “Computer Science” or “Programming”?) 教育政策白皮書(提示&#xff1a;它們不是同一個東西) (An education policy white paper (hint: they’re not the same thing))…

[Matlab] 畫圖命令

matlab畫圖命令&#xff0c;不定時更新以便查找 set(gcf, color, [1 1 1]);     % 使圖背景為白色 alpha(0.4);           %設置平面透明度 plot(Circle1,Circle2,k--,linewidth,1.25);  % k--設置線型  ‘linewidth’,1.25  設置線寬度為1.25 %線型   …

django入門記錄 2

1. 創建一個app&#xff0c; python manage.py startapp appname 2. 設計model&#xff0c;在appname/目錄下編輯好model 3. 檢測model的修改&#xff0c;python manage.py makemigrations appname 4. 自動執行數據庫遷移&#xff0c;并同步管理數據庫結構&#xff0c; python…

spark sql 數據類型轉換_SparkSql 數據類型轉換

1、SparkSql數據類型 1.1數字類型 ByteType:代表一個字節的整數。范圍是-128到127 ShortType:代表兩個字節的整數。范圍是-32768到32767 IntegerType:代表4個字節的整數。范圍是-2147483648到2147483647 LongType:代表8個字節的整數。范圍是-9223372036854775808到92233720…

【Python】 list dict str

list & dict & str 這三種類型是python中最常用的幾種數據類型。他們都是序列的一種 ■  序列通用操作 1. 分片 s[a:b] 返回序列s中從s[a]到s[b-1]的片段。注意s[0:0]是空集而不是s[0] s[a:b:c]  加入第三個參數以設置取樣步長。可以設置成負數來從右向左取樣 2. 加…

終端terminal的顏色配置

PS1 color 終端terminal的顏色配置 PS1"\[\e[92;1m\][\u\e[90;5m\e[25m\[\e[91;4m\]Atlas\e[24m\[\e[1m\]\[\e[92;1m\] \W ]\\$\[\e[0m\]" Set CodeDescriptionExamplePreview1Bold/Bright echo -e "Normal \e[1mBold" 2Dim echo -e "Normal \e[2mDi…

速度與激情的Webpack

Also published in my tech blog也發布在我的技術博客中 This is a guide that is meant to help you ease your development workflow and save your time by using a bunch of awesome tools that you’ve read about on the internet (does React Hot Loader ring any bells…

java nio socket長連接_nio實現Socket長連接和心跳

前段時間用bio方式&#xff0c;也就是傳統io實現了socket的長連接和心跳&#xff0c;總覺著服務端開啟多線程管理socket連接的方式過于消耗資源&#xff0c;數據并發的情況下可能會影響到性能&#xff0c;因此就嘗試使用nio改進原來的代碼。然而改進的過程卻不像我起初設想的那…

unity讓對象作為參數_C#+Unity學習筆記:類與對象

參考文獻蜜酒廳通訊社 游戲部 石中居士對象(object)&#xff1a;有狀態、行為和身份的東西。狀態(state)&#xff1a;表示物體特征的信息&#xff0c;可以用來跟蹤對象的狀態。屬性(properties)&#xff1a;因為編程人員需要把控對象的狀態&#xff0c;所以要對其進行訪問。通過…

Tomcat 報 The valid characters are defined in RFC 7230 and RFC 3986

問題 24-Mar-2017 23:43:21.300 INFO [http-apr-8001-exec-77] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalAr…

Linux Kernel Oops異常分析

0&#xff0e;linux內核異常常用分析方法 異常地址是否在0附近&#xff0c;確認是否是空指針解引用問題異常地址是否在iomem映射區&#xff0c;確認是否是設備訪問總線異常問題&#xff0c;如PCI異常導致的地址訪問異常異常地址是否在stack附近&#xff0c;如果相鄰&#xff0c…

Centos7.5 VMtools的安裝與卸載

一、安裝1、自帶tools&#xff1a; 選擇VMware工具欄 > 虛擬機 > 安裝VMtools2、掛載光驅3、tar -zxvf VMwareTools-10.3.2-9925305.tar.gz&#xff08;這里以tar文件為例&#xff09;4、切換到目標目錄&#xff0c;執行&#xff08;一定要使用root權限執行&#xff09;…

gitter 卸載_最佳Gitter渠道:開發人員工具

gitter 卸載by Gitter通過吉特 最佳Gitter渠道&#xff1a;開發人員工具 (Best Gitter channels: Developer Tools) Developer tools have become essential to any kind of serious software development, also in the open source setting. They can ease the daily develop…

java 過濾腳本_我寫的得到天氣的Java代碼,其中有過濾腳本和過濾HTMLtag的函數。...

public class WeatherFilter{private String html;private String target"http://weather.news.sohu.com/query.php?city北京";public WeatherFilter()throws Exception{this(null);}public WeatherFilter(String targetIn)throws Exception{if(targetIn!null)this.…

【懶癌發作】收集各種懶癌發作時用程序寫作業的程序

updata:20170621 好的&#xff0c;已經是準高一了&#xff0c;現在看起來太蠢了。。。 -------------------------------------------------------------------------------------- 要真正的運用&#xff0c;程序一定是要來解決實際問題的——比如作業&#xff08;懶就直說&…

50歐姆線設計 高頻pcb_硬件設計基礎100問(三)

硬件基礎知識問答今天依舊是節前知識儲備哦&#xff0c;jacky大神整理的硬件基礎知識很細致&#xff0c;第三彈學起來&#xff01;01 1、晶體管基本放大電路有共射、共集、共基三種接法&#xff0c;請簡述這三種基本放大電路的特點。共射&#xff1a;共射放大電路具有放大電流和…