Transmission Delay 传输谍延时 bzoj-1581 Usaco-2009 Hol

题目大意题目链接

注释:略。


想法

动态规划。

首先我们考虑从后往前dp。(最近好多题都是从后往前啊)。

这个题就是如此。

状态:dp[i][j]表示i~n中用了j个1的方案数。

第一问中我们只需要加就行了。

第二问,如果当前位是0的方案比k大,那么我们将这位上添0;

如果当前位是0的方案比k小,我们将这位添1。

最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int N=2010;
const int MOD=1e8;
int n,d,k,cnt0=0,cnt1=0;
int p0[N],p1[N],f[N][N],g[N][N];
char s[N]; int main()
{
scanf("%d%d%d",&n,&d,&k);
scanf("%s",s+1);
for(int i=1;i<=n;i++)
if(s[i]=='0')p0[++cnt0]=i;
else p1[++cnt1]=i;
f[n+1][0]=g[n+1][0]=1;
for(int i=n;i>=1;i--)
for(int j=0;j<=min(n-i+1,cnt0);j++)
{
int k=n-i+1-j;
if(j&&abs(p0[cnt0-j+1]-i)<=d)
{
f[i][j]+=f[i+1][j-1];
if(f[i][j]>MOD)f[i][j]-=MOD;
g[i][j]=min(g[i][j]+g[i+1][j-1],MOD+1);
}
if(k&&abs(p1[cnt1-k+1]-i)<=d)
{
f[i][j]+=f[i+1][j];
if(f[i][j]>MOD) f[i][j]-=MOD;
g[i][j]=min(g[i][j]+g[i+1][j],MOD+1);
}
}
printf("%d\n",f[1][cnt0]);
int s0=cnt0,s1=cnt1;
for(int i=2;i<=n;i++)
{
if(s0&&abs(p0[cnt0-s0+1]-i+1)<=d)
{
if(g[i][s0-1]>=k)s0--,putchar('0');
else s1--,k-=g[i][s0-1],putchar('1');
}
else s1--,putchar('1');
}
if(s0) putchar('0'); else putchar('1');
return 0;
}

小结:好题!

[bzoj1507][Usaco2009 Hol]Transmission Delay 传输谍延时_动态规划的更多相关文章

  1. [bzoj1582][Usaco2009 Hol]Holiday Painting 节日画画_线段树

    Holiday Painting 节日画画 bzoj-1582 Usaco-2009 Hol 题目大意:给定两个n*m的01网格图.q次操作,每次将第二个网格图的子矩阵全部变成0或1,问每一次操作后两 ...

  2. 红茶一杯话Binder (传输机制篇_下)

    红茶一杯话Binder (传输机制篇_下) 侯 亮 1 事务的传递和处理 从IPCThreadState的角度看,它的transact()函数是通过向binder驱动发出BC_TRANSACTION语 ...

  3. 红茶一杯话Binder (传输机制篇_中)

    红茶一杯话Binder (传输机制篇_中) 侯 亮 1 谈谈底层IPC机制吧 在上一篇文章的最后,我们说到BpBinder将数据发到了Binder驱动.然而在驱动层,这部分数据又是如何传递到BBind ...

  4. 红茶一杯话Binder(传输机制篇_上)

    红茶一杯话Binder (传输机制篇_上) 侯 亮 1 Binder是如何做到精确打击的? 我们先问一个问题,binder机制到底是如何从代理对象找到其对应的binder实体呢?难道它有某种制导装置吗 ...

  5. BZOJ1580 : [Usaco2009 Hol]Cattle Bruisers 杀手游戏

    以贝茜为参照物,则贝茜固定于原点,每个杀手是一个圆心在某条射线上的圆. 解出每个杀手可以射杀贝茜的时间区间,然后扫描线即可,时间复杂度$O(n\log n)$. #include<cstdio& ...

  6. [BZOJ1582] [Usaco2009 Hol]Holiday Painting 节日画画(线段树)

    传送门 线段树区间修改傻题 #include <cstdio> #include <cstring> #include <iostream> #define N 5 ...

  7. BZOJ 3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 动态规划

    3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=34 ...

  8. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  9. 排队时延(Queuing delay)

    网络时延的构成 Network delay including four parts: Processing delay - time routers take to process the pack ...

随机推荐

  1. $CF1153A\ Serval\ and\ Bus$

    看大佬的代码都好复杂(不愧是大佬\(orz\) 蒟蒻提供一种思路 因为求的是最近的车对吧\(qwq\) 所以我们可以用一个\(while\)循环所以没必要去用什么 \(for...\) 至于这是\(d ...

  2. 洛谷2019 3月月赛 T4

    T3做不来.. 直接滚去T4 orz 乍一看 T4是个DP 题干 复杂度??(N^4) 咋优化... 还带一只捆绑 捆绑啥的最烦人了 最后20pts 直接废了 T了 很烦 不过拿到80pts已经很开心 ...

  3. C++函数重载的4种错误示例

    函数重载的4种错误示例: #include <iostream> #include <string> using namespace std; //函数重载 同函数名,函数重载 ...

  4. 对数组名取地址&a和 数组首地址a

    #include <iostream> using namespace std; ] = {,,,,}; int main() { cout<<a<<" ...

  5. 275 H-Index II H指数 II

    这是 H指数 进阶问题:如果citations 是升序的会怎样?你可以优化你的算法吗? 详见:https://leetcode.com/problems/h-index-ii/description/ ...

  6. 【转】mysql INSERT的用法

    转自:http://www.cnblogs.com/ggjucheng/archive/2012/11/05/2754938.html insert的语法 INSERT [LOW_PRIORITY | ...

  7. poj3279 Fliptile

    思路: 枚举. 枚举了第一行的操作之后,下面每行的操作也随之确定了.因为在确定了第i行的操作之后,要想再改变a[i][j]的状态只能通过改变a[i + 1][j]来实现.另外,用到了集合的整数表示方法 ...

  8. 微信小程序组件解读和分析:二、scroll-view可滚动视图区域

    scroll-view可滚动视图区域组件说明: 可滚动视图区域. 组件用法:纵向滚动用法 Tip: 使用竖向滚动时,需要给一个固定高度,通过 WXSS 设置 height,否则无法滚动. 当滚动到顶部 ...

  9. thinkphp信息修改和分页

    关联两个数据表,在Model里建立StuModel.class.php: <?php //Belongs_to 关联表示当前模型从属于另外一个父对象 namespace Admin\Model; ...

  10. Shell script之How to write

    Write shell script: 1) Editor like vi or mcedi 2) Set execute permission for your script chmod  perm ...