ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#184732 | #584. t3 | snow_trace | 100 | 2277ms | 8272kb | C++11 | 1.7kb | 2023-09-12 11:58:34 | 2023-09-12 12:07:47 |
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[200005];
struct node{
int l,r;
mutable long long v;
node(int L,int R = -1, long long V = 0):l(L),r(R),v(V){}
bool operator<(const node &o) const {
return l<o.l;
}
};set<node>s;
set<node>::iterator split(int pos){
auto it= s.lower_bound(node(pos));
if(it!=s.end() and it->l == pos)return it;
it--;
int L = it->l,R = it->r;
long long V = it->v;
s.erase(it);
s.insert(node(L,pos-1,V));
return s.insert(node(pos,R,V)).first;
}void assign(int l,int r,long long val){
auto itr = split(r+1),itl = split(l);
s.erase(itl,itr);
s.insert(node(l,r,val));return;
}void add(int l,int r,long long val){
auto itr = split(r+1),itl = split(l);
for(;itl!=itr;++itl){
itl->v+=val;
}return;
}long long rk(int l,int r,int k){
vector<pair<long long,int> >p;
auto itr = split(r+1),itl = split(l);
for(;itl!=itr;++itl){
p.push_back({itl->v,itl->r-itl->l+1});
}sort(p.begin(),p.end());
for(int i =0;i<p.size();i++){
k-=p[i].second;
if(k<=0)return p[i].first;
}
}
const int mod = 1000000007;
int qp(int p,int q,int mod){
int ans =1,pro = p%mod;
while(q){
if(q&1)ans = ans*pro%mod;
q>>=1,pro = pro*pro%mod;
}return ans;
}int sum(int l,int r,int q,int mod){
auto itr=split(r+1),itl = split(l);
int ans =0 ;
for(;itl!=itr;itl++){
ans+=(itl->r-itl->l+1)*qp(itl->v,q,mod)%mod,ans%=mod;
}return ans;
}int n,m;
signed main(){
cin >> n >> m;
for(int i = 1;i<=n;i++){
cin >> a[i];
s.insert(node(i,i,a[i]));
}for(int i = 1;i<=m;i++){
int op,l,r,x;cin >> op >> l >> r >> x;
if(op == 1){
add(l,r,x);
}else if(op == 2){
assign(l,r,x);
}else{
cout << sum(l,r,x,mod) << endl;
}
}
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1276kb
input:
458 823 14431 9895 11970 15308 2575 20181 709 27999 12992 18884 11061 16281 5044 28990 25092 28337 3...
output:
806084096 117884357 581509507 903754571 381316325 789203673 312340523 659242359 741787988 89040104 4...
result:
ok 261 lines
Test #2:
score: 10
Accepted
time: 0ms
memory: 1272kb
input:
481 526 8409 14498 18636 10027 24362 32458 17986 17730 11956 19192 2193 1034 29317 19284 16210 26242...
output:
867105097 717265913 288311190 320452351 133 498037408 473281413 216488030 182572597 611630662 471106...
result:
ok 179 lines
Test #3:
score: 10
Accepted
time: 276ms
memory: 8272kb
input:
100000 100000 15247 4194 9619 4532 22058 2667 21549 16652 25327 12018 13395 11426 7243 11714 22904 2...
output:
54433 544457741 352487648 82525935 532381851 235929450 38218 30045720 19138 459644406 33559 30953524...
result:
ok 33327 lines
Test #4:
score: 10
Accepted
time: 261ms
memory: 8268kb
input:
100000 100000 6264 26207 28424 24165 4852 20798 5803 18679 24588 12238 25786 28622 19900 101 25922 2...
output:
18923 13111195 41716 34447 32091 80654 731180277 9973 523560023 19797 159789457 695071461 3136 95363...
result:
ok 33328 lines
Test #5:
score: 10
Accepted
time: 257ms
memory: 8268kb
input:
100000 100000 15043 9299 7163 25384 24996 3803 24356 12466 22073 12987 8931 14997 3951 32704 23076 8...
output:
754347097 6296 588341566 325967942 180064833 683 831351544 63953 57030 17635 175222109 5280 57193 32...
result:
ok 33349 lines
Test #6:
score: 10
Accepted
time: 274ms
memory: 8272kb
input:
100000 100000 14736 16956 19864 23894 29403 5507 12182 6188 17192 14440 18618 3970 15396 15037 23334...
output:
17008 73008 935797904 16519312 15383 25232 236856418 75334 25854 46510 797344028 517157465 595936107...
result:
ok 33304 lines
Test #7:
score: 10
Accepted
time: 144ms
memory: 4756kb
input:
50000 50000 17799 29763 25337 21321 1391 31852 27418 28753 18524 14044 15976 18893 12274 22834 11348...
output:
19498 473297203 695948777 299749756 50630760 692747746 369627246 181903142 328502296 939823794 69850...
result:
ok 16802 lines
Test #8:
score: 10
Accepted
time: 197ms
memory: 4756kb
input:
50000 50000 10654 14956 14287 25326 8102 30579 11682 23553 272 22672 14460 30241 13026 12738 4912 72...
output:
717018991 140916081 273712387 602991268 878512570 665908548 10388 4939 283493752 435656498 657720400...
result:
ok 16814 lines
Test #9:
score: 10
Accepted
time: 452ms
memory: 7568kb
input:
90000 90000 29538 28214 24706 30393 27759 9002 13458 10243 15713 14881 10630 5593 7942 24578 29370 1...
output:
738835738 738703020 3888 402391875 37270 872563699 273399892 807398793 365897262 255303782 93280847 ...
result:
ok 29904 lines
Test #10:
score: 10
Accepted
time: 416ms
memory: 8272kb
input:
100000 100000 23515 49 31372 25112 16779 21279 30735 32743 14678 15189 1763 23114 32215 14873 20487 ...
output:
576735050 562509678 553431297 662173102 515338212 478400370 879269281 500659410 483381164 1679282 16...
result:
ok 33309 lines