题意简述:

给定一个长度为$n$的序列 将这个序列里的数两两求$gcd$得到$n^2$个数

将这$n^2$个数打乱顺序给出 求原序列的一种可能的情况

-----------------------------------------------------------------------------------------------------------------------

比赛时一直去想有什么特殊的性质(找规律) 比如这些数里为一个数的倍数的数一定是平方个

然而按照这样的思路去想又会有什么分解因式等等 最后直接在这一部分就T掉

-----------------------------------------------------------------------------------------------------------------------

比赛结束后$ dwj$ 给了我一份他的$AC$代码 发现原来是增量法的运用

我们先假设原序列是非严格递减的

我们把这些数排序后 设已经求得原序列前$k$项 并且把前$k$项相互之间的$gcd$得到的数全部删掉了

剩下来的最大的那个肯定是原序列中的$k+1$项

然后通过这个数和前$k$项的数$gcd$得到的数我们把它们全部删掉

剩下来的最大的那个肯定是原序列中的$k+2$项

…………

对于删数的操作 我们可以用优先队列来维护 然后这题就解决了

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int N=;
int a[N*N],ans[N];
int n,len;
priority_queue <int> q;
int main()
{
scanf("%d",&n);
int n2=n*n;
for(int i=;i<=n2;++i)
scanf("%d",&a[i]);
sort(a+,a++n2);
int i=n2;
while(i)
{
if(q.empty()||q.top()!=a[i])
{
for(int j=;j<=len;++j)
{
q.push(__gcd(ans[j],a[i]));
q.push(__gcd(ans[j],a[i]));
}
printf("%d ",ans[++len]=a[i]);
}
else
q.pop();
--i;
}
return ;
}

codeforces 582A GCD Table的更多相关文章

  1. codeforces 582A. GCD Table 解题报告

    题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com ...

  2. Codeforces 338D GCD Table 中国剩余定理

    主题链接:点击打开链接 特定n*m矩阵,[i,j]分值为gcd(i,j) 给定一个k长的序列,问能否匹配上 矩阵的某一行的连续k个元素 思路: 我们要求出一个解(i,j) 使得 i<=n &am ...

  3. codeforces 338D GCD Table

    什么都不会只能学数论QAQ 英文原题不贴了 题意: 有一张N*M的表格,i行j列的元素是gcd(i,j)读入一个长度为k,元素大小不超过10^12的序列a[1..k],问这个序列是否在表格的某一行中出 ...

  4. CodeForces - 583C GCD Table map的auto遍历 ,有点贪心的想法

    题意:给你n*n gcd表中的所有数(以任意顺序) ,求对角线上的n个数分别是什么.gcd表定义如下,先将n个数填在对角线的上,然后将各个格子填上对应对角线上的数的gcd值,也就是V[i][j]=gc ...

  5. Codeforces Round #323 (Div. 2) C. GCD Table 暴力

    C. GCD Table Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/583/problem/C ...

  6. Codeforces Round #323 (Div. 2) C. GCD Table map

    题目链接:http://codeforces.com/contest/583/problem/C C. GCD Table time limit per test 2 seconds memory l ...

  7. Codeforces Round #323 (Div. 2) C.GCD Table

    C. GCD Table The GCD table G of size n × n for an array of positive integers a of length n is define ...

  8. Codeforces Round #323 (Div. 1) A. GCD Table

    A. GCD Table time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  9. Codeforces 417E Square Table(随机算法)

    题目链接:Codeforces 417E Square Table 题目大意:给出n和m.要求给出一个矩阵,要求每一列每一行的元素的平方总和是一个平方数. 解题思路:构造.依照 a a a b a a ...

随机推荐

  1. POJ - 3176 Cow Bowling 动态规划

    动态规划:多阶段决策问题,每步求解的问题是后面阶段问题求解的子问题,每步决策将依赖于以前步骤的决策结果.(可以用于组合优化问题) 优化原则:一个最优决策序列的任何子序列本身一定是相当于子序列初始和结束 ...

  2. jQuery 动态添加、删除css样式

    1.addClass css中: <style type="text/css">       .chColor {background: #267cb7;color:w ...

  3. ArrayBlockingQueue使用

    阻塞与非阻塞: 阻塞: 阻塞调用是没有获得资源则挂起进程,被挂起的进程进入休眠状态,调用的函数只有在得到结果之后才返回,进程继续. 对象是否处于阻塞模式和函数是不是阻塞调用有很强的相关性,但并不是一一 ...

  4. SAS去空格

    data test;       x="  aaa     bbb hahaha";       x1=compress(x);       x2=left(x);       p ...

  5. 10、numpy——位运算

    NumPy 位运算 NumPy "bitwise_" 开头的函数是位运算函数. NumPy 位运算包括以下几个函数: 函数 描述 bitwise_and 对数组元素执行位与操作 b ...

  6. 【Linux】php7.2.8 + xdebug + composer + php代码覆盖率 + jenkins配置 (实操记录,亲测可用)

        [一.linux安装php 7.2.8] 1.wget http://nginx.org/download/nginx-1.9.9.tar.gz              # nginx可不安 ...

  7. Codeforces 208E. Blood Cousins

    传送门 题目大意: 小C喜欢研究族谱,这一天小C拿到了一整张族谱. 小C先要定义一下k-祖先. x的1-祖先指的是x的父亲 x的k-祖先指的是x的(k-1)-祖先的父亲 小C接下来要定义k-兄弟 x的 ...

  8. 如何优雅的实现DML批量操作

    如何优雅的实现DML批量操作(转载) 昨天处理了一个业务同学的数据需求,简单来说就是对一张大表做一下数据清理,数据量在8千万左右,需要保留近一个月的数据,大概是400万左右. 对于数据的删除处理,尤其 ...

  9. Identity MVC:UI

    基于原来做的cookie认证的代码:MvcCookieAuthSample 增加登陆和退出的方法: 增加Login和SignIn这两个Action方法. 在Views下面创建Account文件夹,然后 ...

  10. Linux统计文件内容

    wc:统计文件的行数.单词数.字节数(word count) - wc char.txt:统计出文件char.txt的换行符个数.单词数.字节数 (char.txx有14行.13个单词.66字节) - ...