帮忙改进一下代码
查看原帖
帮忙改进一下代码
1492018
noiiloveyou楼主2025/1/18 16:47

这题AC了,可是代码非常long,一看就头晕,求大家帮忙改进!
(注释大多是调试代码)

#include<bits/stdc++.h>
using namespace std;
int n,q,a,b,c,r,l,lw,rw,xw,dw,sum;
int x[200005];
string fc,sa,sb,sc;
int fu;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>q;
	for(int i=0;i<n;++i){
		a=b=c=0;
		cin>>fc;
		xw=fc.find('x');
		dw=fc.find('=');
		sa=fc.substr(0,xw); 
		sb=fc.substr(xw+1,dw-xw-1);
		sc=fc.substr(dw+1,fc.size()-2);
		//a
		if(sa[0]=='-'){
			fu=-1;
		}
		else{
			fu=1;
			a=int(sa[0])-'0';
		}
		for(int i=1;i<sa.size();++i){
			a*=10;
			a+=fu*(int(sa[i])-'0');
		}
		//b
		if(sb[0]=='-'){
			fu=-1;
		}
		else{
			fu=1;
		}
		for(int i=1;i<sb.size();++i){
			b*=10;
			b+=fu*(int(sb[i])-'0');
		}
		//c
		if(sc[0]=='-'){
			fu=-1;
		}
		
		else{
			fu=1;
			c=int(sc[0])-'0';
		}
		for(int i=1;i<sc.size();++i){
			c*=10;
			c+=fu*(int(sc[i])-'0');
		}
		//\cout<<a<<' '<<b<<' '<<c<<endl;
		x[i]=(c-b)/a;
		//cout<<x[i]<<endl;
	}
	sort(x,x+n);/*
	for(int i=0;i<n;++i){
		cout<<x[i]<<endl;
	}*/
	for(int i=0;i<q;++i){
		cin>>l>>r;
		sum=0;
		rw=upper_bound(x,x+n,r)-x;
		lw=lower_bound(x,x+n,l)-x;
		for(int i=lw;i<rw;++i){
			if(x[i]!=x[i-1]){
				++sum;
			}
		}
		cout<<sum<<endl;
	}
	return 0;
}
2025/1/18 16:47
加载中...