• 5.7 每日一题题解


    序列排序Ⅱ

    涉及知识点:

    • 思维/暴力

    solution:

    • (题目要求相邻且互质的元素才可以互相交换,我们先不考虑相邻)
    • (假设n = 6,我们只列出来偶数的相对位置:)
    • (假设偶数的相对位置为2,6,4,因为6一定会和4相遇,那么无论如何都无法变成2,4,6)
    • (再次假设n = 6,我们只列出来3和6的位置:)
    • (假设3和6的相对位置为6,3,同理,无论如何都无法变成3,6)
    • (做法已经出来了,我们不需要考虑中间的状态,只需考虑能否转移到最终的状态:)
    • (问题转化成:对于第i个值,前面是否有和其不互质,且大于它的数,如果有,答案一定是No)
    • (那最暴力的做法,就是对于第i个值,求出它所有的因子,将因子作为参数比较)
    • (比如6和3,6的因子包括2,3和6,3的因子只有3,但是3作为因子已经在前面的6出现过,且6>3)

    std:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long 
    const int maxn = 100005;
    int flag[maxn];
    int main()
    {
    	int n,x;
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++){
    	    scanf("%d",&x);
    	    if(flag[x] > x){
                      printf("No
    ");
                      return 0;
                  }
                  flag[x] = x;
                  for(int j=2;j*j<=x;j++){
                      if(x%j == 0){
                          int k1 = j,k2 = x/j;
                          if(flag[k1] > x || flag[k2] > x){
        	                  printf("No
    ");
        	                  return 0;
        	              }
        	              flag[k1] = flag[k2] = x;
                      }
                  }
    	}
    	printf("Yes
    ");
    	return 0;
    }
    
  • 相关阅读:
    学生管理
    数据类型
    Linux安装、发布Django项目
    函数式编程
    学生管理系统
    mysql数据库工具类
    python操作数据库
    链接mysql建库建表
    列表元组字典集合
    内置对象相关方法
  • 原文地址:https://www.cnblogs.com/QFNU-ACM/p/12840883.html
Copyright © 2020-2023  润新知