TLE求助
查看原帖
TLE求助
681979
CSP_AK_I楼主2022/9/11 18:03
#include<bits/stdc++.h>
using namespace std;
unsigned long long a[100005],b[100005],c[100005],d[100005],l[100005],r[100005];
unsigned long long n,q;
string e = "";
void jz10_2(unsigned long long w){
	if(w==1){
		e += '1';
		return;
	}
	jz10_2(w/2);
	char r = w%2+'0';
	e+=r;
}
string yihuo(string w,string u){
	char s1[100000],s2[100000],s3[100000];
	for(int i = 0;i<w.length();i++){
		s1[w.length()-i] = w[i];
	}
	for(int i = 0;i<u.length();i++){
		s2[u.length()-i] = u[i];
	}
	for(int i = max(w.length(),u.length());i>=1;i--){
		if(s1[i]==s2[i]){
			if(i>w.length()){
				s3[i] = s2[i];
			}
			else if(i>u.length()){
				s3[i] = s1[i];
			}
			else{
				s3[i] = '0';
			}
		}
		else{
			if(i>w.length()){
				s3[i] = s2[i];
			}
			else if(i>u.length()){
				s3[i] = s1[i];
			}
			else{
				s3[i] = '1';
			}
		}
	}
	string o = "";
	for(int i = max(w.length(),u.length());i>=1;i--){
		o+=s3[i];
	}
	return o;
} 
unsigned long long jz2_10(string t){
	unsigned long long sum=0;
	for(int i = 0;i<t.length();i++){
		sum += pow(2,i)*(t[i]-'0');
	}
	return sum;
}
int main(){
	cin>>n>>q;
	for(unsigned long long i = 1;i<=n;i++){
		cin>>a[i]>>b[i];
	}
	for(unsigned long long i = 1;i<=q;i++){
		cin>>l[i]>>r[i]>>c[i]>>d[i];
	}
	for(unsigned long long i = 1;i<=q;i++){
		unsigned long long number=0;
		for(unsigned long long j = l[i];j<=r[i];j++){
			e = "";
			jz10_2(a[j]);
			string tired1,tired2;
			tired1 = e;
			e = "";
			jz10_2(c[i]);
			tired2 = e;
			if(jz2_10(yihuo(tired1,tired2))<=min(b[j],d[i])){
				number++;
			}
		}
		cout<<number<<endl;
	}
} 
2022/9/11 18:03
加载中...