#include<bits/stdc++.h>#include<bits/extc++.h>#define oo INT_MAX#define ll long long#define db double#define mp(a, b) make_pair(a, b)#define met(a, b) memset(a, b, sizeof(a))#define maxn 200009#define _rep(i, a, b) for(int i = (a); i <= (b); ++i)#define _rev(i, a, b) for(int i = (a); i >= (b); --i)#define _for(i, a, b) for(int i = (a); i < (b) ;++i)usingnamespace std;usingnamespace __gnu_pbds;int a[maxn], b[3], n;intmain(){
ios::sync_with_stdio(0);int t;
cin >> t;while( t --){
cin >> n;_rep(i,1, n){
cin >> a[i];
b[a[i]%3]++;}int min3 =min(b[1], b[2]);//min3代表余数为1的数和余数为2的数相加能凑成3的最多有多少个
b[1]-= min3, b[2]-= min3;int ans = b[0]+ min3 + b[1]/3+ b[2]/3;met(b,0);
cout << ans << endl;}//system("pause");}
题意 :合并一些数,S.T.3的倍数最多策略: greedy:题目传送门#include<bits/stdc++.h>#include<bits/extc++.h>#define oo INT_MAX#define ll long long#define db double#define mp(a, b) make_pair(a, b)#define me...