80分dp求调
  • 板块P1978 集合
  • 楼主xxr___
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/20 17:44
  • 上次更新2024/1/20 20:32:41
查看原帖
80分dp求调
929151
xxr___楼主2024/1/20 17:44
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+1;
#define int long long 
int a[N];
int f[N][2];//f[i][1|0] 表示第i个数选或不选的最大值 
bool cmp(int x,int y){
	return x>y;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	int n,k;
	set<int> st;
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++){
		if(st.count(a[i]*k)){
			f[i][1]=f[i-1][1];
		}else{
			st.insert(a[i]);
			f[i][1]=f[i-1][1]+1;
		}
		f[i][0]=f[i-1][0];
	}
	cout<<max(f[n][0],f[n][1]);
	return 0;
}
2024/1/20 17:44
加载中...