#include<bits/stdc++.h>usingnamespace std;constint N =1e6+7;int n,k;int a[N];intmain(){int t;
cin>>t;while(t--){
cin>>n>>k;for(int i =0; i < n ; i ++) cin>>a[i];sort(a,a+n);int tmp = a[0];int res =0;int flag =1;for(int i =1; i < n ; i ++){if(a[i]> k){
flag =0;break;}
res +=(k-a[i])/tmp;}if(flag) cout<<res<<endl;else cout<<0<<endl;}return0;}
#include<bits/stdc++.h>#define int long longusingnamespace std;constint N =1e6+7;constint mod =1e9+7;int n,k;int a[N];
map<int,int> mp;
map<int,int> res;struct node{int x;int id;}b[N];boolcmp(node a1,node a2){return a1.id <a2.id;}signedmain(){int t;
cin>>t;while(t--){
mp.clear();
res.clear();
cin>>n>>k;for(int i =0; i < n ; i ++) cin>>a[i];for(int i =0; i < n ; i ++){
mp[a[i]]++;
b[i].id = i;
b[i].x = a[i];}for(int i =0; i < n ; i ++){if(res[b[i].x]){continue;}if(mp[k-b[i].x]){
mp[b[i].x]=0;
res[b[i].x]=1;}else{
mp[b[i].x]=0;
res[b[i].x]=2;}}for(int i =0; i < n ; i ++){
cout<<res[a[i]]-1<<" ";if(a[i]+a[i]== k){
res[a[i]]= res[a[i]]==2?1:2;}}
cout<<endl;}return0;}
#include<bits/stdc++.h>#define int long longusingnamespace std;constint N =1e6+7;constint mod =1e9+7;int n,k;int a[N];
map<int,int> mp;int minn[N];int cnt[N];int last[N];
vector<int> vt[N];int res[N];signedmain(){int t;
cin>>t;while(t--){
cin>>n;
mp.clear();for(int i =1; i <= n ; i ++){
vt[i].clear();
cnt[i]=0;
mp[i]=0;
minn[i]=0;
last[i]=0;}for(int i =1; i <= n ; i ++){
cin>>a[i];
cnt[a[i]]++;
minn[a[i]]= n-i+1;}for(int i =1; i <= n ; i ++){if(cnt[a[i]]==1){
minn[a[i]]=max(minn[a[i]],i);continue;}if(!mp[a[i]]){
minn[a[i]]=max(minn[a[i]],i);
mp[a[i]]= i;}else{
minn[a[i]]=max(minn[a[i]],i-mp[a[i]]);
mp[a[i]]= i;}}for(int i =1; i <= n ; i ++){
vt[minn[a[i]]].push_back(a[i]);}for(int i =1; i <= n ; i ++){if(vt[i].size()==0){
res[i]=-1;continue;}sort(vt[i].begin(),vt[i].end());
res[i]= vt[i][0];}for(int i =2; i <= n ; i ++){if(res[i-1]!=-1){if(res[i]!=-1){
res[i]=min(res[i],res[i-1]);}else{
res[i]= res[i-1];}}}for(int i =1; i <= n ; i ++) cout<<res[i]<<" ";
cout<<endl;}return0;}
#include<bits/stdc++.h>#define int long longusingnamespace std;constint N =1e6+7;constint mod =1e9+7;int n,k;int a[N];struct node{int i,j,w;node(int a,int b,int c){
i = a;
j = b;
w = c;}};
vector<node> vt;signedmain(){int t;
cin>>t;while(t--){
vt.clear();
cin>>n;int sum =0;for(int i =1; i <= n ; i ++){
cin>>a[i];
sum += a[i];}if(sum%n !=0){
cout<<-1<<endl;continue;}int ave = sum/n;//cout<<sum<<" "<<ave<<endl;for(int i =2; i <= n; i ++){if(a[i]%i){
vt.push_back(node(1,i,i-a[i]%i));}
vt.push_back(node(i,1,(a[i]+i-1)/i));}for(int i =2; i <= n; i ++){
vt.push_back(node(1,i,ave));}
cout<<vt.size()<<endl;for(int i =0; i < vt.size(); i ++){
cout<<vt[i].i<<" "<<vt[i].j<<" "<<vt[i].w<<endl;}}return0;}
#include<iostream>#include<bits/stdc++.h>#include<unordered_map>#define int long long#define mk make_pair#define gcd __gcdusingnamespace std;constdouble eps =1e-10;constint mod =1e9+7;constint N =5e6+7;int n,m,k,t =1,cas =1;int a[N],b[N];int sz[N];int tree[N][2];int tot =0;int dp[N][2];voidinsert(int x){int pos =0;for(int i =30; i >=0; i --){int tmp =(x >> i )&1;if(!tree[pos][tmp]) tree[pos][tmp]=++tot;
dp[i][tmp^1]+= sz[tree[pos][tmp^1]];
pos = tree[pos][tmp];
sz[pos]++;}}signedmain(){
cin>>n;for(int i =0; i < n; i ++){int x;cin>>x;insert(x);}int res =0,cnt =0;;for(int i =30; i >=0; i--){if(dp[i][1]> dp[i][0]) res +=(1LL<<i),cnt += dp[i][0];else cnt += dp[i][1];}
cout<<cnt<<" "<<res<<endl;return0;}
A. Copy-paste题意:一个数组,可以选择任意一个值加上另外一个值,当数组中有数大于k时停止。问,最多总共能操作多少次。思路:大水题,排序,选最小的一直加就好了AC代码:#include <bits/stdc++.h>using namespace std;const int N = 1e6+7;int n,k;int a[N]; int main(){ int t; cin>>t; while(t--){ ci