Poj  AcWing

Description

Sol

这题很数位$DP$啊, 预处理$+$试填法

$F[i][j][k]$表示用$i$块长度不同的木板,当前木板(第$i$块)在这$i$块木板中从小到大排在第$j$位,构成栅栏的方案数.$k=0$表示处于低位,$k=1$表示处于高位.

$F[i][j][0]=\sum_{p=j}^{i-1}$

$F[i][j][1]=\sum_{p=1}^{j-1}$

然后这里有一个地方想了挺久的最终在$gql$的$blog$里找到了答案(怎样才能和$gql$一样神仙啊???),就是为什么$F[i][j][0]$的转移方程里$p$从$j$开始而不是$j+1$.这要看它的相对性$qwq$,因为现在第$i$块木板排第$j$,但是前$i-1$块木板里没有当前排第$j$的木板,也就是当前$(j+1,i)$的木板在$i-1$的情况下都会跌一名 : ))

预处理完之后就是"试填法"了!

外层枚举长度(种数)$i$,内层枚举第$i$块木板的长度.要记录第$i$块木板在前$i$块木板里的排名,然后累计当前选择下的栅栏总数,判断当前选择是否正确不是就继续循环下一个.....具体看代码叭.(代码是以前写的,变量名和上面所写的不太一样$OvO$)

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#define Rg register
#define il inline
#define db double
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a));
#define go(i,a,b) for(Rg int i=a;i<=b;i++)
#define yes(i,a,b) for(Rg int i=a;i>=b;i--)
using namespace std;
const int N=;
int n,ans[N];
ll c,a[N][N][];
bool fl[N];
il void init()
{
a[][][]=a[][][]=;
go(len,,)
go(i,,len)
{
go(j,i,len-)a[len][i][]+=a[len-][j][];
go(j,,i-)a[len][i][]+=a[len-][j][];
}
}
il void solve()
{
mem(fl,);ll cnt=;
go(len,,n)
{
int nm=;
go(i,,n)
{
ll lc=cnt;
if(fl[i])continue;
nm++;
if(len==)cnt+=a[n][nm][]+a[n][nm][];
else
{
if(i>ans[len-]&&(ans[len-]<ans[len-]||len<=))cnt+=a[n-len+][nm][];
if(i<ans[len-]&&(ans[len-]>ans[len-]||len<=))cnt+=a[n-len+][nm][];
}
if(cnt<c)continue;
fl[i]=;ans[len]=i;cnt=lc;break;
}
}
go(i,,n)printf("%d ",ans[i]);printf("\n");
}
int main()
{
int T;scanf("%d",&T);
init();
while(T--){scanf("%d%lld",&n,&c);solve();}
return ;
}

随机推荐

  1. 对比MySQL,一文看透HBase的能力及使用场景

    MySQL + HBase 是我们日常应用中常用的两个数据库,分别解决应用的在线事务问题和大数据场景的海量存储问题. 本文内容适合初次理解HBase的读者,包括技术.功能及场景,也欢迎老司机们补充和温 ...

  2. TOP10!全球顶级云计算公司战斗力排行榜

    TOP10!全球顶级云计算公司战斗力排行榜 1亚马逊\VMware.微软 [PConline 资讯]现如今,不谈“云”,似乎会与这个时代格格不入.无论是企业还是个人,都会与“云”扯上关系.可以说,云计 ...

  3. Websocket 简单对话:静态网页与pycharm对话

    WebSocket websocket 是一种在单个Tcp连接上进行双全工通信的协议.websocket通信协议于2011年被IETF定为标准RFC6455,并 由RFc7936补充规范.WebSoc ...

  4. ubuntu14.04 编译hadoop-2.6.0-cdh5.4.4

    1 protocol buffer sudo apt-get install libprotobuf-dev asn@hadoop1:~/Desktop$ protoc --version libpr ...

  5. P1113 同颜色询问

    题目描述 现在有一个包含 \(n\) 个元素的数组,它的元素的编号从 \(1\) 到 \(n\) . 每一个元素都有一个初始的颜色 \(C_i\) 以及数值 \(W_i\) . 这个数组支持 \(4\ ...

  6. RBF神经网络的matlab简单实现

    径向基神经网络 1.径向基函数 (Radial Basis Function,RBF) 神经网络是一种性能良好的前向网络,具有最佳逼近.训练简洁.学习收敛速度快以及克服局部最小值问题的性能,目前已经证 ...

  7. java抽象类的体现-模板模式

    抽象类是多个具体子类抽象出来的父类,具有高层次的抽象性;以该抽象类作为子类的模板可以避免子类设计的随意性; 抽象类的体现主要就是模板模式设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行拓展 ...

  8. webpack学习(五)entry和output的基础配置

    1:entry和output就是打包的入口和出口的两个对象.但是如果入口文件就一个的话(应该说只希望打包出一个脚本文件), entry直接跟一个字符串(入口文件路径)就可以了.如:entry : &q ...

  9. Spring Data Jpa 简单使用事务

    对于两张表,需要顺序操作,必须全部表均操作成功才可,否则两张表不操作. 例如,现在有device,collectionpoint两张表,向两张表顺序执行insert操作 SQL如下 INSERT IN ...

  10. win2d 画出好看的图形

    本文告诉大家,win2d 不需要从零开始做,以前做出来的很多库其实只需要做很小修改就可以做出好看的效果,而且用在 UWP 上.本文修改原先 大神写的 GDI 图形到 win2d 上,而且可以运行起来 ...