博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
count
阅读量:6264 次
发布时间:2019-06-22

本文共 855 字,大约阅读时间需要 2 分钟。

这里写图片描述

这里写图片描述
1s    256M
这题的解法好巧妙。
我们可以通过dfs来处理一个 f 数组。f[i]表示以i为根的子树有多少个节点。
那么当我们从1到n枚举每个块的大小时(n%i==0),然后扫一遍 f 数组,f[]为 i 的倍数的个数如果等于n/i,那么就是一种成功的方案。

#include
#include
#include
#define LL long long#define N 1000009using namespace std;int n,ans;int head[N],nxt[2*N],to[2*N],cnt;int f[N];//记录以i为根的子树有多少个节点 bool vis[N];void add(int x,int y){ to[++cnt]=y; nxt[cnt]=head[x]; head[x]=cnt;}int dfs(int x){ vis[x]=1; int tot=0; for(int i=head[x];i;i=nxt[i]) { if(!vis[to[i]]) { vis[to[i]]=1; tot+=f[to[i]]?f[to[i]]:f[to[i]]=dfs(to[i]); } } return tot+1;}bool check(int x){ int tot=0; for(int i=1;i<=n;i++) if(f[i]%x==0) tot++; return tot==(n/x);}int main(){ scanf("%d",&n); for(int i=1;i

转载于:https://www.cnblogs.com/dfsac/p/7587801.html

你可能感兴趣的文章
[SP694][SP705]DISUBSTR - Distinct Substrings/SUBST1 - New Distinct Substrings[SA]
查看>>
JavaScript中的三种弹窗
查看>>
确认框,confirm工具封装
查看>>
常用css和js组件
查看>>
HDU-4528 小明系列故事——捉迷藏 BFS模拟
查看>>
〖Android〗/system/etc/event-log-tags
查看>>
深入浅出 JavaScript 变量、作用域和内存 v 0.5
查看>>
Jquery 选择器大全 【转载】
查看>>
Java 之设计模式(总述)
查看>>
第二篇:zc706 基本外设及usb DEVICE模式测试过程
查看>>
数据集划分——train set, validate set and test set
查看>>
《大话设计模式》读书笔记-第7章 代理模式
查看>>
自定义类似@Required功能的注解
查看>>
多项式学习笔记
查看>>
jquery 随笔
查看>>
ElasticSearch集群安装配置
查看>>
区间调度问题
查看>>
Maven学习总结(14)——Maven 多模块项目如何分工?
查看>>
python 参数
查看>>
linux 源码安装详解
查看>>