CF 337E(Divisor Tree-枚举树节点的父亲)
来源:互联网 发布:ubuntu 移除源 编辑:程序博客网 时间:2024/04/28 09:29
NOI就因为这个少拿10分了啊。。。现在又因为这个掉Rating了吖囧。。。。
首先明确一点——O(n!) 在n≤10时可过,O(2^n)在n≤20时可过。。。
然后枚举树(都懂得。。)
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<functional>#include<iostream>#include<cmath>#include<cctype>#include<ctime>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define ForD(i,n) for(int i=n;i;i--)#define RepD(i,n) for(int i=n;i>=0;i--)#define Forp(x) for(int p=pre[x];p;p=next[p])#define Lson (x<<1)#define Rson ((x<<1)+1)#define MEM(a) memset(a,0,sizeof(a));#define MEMI(a) memset(a,127,sizeof(a));#define MEMi(a) memset(a,128,sizeof(a));#define INF (2139062143)#define F (100000007)#define MAXN (8+10)long long mul(long long a,long long b){return (a*b)%F;}long long add(long long a,long long b){return (a+b)%F;}long long sub(long long a,long long b){return (a-b+(a-b)/F*F+F)%F;}typedef long long ll;int n,fa[MAXN]={0},p[MAXN]={0};ll a[MAXN],a2[MAXN],ans=INF;void dfs(int l){if (l==n+1){//For(i,n) cout<<a2[i]<<' ';cout<<endl;//For(i,n) cout<<fa[i]<<' ';cout<<endl;ll tot=0;For(i,n) if (!((!p[i])&&fa[i])) tot++; bool b=0;For(i,n-1) if (!fa[i]) {b=1;break;}tot+=b;For(i,n) tot+=p[i]*!(bool)fa[i];ans=min(ans,tot);//cout<<tot<<endl;/*if (tot==9) {cout<<'d';}*/return;}fa[l]=0;dfs(l+1);Fork(i,l+1,n) if (a2[i]%a[l]==0) fa[l]=i,a2[i]/=a[l],dfs(l+1),a2[i]*=a[l];}int main(){//freopen("Divisor.in","r",stdin);cin>>n;For(i,n) cin>>a[i];sort(a+1,a+1+n);For(i,n) {ll x=a[i];for(ll j=2;j*j<=x;j++)while (x%j==0) p[i]++,x/=j;if (x>1) p[i]++,x=1;if (p[i]==1) p[i]--;}memcpy(a2,a,sizeof(a));dfs(1);cout<<ans<<endl;return 0;}
- CF 337E(Divisor Tree-枚举树节点的父亲)
- codeforce 337E-divisor tree
- Codeforces 337E Divisor Tree 暴搜
- codeforces 337E Divisor Tree (dfs)
- codeforces 337E E. Divisor Tree(数论+贪心)
- 贪心+容斥原理-337E. Divisor Tree
- CF 23E(Tree-树-背包合并)
- TP实现找父亲节点的树
- CF 260E Dividing Kingdom(枚举+线段树)
- CF 434E 圣诞树(tree)
- 思路题,树的直径(Anton and Tree,cf 734E)
- CF 258E Little Elephant and Tree(DFS+线段树)
- [LeetCode]235 二叉查找树的最近公共父亲节点
- [LeetCode]236 二叉树的最近公共父亲节点
- CF 294E Shaass the Great【Tree】
- cf 324e Xenia and Tree
- CF 342E Xenia and Tree(分块)
- CF 463E Caisa and Tree (模拟)
- CURL抓取网页时出现的问题
- 字符串被截断时是否会造成内存泄露
- IOS开发之----常用加密方法(AES、MD5、Base64)
- Convert函数在SQL中转换日期
- ajax学习笔记二
- CF 337E(Divisor Tree-枚举树节点的父亲)
- 链表操作的测试
- 序列化之:事件不可序列化
- CNGI高校驻地网IPv6用户数量排名
- SQL中得到刚刚插入的数据的id
- 块I/O层(I/O调度)
- HDU4148+找规律
- 二分图匹配
- Android设置网络图片为手机背景图片的方法