uva1228 Integer Transmission
这道题思维很灵活。也有点套路的意思。
首先规定0,1分别按照原来的顺序接收,只是01换位。这样简化了思维。(否则并不会有更优结果它。,比较好想)
最大值和最小值可以贪心得到。
那么接下来就是给定一个整数P,判断能不能得到它。
贪心法,从左到右判断P的每一位,从K中最左边的0或1取。
这样会发现任意时刻k中已经被接收的位最右边那那位一定没有延迟(想一想,也比较好想)
设d(i,j)表示用了k的前i个0,前k个1后形成的整数数
则下一个接收的bit是0,转移d(i+1,j)
1 则d(i,j+1)
判断下一个接受的能否为1或0
设第i个0发送时间为Zi,对应有Oi,那么Oj+d>=Zi才可以转移到i+1;j+1对应 画图证一下(用到上一个结论;比如i+1的情况,分接受的最后一位是0或1讨论;还要注意1用完了就不能这么判断了)
同时判断0,1有没有用完
这样就把十进制转化成二进制了
for(int i = 0; i < n; i++) {
K[n-i-1] = k % 2; k /= 2;
}
还要注意k,min,max要用ull
- #include<cstdio>
- #include<iostream>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- const int maxn = ;
- int n, d, K[maxn];
- long long f[maxn][maxn];
- unsigned long long minv, maxv; //ull !!!
- int zcnt = , ocnt = ;
- int Z[maxn], O[maxn];
- bool can_receive_zero(int i, int j) {
- return i+ <= zcnt && (j == ocnt || O[j]+d >= Z[i]);
- }
- bool can_receive_one(int i, int j) {
- return j+ <= ocnt && (i == zcnt || Z[i]+d >= O[j]);
- }
- void solve() {
- // compute Z and O
- ocnt = zcnt = ;
- for(int i = ; i < n; i++)
- if(K[i] == ) O[ocnt++] = i;
- else Z[zcnt++] = i;
- minv = maxv = ;
- int i = , j = ;
- while(i < zcnt || j < ocnt) {
- if(can_receive_zero(i, j)) //贪心策略0越前越好
- { i++; minv = minv * ; }
- else
- { j++; minv = minv * + ; }
- }
- i = j = ;
- while(i < zcnt || j < ocnt) {
- if(can_receive_one(i, j)) { j++; maxv = maxv * + ; }
- else { i++; maxv = maxv * ; }
- }
- // dp
- memset(f, , sizeof(f));
- f[][] = ;
- for(int i = ; i <= zcnt; i++)
- for(int j = ; j <= ocnt; j++) {
- if(can_receive_zero(i, j))
- f[i+][j] += f[i][j];
- if(can_receive_one(i, j))
- f[i][j+] += f[i][j];
- }
- cout << f[zcnt][ocnt] << " " << minv << " " << maxv << "\n";
- }
- int main() {
- int kase = ;
- unsigned long long k;
- while(cin >> n >> d >> k) {
- for(int i = ; i < n; i++) {
- K[n-i-] = k % ; k /= ;
- }
- cout << "Case " << ++kase << ": ";
- solve();
- }
- return ;
- }
uva1228 Integer Transmission的更多相关文章
- UVALive 4031 Integer Transmission(贪心 + DP)
分析:求出最大值和最小值比较简单,使用贪心法,求最小值的时候我们让所有的0尽可能的向后延迟就可以了,求最大值则相反. 关键在于求出可以组合出的数字个数. 这就是组合数学版的dp了,我们让dp[i][j ...
- light oj 1155 - Power Transmission【拆点网络流】
1155 - Power Transmission PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...
- ACdream 1229 Data Transmission
Data Transmission Special JudgeTime Limit: 12000/6000MS (Java/Others)Memory Limit: 128000/64000KB (J ...
- lightoj--1155-- Power Transmission (最大流拆点)
Power Transmission Time Limit: 2000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu Sub ...
- LeetCode 7. Reverse Integer
Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 Have you ...
- Integer.parseInt 引发的血案
Integer.parseInt 处理一个空字符串, 结果出错了, 程序没有注意到,搞了很久, 引发了血案啊!! 最后,终于 观察到了, 最后的部分: Caused by: java.lang.NoC ...
- MTU(Maximum transmission unit) 最大传输单元
最大传输单元(Maximum transmission unit),以太网MTU为1500. 不同网络MTU如下: 如果最大报文数据大小(MSS)超过MTU,则会引起分片操作. 路径MTU: 网路 ...
- 由一个多线程共享Integer类变量问题引起的。。。
最近看到一个多线程面试题,有三个线程分别打印A.B.C,请用多线程编程实现,在屏幕上循环打印10次ABCABC- 看到这个题目,首先想到的是解决方法是定义一个Integer类对象,初始化为0,由3个线 ...
- [LeetCode] Integer Replacement 整数替换
Given a positive integer n and you can do operations as follow: If n is even, replace n with n/2. If ...
随机推荐
- HTML中的align和valign这两个属性
转自:https://www.douban.com/note/325833958/ align和valign属性均是规定表格相对于周围元素的对齐方式,区别就在于: 1.align属性趋向于左右对齐,其 ...
- 3.11-3.15 HDFS HA
一.背景 1. Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF).对于只有一个NameNode的集群, 若NameNode机器出现故障,则整个集群将无法使用,直到Nam ...
- C++经典面试题库 附带参考答案
1. 面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象. 2. 什么是类? 答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类. 3. ...
- 51nod 1596 搬货物(二进制处理)
传送门 题意 分析 只要从小到大二进制处理即可 我一直遍历了1->n,应该是0->1e6+1000 果然智障 trick 代码 #include<cstdio> #includ ...
- JAVA多线程(四) Executor并发框架向RabbitMQ推送消息
github代码地址: https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service ...
- 第二类Stirling数初探 By cellur925
上午noi.ac崩崩崩了,栽在组合数学上,虽说最后在辰哥&Chemist的指导下A掉了此题,也发现自己组合数学太弱了qwq. 在luogu上找题,结果找到了一个第二类斯特林数的题(还是双倍经验 ...
- hql语法及自定义函数(含array、map讲解) + hive的java api
本博文的主要内容如下: .hive的详细官方手册 .hive支持的数据类型 .Hive Shell .Hive工程所需依赖的jar包 .hive自定义函数 .分桶4 .附PPT hiv ...
- 51Nod 1094 和为k的连续区间
#include <iostream> #include <algorithm> #include <cstring> using namespace std; t ...
- iOS WKWebView 退出后停止播放音频/视频
带有<video>或者<audio>标签的H5网页在播放音频视频时,退出webview后不会自动停止播放,手动处理一下. 1.注入使网页停止音频.视频播放的JS代码(Swift ...
- web.xml中classpath*:与classpath:的区别
classpath对应src目录,该目录下的文件会在编译后被存放到WEB-INF文件夹下的classes目录. classpath:只会到你的class路径中查找配置文件,对于多个同名的配置文件,只会 ...