A题:
给你一个长度为 2n的序列,重排该序列使得前一半和不等于后一半和。无解输出 −1 。
题解
只有一种情况是无解,即序列所有数字相同,否则其他情况都是有解的,随意输出的话,排序就ok,必定会前一半不等于后一半。
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int main() 5 { 6 int n; 7 scanf("%d",&n); 8 int a[2010]; 9 for(int i=0;i<2*n;i++) 10 scanf("%d",&a[i]); 11 sort(a,a+2*n); 12 if(a[0]==a[2*n-1]) 13 printf("-1\n"); 14 else 15 { 16 for(int i=0;i<2*n;i++) 17 { 18 if(i!=2*n-1) 19 printf("%d ",a[i]); 20 else 21 printf("%d\n",a[i]); 22 } 23 } 24 return 0; 25 }
B题:
给你一个长度为 n 的序列 a1,…,an若 ai+aj为奇数你可以交换这两个数。求你能得到的字典序最小的序列。n≤10^5。
显然如果所有数都是奇数或偶数答案则为原数列。否则,由于对于两个奇偶性相同的数我们可以藉由一个奇偶性不同的点交换,所以答案输出为排序后的序列。
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int a[100010]; 5 int main() 6 { 7 int n,t; 8 scanf("%d",&n); 9 int sum1=0,sum2=0; 10 for(int i=0;i<n;i++){ 11 scanf("%d",&a[i]); 12 if(a[i]%2==0) 13 sum1++; 14 else 15 sum2++; 16 } 17 if(sum1==0||sum2==0) ; 18 else sort(a,a+n); 19 20 for(int i=0;i<n;i++){ 21 if(i!=n-1) 22 printf("%d ",a[i]); 23 else 24 printf("%d\n",a[i]); 25 } 26 return 0; 27 }
C题:
构造一个长度为 n-1 的序列a2,a3,a4...an,使得任意下标互质的两个位置的数不等且最大值尽可能小。n≤10^5
采用筛法思想
我们用n=15举例:
下标: 2,3,4,5, 6, 7, 8, 9, 10,11, 12, 13, 14, 15
a[i]值: 1 2 1 3 1 4 1 2 1 5 1 6 1 2
我们从下标为2看,把2的倍数标记一下,这样的话下标为2,4,6,8,10,12,14都将被标记,这些数都不是互质的,那么这些数可以相等,既然值要最小,那就定为1
然后看下标为3,把3的倍数标记一下,这样的话下标为3,9,15都将被标记,这些数都不是互质的,那么这些数可以相等,因为下标互质的两个数值不能相等,那又因为这些数是存在与二的倍数互质,就定为2
类推。。。
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int main() 5 { 6 int n; 7 scanf("%d",&n); 8 int x=0; 9 int p[100010]; 10 for(int i=0;i<=n;i++) 11 p[i]=0; 12 for(int i=2;i<=n;i++) 13 { 14 if(p[i]!=0) 15 continue; 16 p[i]=++x; 17 int j=i*2; 18 while(j<=n) 19 { 20 if(p[j]==0) 21 p[j]=x; 22 j+=i; 23 } 24 } 25 for(int i=2;i<=n;i++) 26 cout<<p[i]<<" "; 27 cout<<endl; 28 }
错误点:
1.x++与++x的使用问题错误:
x++数据: 错误
15
1 2 2 3 2 4 2 3 2 5 2 6 2 3
++x数据: 正确
15
1 2 1 3 1 4 1 2 1 5 1 6 1 2
分析:p[i]=x++,在这一步x是自加的,但p[i]的值是没有加p[i]自加的1,而后面的数据a[i]=x,这里的x是已经自加过的x,所以数据不同。
D题:
给你 n,x,构造一个尽可能长的每个数 ≤2n的序列使得不存在子段的异或和为 0或 x 。1≤n≤18,1≤x<218
Codeforces Round #563 (Div. 2) 题解
原文:https://www.cnblogs.com/Aiahtwo/p/10975138.html