题目:http://acm.hdu.edu.cn/showproblem.php?pid=2983

题意:将一个n位的数发送,每一位的发送时间为i,但是网络有延迟d,收到时顺序可能会变,求总共有多少种可能性,并且最小和最大分别是多少

最大和最小比较容易求,只需要贪心的将1和0前移或后移

求方案数时,1和1的位置互换了并不影响,所以只需要考虑0和1的相对位置

用dp[i][j]表示现在接收了i个0,j个1

如果下一个1可以放在下一个0后面,那么现在可以接收0,如果下一个0可以放在下一个1后面,则可以接收1

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<set>
using namespace std;
const int N=70;
typedef unsigned long long ll;
int cnt0,cnt1,p0[N],p1[N],n,d;
ll k,dp[N][N];
vector<int> v[N];
void init()
{cnt0=cnt1=0;for(int i=n-1;i>=0;i--)if (k>>i&1)p1[++cnt1]=-i;else p0[++cnt0]=-i;
}
ll solve()
{memset(dp,0,sizeof(dp));dp[0][0]=1;for(int i=0;i<=cnt0;i++)for(int j=0;j<=cnt1;j++){if (i<cnt0&&(j==cnt1||p1[j+1]+d>=p0[i+1]))dp[i+1][j]+=dp[i][j];if (j<cnt1&&(i==cnt0||p0[i+1]+d>=p1[j+1]))dp[i][j+1]+=dp[i][j];}return dp[cnt0][cnt1];
}
ll findmin()
{for(int i=0;i<n;i++)v[i].clear();for(int i=n-1;i>=0;i--)if (k>>i&1)v[max(0,i-d)].push_back(1);else v[i].push_back(0);ll ans=0;for(int i=n-1;i>=0;i--){sort(v[i].begin(),v[i].end());for(int j=0;j<v[i].size();j++)ans=ans*2+v[i][j];}return ans;
}
bool cmp(ll x,ll y)
{return x>y;
}
ll findmax()
{for(int i=0;i<n;i++)v[i].clear();for(int i=n-1;i>=0;i--)if (k>>i&1)v[i].push_back(1);else v[max(0,i-d)].push_back(0);ll ans=0;for(int i=n-1;i>=0;i--){sort(v[i].begin(),v[i].end(),cmp);for(int j=0;j<v[i].size();j++)ans=ans*2+v[i][j];}return ans;
}
int main()
{ios::sync_with_stdio(false);int ca=0;while(cin>>n&&n){cin>>d>>k;init();ca++;cout<<"Case "<<ca<<": "<<solve()<<" "<<findmin()<<" "<<findmax()<<endl;}return 0;
}

  

转载于:https://www.cnblogs.com/bk-201/p/7473557.html

HDU 2983 Integer Transmission相关推荐

  1. hdu 1047 Integer Inquiry

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1047 Integer Inquiry Description One of the first use ...

  2. HDU 6441Find Integer

    题目链接                                             Find Integer Time Limit: 2000/1000 MS (Java/Others) ...

  3. HDU 1047 Integer Inquiry( 高精度加法水 )

    链接:传送门 思路:高精度水题 /*************************************************************************> File ...

  4. hdu Find Integer (6441)(大费马定理)

    题目大意为,给你 a,n 的值,让你找出是否有 b,c 满足方程 an + bn = cn ,典型的定理内容.long long型一一寻找即可: #include<stdio.h> int ...

  5. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

  6. 信息学竞赛中的数学知识 --- 容斥原理

    C++基础数论-----容斥原理 C++基础数论-----容斥原理_C2020lax的博客-CSDN博客_容斥原理c++ C++数论容斥原理----无关的元素 C++数论容斥原理----无关的元素 - ...

  7. Java Java Java

    学下java 的大数该怎么用>< hdu 1023 Train Problem II 求 卡特兰 数 诶...不记得卡特兰数的我眼泪掉下来 第一次用 java 大数 有点激动...> ...

  8. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  9. 《算法竞赛入门经典——训练指南》第一章相关内容

    #<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...

最新文章

  1. mac环境下安装xampp
  2. python可以写桌面软件吗-Python学习,给自己的代码做个合集,定制自己的桌面软件!...
  3. java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇
  4. MVC源码分析 - Action查找和过滤器的执行时机
  5. vscode 新建python 终端
  6. Win11正式发布新功能
  7. 资源放送丨《基于IB网络的Oracle Extend RAC最佳实践》PPT视频
  8. PostgreSQL中查看版本的几种方式
  9. java string不为空_java如何正确判断String为空
  10. HTTPS时代全面到来,你准备好了吗? 1
  11. code collection 0.44版 发布
  12. ROS install
  13. 计算机电子智能化贰级,电子与智能化工程专业承包资质分为一级、二级
  14. BNUOJ 4140 Video Game Troubles
  15. asp.net 生成二维码,带logo,带下方文字
  16. 微信公众平台开发者模式(1)JAVA版接入
  17. SQL Server 代理 显示异常,未开启
  18. MCMC(二):MCMC采样和M-H采样
  19. Android开发高级进阶内涵段子APP项目实战视频教程
  20. 易优cms响应式网站模板,EyouCMS网络科技公司网站模板

热门文章

  1. swiper插件使用
  2. python项目:学生信息管理系统(初版)
  3. MySQL基础 (SQLyog)尚硅谷婷姐 学习笔记整理
  4. 攻防世界 Misc文件类型
  5. 4 Motion Planning for Self-Driving Cars 课程习题编程解答及笔记
  6. vue中background-image图片路径问题
  7. 支付宝小程序 省市区三级联动
  8. redis 存对象的方法对比
  9. 关于腾讯csig前端面试
  10. 熊猫烧香遗留木马文件的清除