其实这个题第一眼是没有任何思路的

强行无视题解,经过漫长的找规律,终于推出了一个可行的方法:

f[i][0/1]i表示最高位的数字,0表示开始是上升,1表示开始是下降。

为什么会推出这个?

1、因为所谓抖动序列和每个数的具体值没有关系,只与它的大小有关系,

2、在下一个循环中,枚举开头数字,所以只和上一种情况的最高位有关,在数位依次递增的时候循环开头的每个情况即可。

例:        若为1、 2、 3、 4、 5:

开始是2,    后面是1、 3、 4、 5,分别对应4个数时的1 、2、 3、 4;

转移条件即为上一次递推 <2 上升 作为最高位为 2 的下降方案数

上一次递推 >=2 下降 作为最高位为 2 的上升方案数

这真是极好的,但是n^3时间爆炸、

但作为省选题,50的得分还是可以的、

看来这种数类问题最好还是先把表列出来分析,不然空想实在不行,

而且这种问题好像都是插数递推+一定的枚举、

20天后:

woc这么明显的前缀和+后缀和优化都看不出来?就这么弃了太可惜、、

20分钟码完和优化版,成功ac;;

ps:正解依然有点懵逼、有空再看吧

码:

#include<iostream>
#include<cstdio>
using namespace std;
int n,p,dowh,ans,i,f[2][5000][2],j;
int main()
{scanf("%d%d",&n,&p);dowh=1;f[0][1][0]=1;f[0][1][1]=1;f[0][2][1]=1;f[0][2][0]=1;for(i=3;i<=n;i++,dowh^=1){for(j=1;j<=i;j++)f[dowh][j][0]=f[dowh^1][j][1];for(j=1;j<=i;j++)f[dowh][j][1]=f[dowh^1][j-1][0];if(i!=n){for(j=i;j>=1;j--)f[dowh][j][1]=(f[dowh][j][1]+f[dowh][j+1][1])%p;for(j=1;j<=i;j++)f[dowh][j][0]=(f[dowh][j][0]+f[dowh][j-1][0])%p;}}dowh^=1;for(i=1;i<=n;i++){ans+=f[dowh][i][0];ans%=p;ans+=f[dowh][i][1];ans%=p;}cout<<ans%p;
}

=================================2017.8.21=========================================

dp的时候我们主要的思路就是两条:1、存每一阶段的最优值,即可以给出每个k的答案

2、把整体的信息写进dp,完成所有阶段才出一个k的解

这个题就是第一种,考虑所有可能会对答案造成影响的信息,发现只有上一个数的大小会影响这个数数值的选择,于是就可以dp了

(怎么感觉可以矩乘)

真·插数dp



												

2017.3.6 地精部落 思考记录相关推荐

  1. 2017.3.24 分裂游戏 思考记录

    事先说明:这不是好题解,这只是思考记录 同机房的xp都学博弈了..    感觉还是学学看吧 先来看一下简单的nim: 题目: Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个 ...

  2. 2017.10.24 上升序列 思考记录

    终于有会做的题了... 一开始想用正常的lis ,然后从前往后扫, 由于最优查询区间在序列上是按顺序单调递增的,所以想记录每个点取哪个值跳到哪,这样是n*m logn的 然后发现既然是单调递增的那直接 ...

  3. 2017.10.7 括号序列 思考记录

    这个题看起来很简单,但细节比较麻烦.参考完别人的代码后才想出自己的解法的.. 一开始认为已匹配的括号是可以直接消的,所以就只维护了两个变量 但还有区间取反.. 由于和已配对的括号的顺序有关,所以不是很 ...

  4. 2017.9.28 约数研究 思考记录

    这个题一开始可能会想复杂, 然而它需要对答案的贡献进行归类 可以发现,一个约数对其倍数的数贡献是一样的,,所以可以考虑离散 所以直接对于每个数不好求,就可以考虑每个约数的贡献 而每个约数i就有n/i个 ...

  5. 2017.5.11 道路修建 思考记录

    这个线段树一眼秒了(主要是有前面的思考经验) 就是维护两个列对应线段上的形态.,比较好想的 但数据结构题有个特点--使你知道结构也不会做----会做也会很大概率爆零.... 所以数据结构题必须 小数据 ...

  6. 2017.5.9 积木大赛 思考记录

    为什么要把这个题放上来?因为这个题还是很有代表性的 首先必须要跳出模拟的思考: 可以忽视每一步具体的操作,直接看目标,这样就会总结出一些规律: 连续上升或连续下降的序列次数一定是最大值,因为每次都可以 ...

  7. 2017.4.25 解方程 思考记录

    这个题好乱啊..n*m就会炸,每个数还都可能是10^10000..这n*ai tm读进去都要10^6效率  . 一般这种似乎没有任何数论定理的东西范围还这么变态只能考虑随机化算法了.. 似乎可以用取模 ...

  8. 2017.3.29 报表统计 思考记录

    有生之年第一道浙江省选题(虽然历史久远并且很水) 记录每个位置数列的左端点和右端点 维护两颗splay   一颗维护全局最小差值,一颗维护相邻最小差值 对于全局splay:每次插入时记录路径取差值mi ...

  9. 2017.10.30 覆盖问题 思考记录

    从细节入手已经从一种技巧变成一种策略了. 题目给出的条件很奇怪,是3个正方形,, 为什么是3个而不是4个或2个呢.. 于是先用一个大矩形把所有点卡住 然后显然矩形的每个边 都有一个正方形和他在一条直线 ...

最新文章

  1. 2020人工智能全球女性榜发布,致敬这些杰出的女科学家
  2. 1005. 继续(3n+1)猜想 (25) (ZJUPAT 数学)
  3. 线程安全机制 python
  4. docker history 查看docker镜像构建过程 还原dockerfile 查看启动参数
  5. VS2013安装OpenCV4.1版本并搭建一个小程序
  6. Leetcode 739. 每日温度 (每日一题 20211014)
  7. Node.js 路由的简单使用
  8. 前端学习(2151):webpack之使用vue
  9. 字谜 java_java - 2字的字谜 - 堆栈内存溢出
  10. Vijos1775 CodeVS1174 NOIP2009 靶形数独
  11. 宅家办公不宅心,送3本技术好书
  12. simscape multibody仿真报错装配位置_大型结构件虚拟装配仿真软件,三维数字化分析,现场直接调整...
  13. python-threading.Event实现事件功能--汽车过红绿灯(转载)
  14. Python利用情感词典做情感分析
  15. Android性能测试之fps获取
  16. 数据可视化--基于excel表格数据生成柱状图
  17. 用matlab读pcap文件,libpcap读取本地pcap文件
  18. 从一加到100等于多少c语言,从一加到99等于多少
  19. 希捷硬盘无法安全弹出如何解决?
  20. gis平移至所选要素_ArcGIS中如何实现矢量数据平移

热门文章

  1. 韩顺平php视频笔记45 循环相关语句break,continue常量
  2. error: unrecognized arguments: 不运行_JavaScript函数 arguments
  3. 【汇总】pytorch里的一些函数
  4. 目标检测算法之FPN(附FPN代码实现)
  5. 从零开始学keras之卷积神经网络介绍
  6. 计算机绘图理论试题库,CAD理论试卷及答案「最新」
  7. cookie中JSESSIONID的由来
  8. linux脚本怎怎么屏蔽段落,怎么写shell脚本才能不耍流氓?
  9. ajax jsonp post php,※ajax的post方式注意点※及jsonp的封装
  10. 照片打印预览正常打印空白_照片打印机怎么挑选 照片打印机的选购技巧分享 - 台式电脑...