社区讨论
自闭儿童求助qwq
题目总版参与者 3已保存回复 9
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @mi85xo0k
- 此快照首次捕获于
- 2025/11/21 09:09 4 个月前
- 此快照最后确认于
- 2025/11/21 09:09 4 个月前
一个简单的二分问题
二分之前的都没有锅
正常枚举答案是对的
不过一改成二分就炸
具体就是在a_b数组里面寻找c_d的值
如果找到就ans++
求dalao帮忙看看趴
详见代码:
CPP二分之前的都没有锅
正常枚举答案是对的
不过一改成二分就炸
具体就是在a_b数组里面寻找c_d的值
如果找到就ans++
求dalao帮忙看看趴
详见代码:
#include<bits/stdc++.h>
#define maxn 4010
using namespace std;
inline int read(){
int x=0,t=1; char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if(ch=='-') t=-1,ch=getchar();
while(ch<='9'&&ch>='0') x=x*10+ch-48,ch=getchar();
return x*t;
}
int n,ans;
int a[maxn],b[maxn],c[maxn],d[maxn];
int a_b[maxn*maxn],cnt;
int c_d[maxn*maxn],cnt_now;
int main(){
n=read();
for(register int i=0;i<n;++i){
scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
}
for(register int i=0;i<n;++i){
for(register int j=0;j<n;++j){
a_b[cnt]=a[i]+b[j];
c_d[cnt]=-(c[i]+d[j]);
cnt++;
}
}
sort(a_b,a_b+n*n);
for(register int i=0;i<cnt;++i){
int l=0,r=n*n;
while(l<r){
int mid=(l+r)>>1;
if(c_d[i]==a_b[mid]){ans++; break;}
if(c_d[i]<a_b[mid]) l=mid+1;
else r=mid;
}
}
printf("%d",ans);
return 0;
}
顺便捞一发沉贴
这里
这里
回复
共 9 条回复,欢迎继续交流。
正在加载回复...