Belarus @ 2019-09-08 20:47:40
严谨的二分法查找
竟然只有1AC,还有WA和TLE
就算是从l到r搜一遍时间复杂度也是O(n)啊
而n<=1e6啊
//p2801
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+9;
typedef long long ll;
int n,q;
ll a[maxn],b[maxn];
inline ll search(ll lft,ll rt,ll exp){
ll tot=0;
while(lft<rt){
ll mid=(lft+rt)>>1;
if(b[mid]>=exp) rt=mid;
else{
lft=mid+1;
tot=n-lft+1;
break;
}
}
return tot;
}
int main(){
ios::sync_with_stdio(0);
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=a[i];
}
while(q--){
ll l=0,r=0,c=0,w=0;
char ch;
cin>>ch;
if(ch=='A'){
cin>>l>>r>>c;
memcpy(b,a,sizeof(b));
sort(b+1,b+n+1);
cout<<search(l,r,c)<<endl;
}
else if(ch=='M'){
cin>>l>>r>>w;
for(int i=l;i<=r;i++) a[i]+=w;
}
}
return 0;
}
by le_星辰 @ 2019-09-08 21:09:32
他好像就是想块内排序然后二分找到询问的那个高度,然后从那个位置扫一遍@Polaris_Dane
by Polaris_Dane @ 2019-09-08 21:11:50
@le_星辰
但他写错了
by le_星辰 @ 2019-09-08 21:12:31
而且时间过不了
by Polaris_Dane @ 2019-09-08 21:14:33
@le_星辰
全部WA或者T了
RT
by le_星辰 @ 2019-09-08 21:16:05
@Polaris_Dane
我根本都不会分块(逃),一开始看这个题以为是线段树,一算时间复杂度好像过不了
by Polaris_Dane @ 2019-09-08 21:18:13
其实暴力吸氧都能过了
我无语了
@le_星辰
by le_星辰 @ 2019-09-08 21:18:59
呼叫chenzhe(哭笑)
by le_星辰 @ 2019-09-08 21:19:12
@Polaris_Dane
by Polaris_Dane @ 2019-09-08 21:20:44
@le_星辰
笑哭
我做完就呼叫( 逃)
by Belarus @ 2019-09-08 22:12:21
@le_星辰 怎么是你?!