WalkOverATree

题意:给你一棵树,有个人在节点0,现在问你,这个人走L步,最多能访问多少个不同的节点,一个节点可以被走多次,但只算一次。

题解:这个问题的关键在于,每个点最多走两次,这是因为我要么一次性走到这个点,要么从这个点回去走其他的点,不可能出现走三次的情况,这里需要细想清楚。

那么我们可以得到这样的一个算法:枚举一条一次性走的路径,想象成主干道,这个主干道上连接有若干旁道,那么我可以访问这个旁道上的某些点,然后返回主干道,这些点我一共要用两倍的步数才能走完,因为要返回主干道,并且容易发现,这对任意一个旁道都是一样的。

设d[i]表示i离根节点的距离,ans是最终的答案,那么ans=max(ans,d[i]+1+min(n-d[i]-1,(L-d[i])/2))。

SumOverPermutations

题意:

有个奇葩,组合数学很渣,老师问他:无限个n种颜色的球放在n个有顺序的盒子中,每个盒子放一个,相邻盒子的球的颜色不同,有多少种方法。这个奇葩给了个奇葩的解答,他说这和放的顺序有关,比如有三个盒子,三种颜色的球,若放的顺序是 1 2 3,那么答案就是3×2×2,若放的顺序是 1 3 2,那么答案就是3×3×1。更一般的,他认为,若一个位置的左侧和右侧都被放了,那么现在有(n-2)种可能性,若只有一侧被放了,那么有(n-1)种可能性,若两侧都没放,那么有n种可能性。我们知道这是明显错误的,但是,题目就是问你,给你个n,这n!种放的顺序按照这个奇葩的算法得到的答案是多少。

题解:

令$dp[i]$表示$n$种颜色放在$i$个盒子中,答案是多少。那么转移就只有两种情况:

一种是将第$i$个球放在边界上,这种的转移是$dp[i]=2*dp[i-1]*(n-1)$,第一项的2表示左右两个边界,第二项$dp[i-1]$表示$i-1$时的情况,第三项$n-1$表示由于第$i$个球在边界,所以只乘$n-1$

另外一种是将第$i$个球放在中间某个位置,假设其左侧有$j$个球,那么转移必然是

$$dp[i]=\sum\limits_{j=1}^{i-2}C_{i-1}^j*dp[j]*dp[i-j-1]*(n-2)$$

所以总的转移是

$$dp[i]=(\sum\limits_{j=1}^{i-2}C_{i-1}^j*dp[j]*dp[i-j-1]*(n-2))+2*dp[i-1]*(n-1)$$

答案显然是$dp[n]$

long long dp[MAX_N];
long long mod=;
long long C[MAX_N][MAX_N]; class SumOverPermutations
{
public:
int findSum(int n)
{
C[][]=;
for(int i=;i<=n;i++)
for(int j=;j<=i;j++)
C[i][j]=(j==?:C[i-][j-]+C[i-][j])%mod;
dp[]=n%mod;
dp[]=n%mod*(n-)%mod*%mod;
for(int i=;i<=n;i++){
dp[i]=%mod*(n-)%mod*dp[i-]%mod;
for(int j=;j<=i-;j++)
dp[i]=(dp[i]+C[i-][j]%mod*dp[j]%mod*dp[i-j-]%mod*(n-)%mod)%mod;
}
return dp[n]%mod;
}
};

Topcoder SRM 666 DIV 1的更多相关文章

  1. TopCoder SRM 560 Div 1 - Problem 1000 BoundedOptimization & Codeforces 839 E

    传送门:https://284914869.github.io/AEoj/560.html 题目简述: 定义"项"为两个不同变量相乘. 求一个由多个不同"项"相 ...

  2. TopCoder SRM 667 Div.2题解

    概览: T1 枚举 T2 状压DP T3 DP TopCoder SRM 667 Div.2 T1 解题思路 由于数据范围很小,所以直接枚举所有点,判断是否可行.时间复杂度O(δX × δY),空间复 ...

  3. Topcoder SRM 656 (Div.1) 250 RandomPancakeStack - 概率+记忆化搜索

    最近连续三次TC爆零了,,,我的心好痛. 不知怎么想的,这题把题意理解成,第一次选择j,第二次选择i后,只能从1~i-1.i+1~j找,其实还可以从j+1~n中找,只要没有被选中过就行... [题意] ...

  4. [topcoder]SRM 646 DIV 2

    第一题:K等于1或者2,非常简单.略.K更多的情况,http://www.cnblogs.com/lautsie/p/4242975.html,值得思考. 第二题:http://www.cnblogs ...

  5. [topcoder]SRM 633 DIV 2

    第一题,http://community.topcoder.com/stat?c=problem_statement&pm=13462&rd=16076 模拟就可以了. #includ ...

  6. TopCoder SRM 596 DIV 1 250

    body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...

  7. Topcoder SRM 648 (div.2)

    第一次做TC全部通过,截图纪念一下. 终于蓝了一次,也是TC上第一次变成蓝名,下次就要做Div.1了,希望div1不要挂零..._(:зゝ∠)_ A. KitayutaMart2 万年不变的水题. # ...

  8. 【topcoder SRM 702 DIV 2 250】TestTaking

    Problem Statement Recently, Alice had to take a test. The test consisted of a sequence of true/false ...

  9. TopCoder SRM 639 Div.2 500 AliceGameEasy

    题意: 一个游戏有n轮,有A和B比赛,谁在第 i 轮得胜,就获得 i 分,给出x,y,问A得x分,B得y分有没有可能,如果有,输出A最少赢的盘数 解题思路: 首先判断n(n+1)/2 = (x+y)是 ...

随机推荐

  1. open()函数之文件操作

    #open() 文件操作 #打开文件的模式有: r,只读模式[默认] w,只写模式[不可读:不存在则创建:存在则清空内容:] x,只写模式[不可读:不存在则创建,存在则报错] a,追加模式[可读:不存 ...

  2. 菜鸟学Linux - 文件/文件夹的隐藏属性

    文件/文件夹居然还有隐藏属性?没错,隐藏属性对于文件/文件夹的安全很重要.好比如说,我们需要使用”鉴定符“来揭开装备的隐藏属性:在Linux中chattr/lsattr就是“鉴定符”. chattr基 ...

  3. COGS:313. [POI2001] 和平委员会

    313. [POI2001] 和平委员会 ★★☆   输入文件:spo.in   输出文件:spo.out   评测插件时间限制:1 s   内存限制:128 MB 题目描述 根据宪法,Bytelan ...

  4. js 监听后退事件及跳转页面

    //直接跳转 window.location.href="b.html"; //返回上一级页面 window.history.back(-1); //返回下一级页面 window. ...

  5. Python 包导入

    首先我们先了解下python中寻找模块的顺序 是否是内建模块 ->主目录 ->PYTHONPATH环境变量 ->标准库 -> 首先判断这个model是否是built-in,即内 ...

  6. laravel5.2总结--服务提供者,契约(Contracts)

    首先理解两个概念 1.契约:一组定义了框架核心服务的接口 2.服务提供者:所有 Laravel 应用程序启动的中心所在. 包括你自己的应用程序,以及所有的 Laravel 核心服务,都是通过服务提供者 ...

  7. Windows Server 2012 R2:细节信息汇总

    Windows Server 2012 R2:细节信息汇总 2013年08月09日00:10 it168网站原创 作者:核子可乐编译 编辑:王晓东 我要评论(0) 标签: 操作系统 , Windows ...

  8. 【Reverse Integer】cpp

    题目: Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 click ...

  9. 【POJ 3764】The Xor-longest Path

    题目 给定一个\(n\)个点的带权无根树,求树上异或和最大的一条路径. \(n\le 10^5\) 分析 一个简单的例子 相信大家都做过这题: 给定一个\(n\)个点的带权无根树,有\(m\)个询问, ...

  10. git+jenkins持续集成一:git上传代码

    先注册一个账号,注册地址:https://github.com/ 记住地址 下载git本地客户端,下载地址:https://git-scm.com/download/win 一路next傻瓜安装,加入 ...