社区讨论
暴力,目标75分,为什么只有10pts?
P2119[NOIP 2016 普及组] 魔法阵参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m1prp03l
- 此快照首次捕获于
- 2024/10/01 09:36 去年
- 此快照最后确认于
- 2025/11/04 18:25 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
int n,m;
struct node{
int num,vis;
};
node x[40005];
bool cmp(node x,node y){
return x.num<y.num;
}
int mp[400005][5];
vector<int> s[400005];
int main(){
// freopen("test.in","r",stdin);
// freopen("test.out","w",stdout);
cin>>n>>m;
for (int i=1;i<=m;i++){
cin>>x[i].num;
x[i].vis=i;
s[x[i].num].push_back(i);
}
stable_sort(x+1,x+m+1,cmp);
for (int i=1;i<=m;i++){
for (int j=i+1;j<=m;j++){
if (x[i].num>=x[j].num) continue;
if (x[j].num-x[i].num%2==1) continue;
for (int k=j+1;k<=m;k++){
if ((x[j].num-x[i].num)*3>=(x[k].num-x[j].num)){
continue;
}
if (x[j].num==x[k].num) continue;
// for (int l=k+1;l<=m;l++){
// if (x[k].num==x[l].num) continue;
// if (x[j].num-x[i].num!=(x[l].num-x[k].num)*2) continue;
// mp[x[i].vis][1]++;
// mp[x[j].vis][2]++;
// mp[x[k].vis][3]++;
// mp[x[l].vis][4]++;
// }
int hi=(x[j].num-x[i].num)/2+x[k].num;//d
if (s[hi].size()==0) continue;
if (hi<=x[k].num) continue;
if ((hi-x[k].num)*2!=(x[j].num-x[i].num)) continue;
mp[x[i].vis][1]++;
mp[x[j].vis][2]++;
mp[x[k].vis][3]++;
for (int is=0;is<s[hi].size();is++){
mp[s[hi][is]][4]++;
}
// printf("%d %d %d %d\n",x[i].vis,x[j].vis,x[k].vis,hi);
}
}
}
for (int i=1;i<=m;i++){
for (int j=1;j<=4;j++){
cout<<mp[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...