题目链接:

hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5646

bc:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=680&pid=1002

DZY Loves Connecting

Accepts: 16     Submissions: 169

Time Limit: 4000/2000 MS (Java/Others)

Memory Limit: 262144/262144 K (Java/Others)

问题描述

DZY有一棵nn个结点的无根树,结点按照1\sim n1∼n标号。

DZY喜欢树上的连通集。一个连通集SS是由一些结点组成的集合,满足SS中任意两个结点u,vu,v能够用树上的路径连通,且路径上不经过SS之外的结点。显然,单独一个结点的集合也是连通集。

一个连通集的大小定义为它包含的结点个数,DZY想知道所有连通集的大小之和是多少。你能帮他数一数吗?

答案可能很大,请对10^9 + 710​9​​+7取模后输出。

输入描述

第一行tt,表示有tt组数据。

接下来tt组数据。每组数据第11行一个数nn。第2\sim n2∼n行中,第ii行包含一个数p_ipi​​,表示ii与p_ipi​​有边相连。(1\le p_i \le i-1,2\le i\le n1≤pi​​≤i−1,2≤in)

(n\ge 1n≥1,所有数据中的nn之和不超过200000200000)

输出描述

每组数据输出一行答案,对10^9 + 710​9​​+7取模。

输入样例

2

1

5

1

2

2

3

输出样例

1

42

Hint

第二个样例中,树的4条边分别为(1,2),(2,3),(2,4),(3,5)。所有连通集分别是{1},{2},{3},{4},{5},{1,2},{2,3},{2,4},{3,5},{1,2,3},{1,2,4},{2,3,4},{2,3,5},{1,2,3,4},{1,2,3,5},{2,3,4,5},{1,2,3,4,5}。

If you need a larger stack size,

please use #pragma
comment(linker, "/STACK:102400000,102400000") and submit your
solution using C++.

题解:

注:sum(a,k)表示以a为首项,项数为k的等差数列和(差值为1)

首先判断可行性:

如果sum(1,k)>n,那么明显无法将n划分成k个不同的数。

其次探究最优解的性质:

由于当1<=a<=b-2的时候有ab<(a+1)(b-1),所以当k个数连续或只有一个长度为1的空隙的时候得到最优解。

求解最优值:

  设由a开始的k个数为解,则有(a+a+k-1)*k/2==n,所以a>=(int)( ( (n*2.0/k)+1-k)/2),经过调整可求得a',使得sum(a'-1,k) <=n<sum(a',k)。这样只要将数列sum(a',k)的前(sum(a',k)-n)项向左移一位即可求得最优解对应的数列。由sum(1,k)<=n得k<=sqrt(n),可对这个数列暴力求积。

代码:

 #include<iostream>
#include<cstdio>
#define SUM(a,k) ((a * 2 + k - 1)*k / 2)
using namespace std; typedef long long LL;
const int mod = 1e9 + ; LL n, k; int main() {
int tc;
scanf("%d", &tc);
while (tc--) {
scanf("%lld%lld", &n, &k);
if (n < ( + k)*k / ) {
printf("-1\n");
continue;
}
LL a = (LL)((n * * 1.0 / k + - k) / );
while (SUM(a, k) <= n) a++;
LL adj = SUM(a, k) - n;
LL ans = ;
for (int i = ; i < k; i++) {
if (i < adj) {
ans *= (a + i - );
}
else {
ans *= (a + i);
}
ans %= mod;
}
printf("%lld\n", ans);
}
return ;
}

HDU 5646 DZY Loves Partition的更多相关文章

  1. HDU 5646 DZY Loves Partition 数学 二分

    DZY Loves Partition 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5646 Description DZY loves parti ...

  2. hdu 5646 DZY Loves Partition 二分+数学分析+递推

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5646 题意:将n分成k个正整数之和,要求k个数全部相同:并且这k个数的乘积最大为多少?结果mod 1e^9 ...

  3. hdu-5646 DZY Loves Partition(贪心)

    题目链接: DZY Loves Partition Time Limit: 4000/2000 MS (Java/Others)     Memory Limit: 262144/262144 K ( ...

  4. HDU 5645 DZY Loves Balls 水题

    DZY Loves Balls 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5645 Description DZY loves playing b ...

  5. hdu 5195 DZY Loves Topological Sorting 线段树+拓扑排序

    DZY Loves Topological Sorting Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/sho ...

  6. hdu 5195 DZY Loves Topological Sorting BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]

    传送门 DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131 ...

  7. hdu.5195.DZY Loves Topological Sorting(topo排序 && 贪心)

    DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 ...

  8. 数据结构(线段树):HDU 5649 DZY Loves Sorting

    DZY Loves Sorting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Oth ...

  9. HDU 5194 DZY Loves Balls

    DZY Loves Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

随机推荐

  1. jQuery|简单tab栏切换

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 百度云虚拟主机BCH安装PHP框架CodeIgniter

    百度云虚拟主机BCH官方未支持CodeIgniter框架,本人参加php中文网活动获取一百度云虚拟主机,本人选的ThinkPHP版,但本人喜欢CodeIgniter框架,因此尝试在该主机上配置Code ...

  3. [示例] Firemonkey 面包屑导航

    原码下载:[示例]Firemonkey面包屑导航_Aone.zip 效果:(以下效果不用写一行代码)

  4. CentOS6安装各种大数据软件 第一章:各个软件版本介绍

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  5. MySQL数据库实验:任务一 创建数据库和表

    目录 任务一 创建数据库和表 [实训目的与要求] [实训原理] [实训步骤] 一.熟悉MySQL环境 二.利用MySQL命令行窗口创建数据库及表 三.利用界面工具创建数据库及表 任务一 创建数据库和表 ...

  6. Spark异常:A master URL must be set in your configuration处理记录

    问题描述:    项目中一位同事提交了一部分代码,代码分为一个抽象类,里面含有sparkcontent,sparkSession对象:然后又三个子类实例化上述抽象类,这三个子类处理三个任务,最后在同一 ...

  7. 【 C 】字符串常量

    当一个字符串常量出现在表达式中时,它的值是个指针常量.编译器把这些指定字符的一份拷贝存储在内存的某个位置,并存储一个指向第一个字符的指针.但是,当数组名用于表达式中时,它们的值也是个指针常量.我们可以 ...

  8. 前端chrome调试

    Resources标签页 Resources标签页可以查看到请求的资源情况,包括CSS.JS.图片等的内容.也可以设置各种断点.对存储的内容进行编辑然后保存也会实时的反应到页面上. 几个常用的断点快捷 ...

  9. 安装虚拟机与初触linux心得

    安装虚拟机与初触linux心得 安装虚拟机 不知道是电脑问题还是软件问题,我安装虚拟机的过程异常坎坷,首先我在官网,360,太平洋等地方下载的virtualbox5.0以后的软件普遍有问题,问题是打不 ...

  10. 20155203 2016-2017-3 《Java程序设计》第4周学习总结

    20155203 2016-2017-3 <Java程序设计>第4周学习总结 教材学习内容总结 1.父类和子类类似于集合和元素,不同的地方是子类可以拓展(extends)父类之外的方法. ...