openjudge7834:分成互质组 解析报告
7834:分成互质组
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?
-
输入
- 第一行是一个正整数n。1 <= n <= 10。
第二行是n个不大于10000的正整数。 - 输出
- 一个正整数,即最少需要的组数。
- 样例输入
-
6
14 20 33 117 143 175 - 样例输出
-
3
- 来源
- 2008年第十三届“华罗庚金杯”少年数学邀请赛 决赛第5题
- 分析:
- 这道题其实可以用DFS 加上染色的感觉。对每个数据往上判断如果不互质,那么就不能加入那个不互质的小组。还有一种可能就是自己创建一个小组.(当然可以用最优性剪枝)。
- 先发出来这段代码,还是很好理解的。
#include<cstdio>
#include<algorithm>
#include<string.h>
using namespace std;
int n,line[15],edge[15][15],color[15],visit[15][15],ans=20,cnt;
int DFS(int x)
{
if(x>n){
if(ans>cnt)ans=cnt;
return 0;
}
memset(visit[x],1,sizeof(visit[x]));
for(int i=1;i<x;++i)
{
if(edge[i][x])continue;
visit[x][color[i]]=0;
}
for(int i=1;i<=cnt;++i)
{
if(visit[x][i]){
color[x]=i;
DFS(x+1);
}
}
if(cnt<ans){
++cnt;
color[x]=cnt;
DFS(x+1);
--cnt;
}
return 0;
}
int gcd(int a,int b)
{
return a%b==0 ? b:gcd(b,a%b);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%d",&line[i]);
}
for(int i=1;i<=n;++i)
{
for(int j=i+1;j<=n;++j)
{
if(gcd(line[i],line[j])==1)
{
edge[i][j]=edge[j][i]=1;
}
}
}
color[1]=1;
++cnt;
DFS(2);
printf("%d",ans);
return 0;
}
openjudge7834:分成互质组 解析报告的更多相关文章
- 【noi 2.5_7834】分成互质组(dfs)
有2种dfs的方法: 1.存下每个组的各个数和其质因数,每次对于新的一个数,与各组比对是否互质,再添加或不添加入该组. 2.不存质因数了,直接用gcd,更加快.P.S.然而我不知道为什么RE,若有好心 ...
- 若a与m互质,则a不影响m的完全剩余组
[若a与m互质,则a不影响m的完全剩余组] 设t通过m的完全剩余组,若at不通过m的完全剩余组, 则会有at1=at2(mod m),即a(t1-t2)|m. 因为(a,m)=1,所以(t1-t2)| ...
- C互质个数
C互质个数 Time Limit:1000MS Memory Limit:65536K Total Submit:55 Accepted:27 Description 贝贝.妞妞和康康都长大了,如今 ...
- Hello Kiki(中国剩余定理——不互质的情况)
Hello Kiki Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- UVA12493 - Stars(求1-N与N互质的个数)欧拉函数
Sample Input 3 4 5 18 36 360 2147483647 Sample Output 1 1 2 3 6 48 1073741823 题目链接:https://uva.onlin ...
- X问题(中国剩余定理+不互质版应用)hdu1573
X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdu 5072 两两(不)互质个数逆向+容斥
http://acm.hdu.edu.cn/showproblem.php?pid=5072 求n个不同的数(<=1e5)中有多少组三元组(a, b, c)两两不互质或者两两互质. 逆向求解,把 ...
- hdu 1573 X问题 两两可能不互质的中国剩余定理
X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Desc ...
- hdu X问题 (中国剩余定理不互质)
http://acm.hdu.edu.cn/showproblem.php?pid=1573 X问题 Time Limit: 1000/1000 MS (Java/Others) Memory ...
随机推荐
- TypeScript之接口类型
Interfaces 作为TypeScript中的核心特色之一,能够让类型检查帮助我们知道一个对象应该有什么,相比我们在编写JavaScript的时候经常遇到函数需要传递参数,可能在编写的时候知道这个 ...
- 软件工程day8
设计出一份demo.上报于组,等待修改意见. 色调为黑白灰,图像也很简洁,符合“快捷查询工具”的主题.
- Android 开发必备知识:我和 Gradle 有个约会
腾讯Bugly特约作者:霍丙乾 0.讲个故事 0.1 Ant,我还真以为你是只蚂蚁 真正开始近距离接触编程其实是在2012年,年底的时候带我的大哥说,咱们这个 app 发布的时候手动构建耗时太久,研究 ...
- [PCB设计] 1、硬件原理图设计规范(一)——基本原则
1.1 目的 原理图设计是产品设计的理论基础,设计一份规范的原理图对设计PCB.跟机.做客户资料具有指导性意义,是做好一款产品的基础.原理图设计基本要求: 规范.清晰.准确.易读. 因此制定此< ...
- 换个角度理解云计算之MapReduce
上一篇简单讲了一下HDFS,简单来说就是一个叫做“NameNode”的大哥,带着一群叫做“DataNode”的小弟,完成了一坨坨数据的存储,其中大哥负责保存数据的目录,小弟们负责数据的真正存储,而大哥 ...
- js数组转json
function arrayToJson(o) { var r = []; if (typeof o == "string") return "\"" ...
- Android开发学习之路-回调实现Service向activity传递数据
开启服务的时候,如果我们是通过bindService来绑定服务并且要向服务传递数据,可以直接在Intent中设置bundle来达到效果,但是如果是我们需要从服务中返回一些数据到Activity中的时候 ...
- sql分组(orderBy、GroupBy)获取每组前一(几)条数据
sql数据库实现分组并取每组的前1(几)条数据 测试数据准备工作: 根据某一个字段分组取最大(小)值所在行的数据: 创建表并且插入数据 ),Val )) , 'a1--a的第一个值') , 'b2b2 ...
- vuejs学习网站推荐
vuejs学习网站推荐 https://coligo.io/
- linux安装locust
linux安装locust 1. 安装epel扩展源(目的是为了在安装Pip时不出现一堆乱七八糟的错误信息) EPEL(http://fedoraproject.org/wiki/EPEL) 是由 F ...