社区讨论

刚刚入门赛H求调,更优做法暂不讨论

学术版参与者 5已保存回复 20

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
18 条
当前快照
1 份
快照标识符
@losnjzp0
此快照首次捕获于
2023/11/10 21:27
2 年前
此快照最后确认于
2023/11/11 00:00
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long
#define INF 1e9
using namespace std;
const int maxn=2e5+5;
int n,m;
int ans[maxn],res[maxn];
int chuli(string s){
	s=" "+s;
	int l=1;
	int fenmu=0,ss=1;
	while(s[l]!='x'){
		if(s[l]=='-') ss=-1;
		else fenmu=fenmu*10+s[l]-'0';
		l++;
	}
	fenmu=fenmu*ss;
	l++;
	int fj=0;
	if(s[l]=='+') fj=1;
	l++;
	int n=0;
	ss=1;
	while(s[l]!='='){
		n=n*10+s[l]-'0';
		l++;
	}
	l++;
	int shu=0;
	ss=1;
	while(l<s.length()){
		if(s[l]=='-') s=-1;
		shu=shu*10+s[l]-'0';
		l++;
	}
	shu+=(fj==1?-n:n);
	return shu/fenmu;
}
struct que{
	int l,r;
	int id;
	friend bool operator<(que x,que y){
		if(x.l==y.l) return x.r<y.r;
		return x.l<y.l;
	}
}q[maxn];
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n>>m;
	for (int i=1;i<=n;i++){
		string s;
		cin>>s;
		ans[i]=chuli(s);
	}
	for (int i=1;i<=m;i++){
		cin>>q[i].l>>q[i].r;
		q[i].id=i;
	}
	sort(ans+1,ans+1+n);
	sort(q+1,q+1+m);
	for (int i=1;i<=m;i++){
		int sum=0;
		int l=q[i].l,r=q[i].r;
		for (int i=l;i<=r;i++){
			int p=lower_bound(ans+1,ans+1+n,i)-ans;
			if(p<=n && ans[p]==i) sum++;continue;
		}
		res[q[i].id]=sum;
	}
	for (int i=1;i<=m;i++) cout<<res[i]<<"\n";
	return 0;
}
一半WA一半T。。如有指出真正问题者必关

回复

20 条回复,欢迎继续交流。

正在加载回复...