ICPC Asia Nanning 2017题解

喜欢ヅ旅行 2023-08-17 16:26 134阅读 0赞

A. Abiyoyo

题意模拟题——超级大水题

J. Rearrangement

思考:该题是一个思维题,二维数组且只有两行,且数与数之间能交换的,观察案例寻找规律

思路:用a,b,c分别存数组余数为0,1,2的个数

为了相邻两个数不能被3整数,也就等价于相邻两个数的余数不能都为0 且 相邻两个数的余数不能是一个为1与一个为2




























1 0   0 2 2 2      
1 1 0   0 2 2      

我们用一个表模拟一下:

也就0与0必须为类似对角线的位置关系

1与2要被0隔开

ContractedBlock.gif ExpandedBlockStart.gif

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. using namespace std;
  5. int main()
  6. {
  7. int T;
  8. scanf("%d",&T);
  9. while(T--)
  10. {
  11. int n,x;
  12. int a=0,b=0,c=0;
  13. scanf("%d",&n);
  14. for(int i=0;i<2*n;i++)
  15. {
  16. scanf("%d",&x);
  17. if(x%3==0)
  18. a++;
  19. if(x%3==1)
  20. b++;
  21. if(x%3==2)
  22. c++;
  23. }
  24. if(a>n)
  25. printf("NO\n");
  26. else{
  27. if(a<=1)
  28. {
  29. if(b!=0&&c!=0)
  30. printf("NO\n");
  31. else
  32. printf("YES\n");
  33. }
  34. else if(a==2)
  35. {
  36. if(b%2==1&&c%2==1) //b,c为0也考虑了
  37. printf("YES\n");
  38. else
  39. printf("NO\n");
  40. }
  41. else
  42. {
  43. printf("YES\n");
  44. }
  45. }
  46. }
  47. }

转载于:https://www.cnblogs.com/Aiahtwo/p/11360184.html

发表评论

表情:
评论列表 (有 0 条评论,134人围观)

还没有评论,来说两句吧...

相关阅读