Codeforces Round #514 (Div. 2) C. Sequence Transformation
题目大意:给你一个n
从1,2,3......n这个序列中
依次进行以下操作:1 、求所有数的最大公因数,放入a序列里面
2 、任意删去一个元素
一直到序列为空
根据删除元素的不同,导致序列a的字典序可能不同
输出字典序最大的a序列
看到这题,首先我想到gcd的两个特性,首先gcd(a1,a2,a3,a4.....an) <= min(a1,a2,a3,a4...an);
其次 任意两个相邻的数 gcd等于1 gcd(4,5) == 1
回过头看序列 1 ,2 , 3 , 4 ,5 ,6 ,7 ,8
先举例8个数 首先,你这个开头的1不删除,你的gcd永远不可能超过1,所以我的第一个删除的原属就是这个1
其次,相邻两个数gcd等于1,为了让gcd尽早的大于1,那么对于3,5,7,我们都应该删除(这时候不能删除2,4,6,8,原因你可以自己思考)
那么就删除3,5,7这3个元素
序列中生下了2,4,6,8这4个元素
这时gcd == 2,那么你这个2不删的话,你的gcd永远不可能大于2,所以这个2,是要首先删除的,
剩下4,6,8这三个元素,类比上面的删除中间元素,删除6
剩下两个元素4,8 ,当序列中只剩下两个元素的时候,先输出两个数gcd,然后输出最大的数即可
总结一下就是:删除1,3,5,7。。。。。
删除2,6,10 ,14 。。。。。
删除4 ,12,20,28 .。。。。
当然上面讨论的都是偶数的情况,奇数的情况是否使用呢?
交给判题姬判断吧
其实奇数的情况和偶数的情况是一样的,无非就是1,2,3,4,5
删除1,剩下2,3,4,5
那么删2,4还是删3,5
推了几个例子发现删3,5比较好
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#include<vector>
#include<cstdio>
#include<cmath>
#include<map>
#include<set>
#include<string>
using namespace std;
#define ll long long
#define se second
#define fi first
#define oo 0x3fffffff
int arr[];
vector<int> q;
set<int> s;
int gcd(int a,int b)
{
return b == ? a:gcd(b,a%b);
}
int main()
{
int n;
scanf("%d",&n);
for(int i = ; i <= n; ++i)
{
arr[i] = i;
s.insert(i);
}
if(n == )
{
printf("1\n");
return ;
}
//if(n%2 == 0)
//{
int cnt = n;
int ans = ;
while(s.size() != )
{
for(int i = ans; i <= n && s.size() != ; i+=ans*)
{
//cout << i << endl;
printf("%d ",ans);
s.erase(i);
}
ans *= ;
}
set<int>::iterator it;
it = s.begin();
//it ++;
cout << gcd(*it,*(it++)) << " " ;
cout << *it << endl;
//}
return ;
}
Codeforces Round #514 (Div. 2) C. Sequence Transformation的更多相关文章
- Codeforces Round #514 (Div. 2) C. Sequence Transformation(递归)
C. Sequence Transformation 题目链接:https://codeforces.com/contest/1059/problem/C 题意: 现在有1~n共n个数,然后执行下面操 ...
- Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造
题意 给出一个1-n的集合 gcd 集合里面的所有数 得到的 一个 数 然后自己选择删去一个数 要使得到的数 构成的数列 的字典序最大 思路: gcd所有数 那gcd得到的数肯定要小于数 ...
- 贪心+构造 Codeforces Round #277 (Div. 2) C. Palindrome Transformation
题目传送门 /* 贪心+构造:因为是对称的,可以全都左一半考虑,过程很简单,但是能想到就很难了 */ /************************************************ ...
- Codeforces Round #514 (Div. 2)
目录 Codeforces 1059 A.Cashier B.Forgery C.Sequence Transformation D.Nature Reserve(二分) E.Split the Tr ...
- Codeforces Round #514 (Div. 2) D. Nature Reserve
http://codeforces.com/contest/1059/problem/D 最大值: 最左下方和最右下方分别有一个点 r^2 - (r-1)^2 = (10^7)^2 maxr<0 ...
- Codeforces Round #514 (Div. 2) E. Split the Tree(倍增+贪心)
https://codeforces.com/contest/1059/problem/E 题意 给出一棵树,每个点都有一个权值,要求你找出最少条链,保证每个点都属于一条链,而且每条链不超过L个点 和 ...
- Codeforces Round #514 (Div. 2):D. Nature Reserve(二分+数学)
D. Nature Reserve 题目链接:https://codeforces.com/contest/1059/problem/D 题意: 在二维坐标平面上给出n个数的点,现在要求一个圆,能够容 ...
- Codeforces Round #277 (Div. 2)---C. Palindrome Transformation (贪心)
Palindrome Transformation time limit per test 1 second memory limit per test 256 megabytes input sta ...
- Codeforces Round #277 (Div. 2)C.Palindrome Transformation 贪心
C. Palindrome Transformation Nam is playing with a string on his computer. The string consists o ...
随机推荐
- 一针见血tomcat
一针见血tomcat 一.Tomcat各组件认知 1 Tomcat架构说明 Tomcat是一个基于JAVA的WEB容器,其实现了JAVA EE中的 Servlet 与 jsp 规范,与Nginx ap ...
- android 开发 View _11_ xml动画
请大家尊重原创者版权,转载请标明出处:http://blog.csdn.net/harvic880925/article/details/39996643 谢谢! 一.概述 Android的anima ...
- win10 64位,家庭版,C++,ini配置说明
#include<windows.h> #include<iostream> #include <atlstr.h> using namespace std; ...
- hadoop distcp hdfs://ns1/aaa hdfs://ns8/bbb UnknownHostException: xxx 两个高可用(ha)集群间distcp 如何识别两个集群逻辑名称
在要执行distcp 的客户端配置添加 dfs.internal.nameservices 指local service 就是client 所在的hadoop 的逻辑名称 <!-- servic ...
- Linux-vim文本编辑器
[Vim文本编辑器] vim的三种模式:一般模式.编辑模式.命令模式. * 一般模式: 当你vim filename 编辑一个文件时,一进入该文件就是一般模式了.在这个模式下,你可以做的操作有,上下移 ...
- Unity shader 官网文档全方位学习(一)
转载:https://my.oschina.net/u/138823/blog/181131 摘要: 这篇文章主要介绍Surface Shaders基础及Examples详尽解析 What?? Sha ...
- 记账本,C,Github,service
package service; import java.util.Collections; import java.util.List; import dao.CategoryDAO; import ...
- 大数据入门到精通9-真正得wordcount
本章节实现一个真正得wordcount 得spark程序. 一.从本地获得一个数据集 val speechRdd= sc.parallelize(scala.io.Source.fromFile(&q ...
- Html利用CSS布局技巧
单列布局水平居中 水平居中的页面布局中最为常见的一种布局形式,多出现于标题,以及内容区域的组织形式,下面介绍四种实现水平居中的方法(注:下面各个实例中实现的是child元素的对齐操作,child元素的 ...
- 初学c# -- 开始学directx
这些天对directx有兴趣了,开始慢慢学,先学基础,找了好些资料,为毛都写的辣么长呢,学习精简下来就几行. 安装个directx sdk,在win10里面文件夹C:\Windows\Microsof ...