• Codeforces Round 889 (Div. 2)A~C1题解


    A. Dalton the Teacher 

    题目分析:

    模拟,写出两个就能找出规律:坐在自己位子上的小孩会不高兴,所以统计下来cnt

    发现cnt为奇数是(cnt+1)/2次就能换成要求,偶数就是cnt/2

    1. #include
    2. #pragma GCC optimize(3)
    3. #define INF 0x3f3f3f3f
    4. #define endl "\n"
    5. #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    6. typedef long long ll;
    7. using namespace std;
    8. const int N =2e5+7;
    9. int main(){IOS
    10. int t;cin>>t;
    11. while(t--)
    12. {
    13. ll cnt=0;
    14. int n;cin>>n;
    15. int x;
    16. for(int i=1;i<=n;i++)
    17. {cin>>x;
    18. if(x==i)cnt++;
    19. }
    20. if(cnt%2)
    21. {
    22. cout<<(cnt+1)/2<
    23. }else cout<2<
    24. }
    25. return 0;
    26. }

    B. Longest Divisors Interval

    题目分析:给你一个1e18大小的数n,让你 找出最长的连续数列满足这个数列每个都是n的除数

    1e18为long long 类型,假设l=1,r=26,long long 就会爆掉,所以,连续序列的长度最多不超过25,同理,越往后面,数字越大,也即只需要在1~25范围内找连续数列就行

    1. #include
    2. #pragma GCC optimize(3)
    3. #define INF 0x3f3f3f3f
    4. #define endl "\n"
    5. #define IOS ios::sync_with_stdio(false);cin.tie(0);
    6. typedef long long ll;
    7. using namespace std;
    8. const int N =2e5+7;
    9. int a[N];
    10. struct ss {
    11. int a,b;
    12. }stu[N];
    13. int main(){IOS
    14. int t;cin>>t;
    15. while(t--)
    16. {
    17. ll n;cin>>n;
    18. ll ans=0;
    19. for(int i=1;i<=25;i++){
    20. ll tmp=0;
    21. while(n%i==0){
    22. i++;
    23. tmp++;
    24. }
    25. ans=max(ans,tmp);
    26. }cout<
    27. }
    28. return 0;
    29. }

    C1. Dual (Easy Version) 

    题目分析:每次将 aj 加到 ai上,最终在不超过50次的操作下,使得整个序列变为不递减序列

    特殊情况:全正 or 全负 两种情况处理起来差不多,后加前 or 前加后  最多 19次操作

    其余情况不好处理,考虑往特殊情况上转,也即找到最大的数和最小的数相加,若小于零,则将最小的数加上全序列变为全负,否则变为全正,最多19次操作

    1. #include
    2. #pragma GCC optimize(3)
    3. #define INF 0x3f3f3f3f
    4. #define endl "\n"
    5. #define IOS ios::sync_with_stdio(false);cin.tie(0);
    6. typedef long long ll;
    7. using namespace std;
    8. typedef pair<int ,int >pii;
    9. const int N =2e5+7;
    10. int a[N];
    11. struct ss {
    12. int a,b;
    13. }stu[N];
    14. vectorans;
    15. int main(){IOS
    16. int t;cin>>t;
    17. while(t--)
    18. {
    19. int n;cin>>n;
    20. cin>>a[1];
    21. int mas=a[1];
    22. int mins=a[1];
    23. int masidx=1;
    24. int minsidx=1;
    25. for(int i=2;i<=n;i++)
    26. {
    27. cin>>a[i];
    28. if(a[i]>mas){
    29. mas=a[i];
    30. masidx=i;
    31. }
    32. if(a[i]
    33. mins=a[i];
    34. minsidx=i;
    35. }
    36. }
    37. if(mins+mas<0)
    38. {
    39. for(int i=1;i<=n;i++)
    40. {
    41. if(i!=minsidx){
    42. ans.push_back({i,minsidx});
    43. }
    44. }
    45. for(int i=n-1;i>=1;i--){
    46. ans.push_back({i,i+1});
    47. }
    48. }else {
    49. for(int i=1;i<=n;i++)
    50. {
    51. if(i!=masidx){
    52. ans.push_back({i,masidx});
    53. }
    54. }
    55. for(int i=2;i<=n;i++)
    56. {
    57. ans.push_back({i,i-1});
    58. }
    59. }
    60. cout<2-2<
    61. for(auto x:ans)
    62. {
    63. cout<" "<
    64. ans.pop_back();
    65. }
    66. }
    67. return 0;
    68. }

  • 相关阅读:
    不同的二叉搜索树
    软件测试月薪10K如何涨到30K,只有自动化测试能做到
    WPF入门教程系列三十 ——DataGrid验证
    每章一篇博客带你拿下吉林大学JAVAEE期末(一)
    如何在 SAP ABAP ALV 报表里以交通灯的方式显示某一列的值
    Python21天学习挑战赛Day(11)·爬虫入门知识(应用)
    如何安装TortoiseSVN并实现公网提交文件至本地SVN服务器?
    计算机网络原理
    数据库 -neo4j的基本操作
    LeetCode每日一题——1704. 判断字符串的两半是否相似
  • 原文地址:https://blog.csdn.net/Enjoy10ve/article/details/133362021