建网站平台,最近一周热点回顾,wordpress多语言网站,诏安县城乡建设局网站题面在这里#xff01; 锻炼脑子的小构造题。。。 一开始被 a[]30000 且 序列 gcd 1所困扰#xff0c;但是发现这并没有什么#xff0c;因为我接下来发现了一种总是能构造出 序列和是6的倍数的方案。 首先如果 n3 的话输出样例#xff0c;因为只有这种情况没法用我的方…题面在这里 锻炼脑子的小构造题。。。 一开始被 a[]30000 且 序列 gcd 1所困扰但是发现这并没有什么因为我接下来发现了一种总是能构造出 序列和是6的倍数的方案。 首先如果 n3 的话输出样例因为只有这种情况没法用我的方法构造。 否则考虑两个集合第一个集合 A 代表30000的所有偶数显然 |A| 15000 第二个集合 B 代表 30000的所有非偶数的3的倍数显然 |B| 5000。 神奇的发现 |A| |B| n可以取的最大值那么这种方案能否构造成功呢 设 i 为在B中取的元素个数 j 为在A中取的元素的个数那么i和j需要满足假设我们在每个集合都是从小到大取: 1. ij n 2. i5000 i是偶数; 3. j15000 j%3不等于1; 随便证一证都可以发现只要 n3 那么一定有解(不放心的话你甚至可以打表) #includebits/stdc.h
#define ll long long
using namespace std;bool v[30005];
int n,a[20005],t;int main(){scanf(%d,n);if(n3){ puts(2 5 63); return 0;}for(int i2;in;i2) if((n-i)15000i5000(n-i)%3!1){for(int j2,c1;j30000cin;j2,c) printf(%d ,j);for(int j3,c1;j30000ci;j3) if(j1) printf(%d ,j),c;break;}return 0;
}转载于:https://www.cnblogs.com/JYYHH/p/9301358.html