这题是一个背包问题 这样的 在一个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. ElasticSearch概述及Linux下的单机ElasticSearch安装

    原文链接:http://blog.csdn.net/w12345_ww/article/details/52182264 这两天在项目中要涉及到ElasticSearch的使用,就上网去搜索了一些这方 ...

  2. iOS8跳转到系统设置页

    版权声明:本文为博主原创文章,未经博主允许不得转载. 大家都知道,在iOS5.0时时可以跳转到系统的设置页的.但是在5.1之后就不可以了. 刚才研究了下这个问题,发现只有iOS8可以跳转到系统设置里自 ...

  3. vue---指令怎么写

    我们在考虑做一些功能性的封装的时候,我们会考虑使用vue的指令来做,那么指令应该怎么写: 具体参考: https://cn.vuejs.org/v2/guide/custom-directive.ht ...

  4. ABP之应用服务(1)

    在一个理想的层级项目中,展现层是不能直接访问领域对象的,那么展现层如何获取到自己需要的数据呢?也就是今天的主角-Application层,它的职责就是为展现层服务,它通过仓储获取到相应的数据,然后将数 ...

  5. python----并发编程之IO模型

    一:IO模型介绍  同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个 ...

  6. 2018牛客网暑期ACM多校训练营(第一场) J - Different Integers - [莫队算法]

    题目链接:https://www.nowcoder.com/acm/contest/139/J 题目描述  Given a sequence of integers a1, a2, ..., an a ...

  7. AIX 7命令行weblogic建域流水

    $ ./config.shUnable to instantiate GUI, defaulting to console mode. <------------------- Fusion M ...

  8. 启用yarn日志聚集功能

    在yarn-site.xml配置文件中添加如下内容: ##开启日志聚集功能        <property>                <name>yarn.log-ag ...

  9. date 命令之日期和秒数转换

    时间转为秒数 date -d "2012-11-12 13:00:00" +"%s" 描述转为日期 date -d@1352692800 +"%Y-% ...

  10. First normal formal Second normal form

    https://en.wikipedia.org/wiki/First_normal_form https://en.wikipedia.org/wiki/Second_normal_form A r ...