我们可以将=左右的两个数看成一个块,块内无顺序要求,把<分隔的看成两个块,那么我们设w[i][j]代表将i个元素分成j个块的方案数,那么显然w[i][j]=w[i-1][j]*j+w[i-1][j-1]*j,前面的代表可以将当前元素放到之前j个块中,有j种情况,后面的表示将i元素单独成块之后有j个位置可以选择。需要注意的是我们还需要写高精。

  考虑到n比较小,打个表就好了。

/**************************************************************Problem: 2786User: BLADEVILLanguage: C++Result: AcceptedTime:40 msMemory:1272 kb
****************************************************************///By BLADEVIL
#include <cstdio>
#include <string>
#include <iostream>using namespace std;char *w[60];int main() {w[1]="1";w[2]="3";w[3]="13";w[4]="75";w[5]="541";w[6]="4683";w[7]="47293";w[8]="545835";w[9]="7087261";w[10]="102247563";w[11]="1622632573";w[12]="28091567595";w[13]="526858348381";w[14]="10641342970443";w[15]="230283190977853";w[16]="5315654681981355";w[17]="130370767029135901";w[18]="3385534663256845323";w[19]="92801587319328411133";w[20]="2677687796244384203115";w[21]="81124824998504073881821";w[22]="2574844419803190384544203";w[23]="85438451336745709294580413";w[24]="2958279121074145472650648875";w[25]="106697365438475775825583498141";w[26]="4002225759844168492486127539083";w[27]="155897763918621623249276226253693";w[28]="6297562064950066033518373935334635";w[29]="263478385263023690020893329044576861";w[30]="11403568794011880483742464196184901963";w[31]="510008036574269388430841024075918118973";w[32]="23545154085734896649184490637144855476395";w[33]="1120959742203056268267494209293006882589981";w[34]="54984904077825684862426868390301049750104843";w[35]="2776425695289206002630310219593685496163584253";w[36]="144199280951655469628360978109406917583513090155";w[37]="7697316738562185268347644943000493480404209089501";w[38]="421985466101260424678587486718115935844245187819723";w[39]="23743057231588741419119534567705900419786127935577533";w[40]="1370159636942236704917645663312384364386256449136591915";w[41]="81045623051154285047127402304207782853156976521592907421";w[42]="4910812975389574954318759599939388855544783946694910718603";w[43]="304646637632091740261982544696657582136519552428876887346813";w[44]="19338536506753895707368358095646384573117824953447578202397675";w[45]="1255482482235481041484313695469155949742941807533901307975355741";w[46]="83318804148028351409201335290659562069258599933450396080176273483";w[47]="5649570401186486930330812460375430692673276472202704742218853260093";w[48]="391229145645351175841837029639030040330277058716846008212321196523435";w[49]="27656793065414932606012896651489726461435178241015434306518713649426461";w[50]="1995015910118319790635433747742913123711612309013079035980385090523556363";int task,n; scanf("%d",&task);while (task--) {scanf("%d",&n);printf("%s\n",w[n]);}return 0;
}

转载于:https://www.cnblogs.com/BLADEVIL/p/3658521.html

bzoj 2786 DP相关推荐

  1. BZOJ 2423 DP

    BZOJ 2423 - DP 第一问是经典DP,直接做就可以了(设\(f[i][j]\)为\(X\)串考虑到\(i\),\(Y\)串考虑到\(j\),且不强制选\(i\)和\(j\)的方案数).然后第 ...

  2. 【BZOJ 2786】 Ural1142 Relation

    2786: Ural1142 Relation Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 277  Solved: 139 [Submit][St ...

  3. bzoj 1084 DP

    首先对于m==1的情况非常容易处理(其实这儿因为边界我错了好久...),直接DP就好了,设f[i][k]为这个矩阵前i个选k个矩阵的最大和,那么f[i][k]=max(f[j][k-1]+sum[j+ ...

  4. bzoj 2121 DP

    首先如果我们能处理出来i,j段能不能消掉,这样就可以直接dp转移了,设w[i]为前i为最少剩下多少,那么w[i]=w[j-1] (flag[j][i]). 现在我们来求flag[i][j],首先我们可 ...

  5. BZOJ 2431 DP

    题意:求逆序对数量为k的长度为n的排列的个数 SOL: 显然我们可以对最后一位数字进行讨论,判断其已经产生多少逆序对数量,然后对于前n-1位同样考虑---->每一个长度的排列我们都可以看做是相同 ...

  6. BZOJ 1786 DP

    思路: 肯定从小往大填合适了 f[i][j]表示第i个数是j的最少逆序对数 f[i][j]=min(f[i-1][k]+cost,f[i][j]) 优化一下成O(nk)就好啦~ (不优化也可以过的-) ...

  7. BZOJ 2786 Ural1142 Relation 递推

    题目大意:用'='和'<'连接n个元素,等号之间看做一个整体,求方案数 令f[i][j]表示i个数划分成j个有序集合的方案数 如果将第i个数划分进原有的集合中,方案数为f[i-1][j]*j 如 ...

  8. 【业界偷懒】【Public】BZOJ题目一句话题解整理

    转发[Hzwer]: 就当是复习一下自己做过的题,顺便提供一个简要题解给大家看. 做题时候实在想不出来看一下一句话题解,可以有一个提示的作用又不至于一下子知道了全部浪费了一道题吧.. 部分题目(如我A ...

  9. 【醒目】【业界偷懒】【Public】BZOJ题目一句话题解整理

    就当是复习一下自己做过的题,顺便提供一个简要题解给大家看. 做题时候实在想不出来看一下一句话题解,可以有一个提示的作用又不至于一下子知道了全部浪费了一道题吧.. 部分题目(如我A过得大部分奶牛题)是别 ...

最新文章

  1. 黑白球JAVA_桶中取黑白球 - jiacut的个人页面 - OSCHINA - 中文开源技术交流社区
  2. ELK+redis搭建nginx日志分析平台
  3. linux登陆界面卡死_Linux 上最好的五款音乐播放器
  4. [Leedcode][JAVA][第98题][验证二叉搜索树]
  5. 药品研发 计算机系统验证,基于验证的药品研发项目申报系统的设计
  6. php计划任务 框架,计划任务的使用 ThinkCMF内容管理框架,做最简约的ThinkPHP开源软件...
  7. C语言深度解剖读书笔记(1.关键字的秘密)
  8. 服务器资源占用监控(jp@gc - PerfMon Metrics Collector)
  9. hashmap put过程_HashMap为什么线程不安全?
  10. 微软Windows2003的正版安装序列号
  11. 今天,霍金没有提AI威胁论,他的新目标是带领人类移民外星球(附霍金姚期智Pete演讲实录+PPT)
  12. Django(一)简单的个人博客搭建实战
  13. linux磁盘满了删除docker文件夹,Docker磁盘空间使用分析与清理的方法
  14. ThreadPoolExecutor线程池及参数介绍
  15. 【Codecs系列】双帧参考特性
  16. 前端路线--H5篇(day04)
  17. Vue+SpringBoot+Audio+科大讯飞 语音合成技术
  18. 同程旅行Hadoop集群跨机房迁移实践
  19. 某校教务管理系统post分析,Python实现自动查询成绩并发送短信
  20. 视频教程-Python入门精讲视频,从入门到精通-Python

热门文章

  1. 容量影响计算机性能嘛,内存条会影响电脑性能吗?
  2. java actionchains,UI自动化测试:模拟组合按键操作的2种方式
  3. EC2实例和新I2实例介绍
  4. andiond auto连接闪退_实地集团:敢为人先 用创新连接科技与生活
  5. 阅读量超1亿!应聘要求自曝「恋爱经历」你怎么看?
  6. 想要学习人工智能,有哪些大学专业可以选择?
  7. linux模拟驾驶软件下载,3D模拟驾考游戏
  8. cp: cannot create regular file `/usr/bin/nginx': Text file busy
  9. [附源码]JAVA+ssm基于Java的校园交友平台(程序+Lw)
  10. 获取东方财富ETF日线历史数据python