hdu 3335 Divisibility-暴力
2015-10-18 16:04
337 查看
题意:
题意是说给你n个数,让你从中选出最多的数,满足够使得其两两之间不能整除
n只有1000;
直接暴力
第一个for 表示 如果选了第i个,最后最多呢个得到几个
第二个for表示 选了i后,能否选j,如果选了j ,则把与j冲突的都删掉,如果没选上,则跳过
第三个for 是删除掉所有与j冲突的
复杂度o(n^2)
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue>
#include <map>
#include <set>
#include <vector>
using namespace std;
__int64 tm[1006];
__int64 vis[1006];
__int64 tol[1006];
int max(int a,int b)
{return a<b?b:a;}
int main()
{
__int64 t;
scanf("%I64d",&t);
__int64 i,j,k;
__int64 n;
while(t--)
{
scanf("%I64d",&n);
for (i=1;i<=n;i++)
{
scanf("%I64d",&tm[i]);
}
sort(tm+1,tm+1+n);
for (i=1;i<=n;i++) //假如选了第i个
{
tol[i]=1;
memset(vis,0,sizeof(vis));
for(j=i+1;j<=n;j++)
{
if (vis[j]|| tm[j]%tm[i]==0 ) //与第i个冲突的就不能选
continue;
for (k=j+1;k<=n;k++)
{
if (tm[k]%tm[j]==0) //j与i不冲突,选了j,现在要把与j冲突的都删掉
vis[k]=1;
}
tol[i]++; //可以选第j个,那么选第i个的方案最后答案会加1
}
}
__int64 ans=tol[1];
for (i=1;i<=n;i++)
ans=max(tol[i],ans);
printf("%I64d\n",ans);
}
return 0;
}
题意是说给你n个数,让你从中选出最多的数,满足够使得其两两之间不能整除
n只有1000;
直接暴力
第一个for 表示 如果选了第i个,最后最多呢个得到几个
第二个for表示 选了i后,能否选j,如果选了j ,则把与j冲突的都删掉,如果没选上,则跳过
第三个for 是删除掉所有与j冲突的
复杂度o(n^2)
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue>
#include <map>
#include <set>
#include <vector>
using namespace std;
__int64 tm[1006];
__int64 vis[1006];
__int64 tol[1006];
int max(int a,int b)
{return a<b?b:a;}
int main()
{
__int64 t;
scanf("%I64d",&t);
__int64 i,j,k;
__int64 n;
while(t--)
{
scanf("%I64d",&n);
for (i=1;i<=n;i++)
{
scanf("%I64d",&tm[i]);
}
sort(tm+1,tm+1+n);
for (i=1;i<=n;i++) //假如选了第i个
{
tol[i]=1;
memset(vis,0,sizeof(vis));
for(j=i+1;j<=n;j++)
{
if (vis[j]|| tm[j]%tm[i]==0 ) //与第i个冲突的就不能选
continue;
for (k=j+1;k<=n;k++)
{
if (tm[k]%tm[j]==0) //j与i不冲突,选了j,现在要把与j冲突的都删掉
vis[k]=1;
}
tol[i]++; //可以选第j个,那么选第i个的方案最后答案会加1
}
}
__int64 ans=tol[1];
for (i=1;i<=n;i++)
ans=max(tol[i],ans);
printf("%I64d\n",ans);
}
return 0;
}
相关文章推荐
- HTML学习3:常用标签之文本标签
- ocp-492
- 浏览器 回车、F5、Ctrl+F5
- ocp-491
- Linux makefile 教程 非常详细,且易懂
- 51nod 1174 区间中最大的数 (线段树+RMQ)
- UI - DataBase
- 侧滑菜单 Drawerlayout navigationView
- 变量定义式——尽量延后定义时间
- Mongodb的Samus驱动
- java——递归调用
- BZOJ1968: [Ahoi2005]COMMON 约数研究
- hiredis之坑爹的异步调用
- Android通知之自定义通知、响应通知上自定义按钮和更新通知的实现
- ios开机启动引导页
- 从校园到工作的路(三)——那些java中的常见异常与错误
- 百度2016年软件测试开发工程师面经
- 延迟加载和插入视图
- makefile使用总结
- 使用HDFS API实现hadoop HDFS文件系统的基本操作