社区讨论
12pts求hack
P8656[蓝桥杯 2017 国 B] 对局匹配参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mi0v9wx8
- 此快照首次捕获于
- 2025/11/16 06:37 3 个月前
- 此快照最后确认于
- 2025/11/17 09:11 3 个月前
CPP
//#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define re register
#define lb long double
#define il inline
#define endl '\n'
#define ull unsigned long long
#define llt __int128
#define gcd(x,y) __gcd(x,y)
#define lcm(x,y) ((x)*(y)/(gcd(x,y)))
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fff(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout);
#define ls (k<<1)
#define rs (k<<1|1)
#define umap unordered_map
#define uset unordered_set
#define mmap multimap
#define mset multiset
#define pb push_back
#define pii pair<int,int>
#define pll pair<long long,long long>
#define psi pair<string,int>
#define psl pair<string,long long>
#define gc getchar
#define numpy(a,n) a+1,a+n+1
#define fi first
#define copy(a,b) memcpy(a,b,sizeof(a))
#define se second
#define clr(a) memset(a,0,sizeof(a))
#define mem(a,v) memset(a,v,sizeof(a))
#define lowbit(x) (x&(-x))
#define all(s) s.begin(),s.end()
#define mkp make_pair
#define maxi INT_MAX
#define maxl LONG_LONG_MAX
#define mini INT_MIN\
#define minl LONG_LONG_MIN
#define debug(x) cerr<<#x<<"="<<(x)<<'\n'
#define hmod 212370440130137957ll
#define sss "--------------------------------------------------"
//-----------------------------------------------------------------------------
const int N=1e5+5;
int a[N];
int n,k;
umap<int,int>mp;
struct node{
int data,num;
bool operator<(const node &s)const{
return s.data>data;
}
};
priority_queue<node>q;
vector<int>last;
signed main(){
// fff("")
IOS
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i],mp[a[i]]++;
if(k==0){
cout<<mp.size();
return 0;
}
int maxx=*max_element(numpy(a,n));
// cout<<maxx;
int minn=*min_element(numpy(a,n));
for(int i=minn;i<=maxx;i++){
if(mp[i]!=0){
q.push({mp[i],i});
}
}
ll ans=q.top().data;
last.pb(q.top().num);
q.pop();
while(!q.empty()){
auto [f1,f2]=q.top();
// cout<<f1<<" "<<f2<<endl;
bool f=1;
for(auto i:last){
if(abs(f2-i)==k){
f=0;
break;
}
}
if(f){
last.pb(f2);
ans+=f1;
// cout<<f2<<endl;
}
q.pop();
}
cout<<ans;
return 0;
}
//CODE BY tc291311 Luogu uid1340395 in VScode
回复
共 0 条回复,欢迎继续交流。
正在加载回复...