Codeforces Round #257 (Div. 2) E题:Jzzhu and Apples 模拟
1 second
256 megabytes
standard input
standard output
Jzzhu has picked n apples from his big apple tree. All the apples are numbered from 1 to n.
Now he wants to sell them to an apple store.
Jzzhu will pack his apples into groups and then sell them. Each group must contain two apples, and the greatest common divisor of numbers of the apples in each group must be greater than 1. Of course, each apple can be part of at most one group.
Jzzhu wonders how to get the maximum possible number of groups. Can you help him?
A single integer n (1 ≤ n ≤ 105),
the number of the apples.
The first line must contain a single integer m, representing the maximum number of groups he can get. Each of the next m lines
must contain two integers — the numbers of apples in the current group.
If there are several optimal answers you can print any of them.
6
2
6 3
2 4
9
3
9 3
2 4
6 8
2
0
思路:这题刚開始确实想不到的。看了别人的解题报告才知道怎么搞。
由于仅仅要最大公约数>1。所以偶数的组合肯定能够。可是奇数的就有点难搞了。
假设用加倍的方法来组成一对的话那不是最多的情况。
可是多加两位就是最多的情况了,这是前20名的代码中的做法。
我没想明确。后面才感觉这得想到才行。由于奇数加两位之后为偶数的机率比較小,就不和偶数的组合情况反复了,然后又能够把奇数组合成一对。这太机智了。比赛的时候确实非常难想出来。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<bitset>
#define mem(a,b) memset(a,b,sizeof(a))
#define INF 1000000070000
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int vis[100005],is[100005];
vector<pair<int,int> >v;
int main()
{
int n,i,j;
cin>>n;
for(i=4;i<=n;i+=2)
vis[i]=1;
for(i=3;i<=n;i+=2)
{
if(!vis[i])
{
if(i*2>n) break;
vector<int>a;
for(j=i;j<=n;j+=2*i)
{
vis[j]=1;
if(!is[j]) a.push_back(j),is[j]=1;
}
for(j=a.size()-1;j>0;j-=2)
{
v.push_back(make_pair(a[j],a[j-1]));
is[a[j]]=is[a[j-1]]=1;
}
if(a.size()&1)
{
v.push_back(make_pair(a[0],a[0]*2));
is[a[0]]=is[a[0]*2]=1;
}
}
}
if(n&1) n--;
int x=0,y;
for(i=n;i>0;i-=2)
{
if(is[i]) continue;
if(!x) y=i,x=1;
else x=0,v.push_back(make_pair(i,y));
}
printf("%d\n",v.size());
for(i=0;i<v.size();i++)
printf("%d %d\n",v[i].first,v[i].second);
return 0;
}
Codeforces Round #257 (Div. 2) E题:Jzzhu and Apples 模拟的更多相关文章
- Codeforces Round #257 (Div. 2) D题:Jzzhu and Cities 删特殊边的最短路
D. Jzzhu and Cities time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Codeforces Round #257 (Div. 2) A题
A. Jzzhu and Children time limit per test 1 second memory limit per test 256 megabytes input standar ...
- Codeforces Round #257 (Div. 2 ) B. Jzzhu and Sequences
B. Jzzhu and Sequences time limit per test 1 second memory limit per test 256 megabytes input standa ...
- Codeforces Round #257 (Div. 1)A~C(DIV.2-C~E)题解
今天老师(orz sansirowaltz)让我们做了很久之前的一场Codeforces Round #257 (Div. 1),这里给出A~C的题解,对应DIV2的C~E. A.Jzzhu and ...
- Codeforces Round #378 (Div. 2) D题(data structure)解题报告
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...
- Codeforces Round #612 (Div. 2) 前四题题解
这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...
- Codeforces Round #713 (Div. 3)AB题
Codeforces Round #713 (Div. 3) Editorial 记录一下自己写的前二题本人比较菜 A. Spy Detected! You are given an array a ...
- Codeforces Round #552 (Div. 3) A题
题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...
- Codeforces Round #257(Div. 2) B. Jzzhu and Sequences(矩阵高速幂)
题目链接:http://codeforces.com/problemset/problem/450/B B. Jzzhu and Sequences time limit per test 1 sec ...
随机推荐
- PHP原生实现,校验微信公众号||小程序服务器地址
1.原生的.php文件: test.php <?php header('Content-type:text'); define("TOKEN", "weixin& ...
- springmvc最优化
java代码 package com.tgb.web.controller.annotation; import javax.servlet.http.HttpServletRequest; impo ...
- HDUOJ---2955 Robberies
Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding
Jquery ajax调用WCF服务 例子效果如下:原界面 点击按钮GetList get后,通过指定的Url获取数据添加到table 新建一个控制台项目,添加IContract.cs,DBServi ...
- C# partial 关键字详解
我们新建一个Windows Form时,后台代码都会自动添加如下代码: public partial class Form1 : Form { public Form1() { InitializeC ...
- 理解over()函数
1.1.两个order by的执行时机分析函数(以及与其配合的开窗函数over())是在整个sql查询结束后(sql语句中的order by的执行比较特殊)再进行的操作, 也就是说sql语句中的ord ...
- Python学习笔记010——形参与实参
在使用中忽略了一个问题,形参有些和实参类似,也不能是“关键字后面含有位置参数”,即“默认形参”后面必须不能含有“位置”形参! def test(a=100,b): print("test&q ...
- C#实现用Newtonsoft.Json 4.5.11解析人人网院校信息并获取院系信息
http://cfanz.cn/index.php?c=article&a=read&id=42444 http://files.cnblogs.com/lyl6796910/Wind ...
- GL_总账完整会计周期业务(流程)
2014-06-02 BaoXinjian
- OAF_OAF控件系列3 - AdvancedTable的实现(案例)
2014-06-02 Created By BaoXinjian