这题是一个背包问题 这样的 在一个k子树上 每个节点都有自己的k个孩子 然后 从原点走 走到 某个点的 和为 N 且每条的 长度不小于D 就暂停问这样的 路有多少条,  呵呵 想到了 这样做没有把他敲出来,可以很清楚的 到达第几层都能到达那些状态 然后 最多N层看看每层取到什么样的值 然后先算出没有任何限制 的路有多少条 接着用权值小于D的路径做看能够搞多少条 然后相减一下就好了

#include <cstdio>
#include <string.h>
#include <iostream>
using namespace std;
const int MOD =;
int dp[][],N,M,D;
int main(){ while(scanf("%d%d%d",&N,&M,&D) == ){
memset(dp,,sizeof(dp));
int ans = , dec = , t=;
dp[][] = ;
for( int i = ; i <= N ; i++){ t=t^;
memset(dp[t],,sizeof(dp[t]));
for( int j = ;j <=M ; ++ j )
for( int k = j ; k <= N ; k ++ ){
dp[t][k] = (dp[t][k]+dp[^t][k-j])%MOD;
}
ans=(ans+dp[t][N])%MOD;
}
t = ;
memset(dp,,sizeof(dp));
dp[][]=;
for(int i= ;i <= N ; ++ i){ t= t^;
memset(dp[t],,sizeof(dp[t]));
for( int j = ; j < D ; j ++)
for( int k=j ; k <=N ; k++)
dp[t][k]=(dp[t][k]+dp[t^][k-j])%MOD;
dec=(dec+dp[t][N])%MOD; }
printf("%d\n",(ans-dec+MOD)%MOD);
}
return ;
}

D 这题说的是 找出 n 使得 在n+1 n+2 。。。n*2 的所有的 数中 准确的找出 有m个 数具有准确的 k个1(在二进制当中) 事先得证明这样的一点就是 n + 2 ... 2·(n + 1) at least counts of such numbers on segment n + 1 ... 2·n 是正确的 因为这样如果一个数 可以通过排列组合证明 越大的 n的 k个1的个数都是大于等于小于n的数,我们可以猜猜这个是怎么来的,这样如果形成了一个数n 那么从0 到n当中的k个1 的个数小于等于 从0 到 n + 1 然后 同样的 n * 2 得到的个数小于等于 ( n + 1 ) * 2  那就要算 F[n*2] -F[n] < F[(n+1)*2] -F[n+1];  可以通过组合去计算大小 也可以 这样 想 后者的区间在不断的 夸大  他所能到达的个数比前一个区间来的大 

#include <string.h>
#include <cstdio>
#include <iostream>
using namespace std;
const int maxn = ;
const __int64 inf=2000000000000000000LL;
#define bit(mask,i)((mask>>i)&1)
int count( __int64 num){
int ans = ;
for( ; num ; num=num&(num-))
ans ++;
return ans;
}
__int64 dp[maxn][maxn] ,m;
__int64 solve(__int64 X,int num){
__int64 ans = num==count(X);
for( int i= ; i >= && num>= ; i--)
if(bit(X,i)) ans+=dp[i][num--];
return ans;
}
int main(){
int k;
memset(dp,,sizeof(dp));
dp[][]=;
for( int i = ; i<= ; ++ i )
for( int j = ; j <= i ; ++ j )
dp[i][j]=dp[i-][j]+(j?dp[i-][j-]:);
scanf("%I64d%d",&m,&k);
__int64 L= ,R=inf/ ,mid ;
while(L<R){
mid = L + (R-L)/;
if(solve(mid*,k)-solve(mid,k)<m ) L = mid+;
else R=mid;
}
printf("%I64d\n",L); return ;
}

Codeforces Round #247 (Div. 2) C D的更多相关文章

  1. Codeforces Round #247 (Div. 2) ABC

    Codeforces Round #247 (Div. 2) http://codeforces.com/contest/431  代码均已投放:https://github.com/illuz/Wa ...

  2. Codeforces Round #247 (Div. 2) B - Shower Line

    模拟即可 #include <iostream> #include <vector> #include <algorithm> using namespace st ...

  3. Codeforces Round #247 (Div. 2)

    A.水题. 遍历字符串对所给的对应数字求和即可. B.简单题. 对5个编号全排列,然后计算每种情况的高兴度,取最大值. C.dp. 设dp[n][is]表示对于k-trees边和等于n时,如果is== ...

  4. Codeforces Round #247 (Div. 2) C题

    赛后想了想,然后就过了.. 赛后....... 我真的很弱啊!想那么多干嘛? 明明知道这题的原型就是求求排列数,这不就是 (F[N]-B[N]+100000007)%100000007: F[N]是1 ...

  5. Codeforces Round #247 (Div. 2) C. k-Tree (dp)

    题目链接 自己的dp, 不是很好,这道dp题是 完全自己做出来的,完全没看题解,还是有点进步,虽然这个dp题比较简单. 题意:一个k叉树, 每一个对应权值1-k, 问最后相加权值为n, 且最大值至少为 ...

  6. [Codeforces Round #247 (Div. 2)] A. Black Square

    A. Black Square time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  7. Codeforces Round #247 (Div. 2) D. Random Task

    D. Random Task time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  8. 「专题训练」k-Tree(CodeForces Round #247 Div.2 C)

    题意与分析(Codeforces-431C) 题意是这样的:给出K-Tree--一个无限增长的树,它的每个结点都恰有\(K\)个孩子,每个节点到它\(K\)个孩子的\(K\)条边的权重各为\(1,2, ...

  9. Codeforces Round #247 (Div. 2) B

    B. Shower Line time limit per test 1 second memory limit per test 256 megabytes input standard input ...

随机推荐

  1. C程序设计语言习题(1-12)

    统计行数.单词数,字符数的程序: #include<stdio.h> #define IN 1 /*在单词内*/ #define OUT 0 /*在单词外*/ int main() { i ...

  2. Android 浅谈 设计与屏幕适配 【1.6235449734285716】

    extends: http://www.ui.cn/detail/45435.html http://www.2cto.com/kf/201501/372699.html http://www.cnb ...

  3. mysql如何使用索引index提升查询效率?

    https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html Indexes are used to find rows with specif ...

  4. iOS - 仿微信朋友圈视频剪切功能

    分析需求 我们先看一看微信的界面 微信效果图 1.页面下部拖动左边和右边的白色竖条控制剪切视频的开始和结束时间,预览界面跟随拖动位置跳到视频相应帧画面,控制视频长度最长15秒,最短5秒 2.拖动下部图 ...

  5. 关于IP地址子网的划分

  6. centos 安装laravel

    1.下载composer并全局安装 curl -sS https://getcomposer.org/installer | php 2.查看全局命令目录 echo $PATH 移动composer到 ...

  7. iOS 截屏分享(包含状态栏与不包含状态栏)

    iOS8以上的新方法PhotoKit 监听截图相册变化,取最后一张图片:http://www.hangge.com/blog/cache/detail_1515.html PhotoKit 获取本机相 ...

  8. easyui---基础组件:window

    window 依赖下面三个组件,就是继承,所以下面的特性和方法 事件都可以用 draggable resizable panel window 和panel不同之处,可以有拖拽移动draggable, ...

  9. CSU1129 送货到家 【状压dp】

    哈哈发现这道题竟然没有题解,于是我决定写一份! 状压dp 题目: 懒惰的巫女Reimu因为各种原因在香霖堂的店主Rinnosuke那儿欠下了很多债,于是乎只好靠帮他在幻想乡中送货来偿还掉微不足道的一小 ...

  10. hdu1540 Tunnel Warfare【线段树】

    During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast a ...