题目

题目背景
在 oeis\tt oeisoeis 中已经收录了这个数列……

题目描述
世人不患寡而患不均。而 HandInDevil\sf HandInDevilHandInDevil 只愿天下大乱!

请你找到一个长度为 nnn 的排列,使得相邻两个数的差值的绝对值都不小于 222 。

数据范围与提示
n≤103n\le 10^3n≤103,输出取模给定的数 mmm 。(估计是为了防止打表。)

思路

限制只发生在相邻的两个数之间?容易想到连续段 dp\tt dpdp 。用 f(i,j,0/1/2,0/1)f(i,j,0/1/2,0/1)f(i,j,0/1/2,0/1) 表示,已经填了前 iii 个数字、形成了 jjj 个连续段、iii 是几个端点(000 在段中间,111 是段端点,222 是单独成段)、iii 所在的区间是否是最靠左或最靠右的,存储方案数。这样做明显比较麻烦嘛……

另一个想法是,模仿这道题,直接依次插入。其实是完全可以的,只要记录形如 ⟨i,i+1⟩\langle i,i+1\rangle⟨i,i+1⟩ 的 “危险缝隙” 的数量,然后用数字插入来隔开它们就行。复杂度 O(n2)\mathcal O(n^2)O(n2),具体看代码吧。

代码

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
# define rep(i,a,b) for(int i=(a); i<=(b); ++i)
inline int readint(){int a = 0; char c = getchar(), f = 1;for(; c<'0'||c>'9'; c=getchar())if(c == '-') f = -f;for(; '0'<=c&&c<='9'; c=getchar())a = (a<<3)+(a<<1)+(c^48);return a*f;
}const int MaxN = 1005;
int dp[2][MaxN][2], M;
inline void add(int&x,const int&y){((x += y) >= M) ? (x -= M) : 0;
}int main(){for(int n; ~scanf("%d",&n); ){M = readint(); // modmemset(dp[1],0,MaxN*2<<2);dp[1][0][0] = 1; // only 1 itselffor(int i=2,fr=1; i<=n; ++i,fr^=1){memset(dp[i&1],0,MaxN*2<<2);rep(j,0,i-1) rep(d,0,1){/* case 1: put in a dangerous gap without creating new */ ;if(j > d) add(dp[i&1][j-1][0],dp[fr][j][d]*(j-d)%M);/* case 2: put in a dangerous gap meanwhile creating new */ ;if(j && d) add(dp[i&1][j][1],dp[fr][j][d]); // *d/* case 3: put in a safe gap without creating new */ ;/* i gap in total, j is dangerous, 2-d will create */ ;add(dp[i&1][j][0],dp[fr][j][d]*(i-j-2+d)%M);/* case 4: put in a safe gap meanwhile creating new */ ;add(dp[i&1][j+1][1],dp[fr][j][d]*(2-d)%M);}}printf("%d\n",dp[n&1][0][0]); // no dangerous gap}return 0;
}

后记

oeis\tt oeisoeis 如是说:初值 F(0)=F(1)=1,F(2)=F(3)=0F(0)=F(1)=1,\;F(2)=F(3)=0F(0)=F(1)=1,F(2)=F(3)=0,当 n≥4n\ge 4n≥4 时有
F(n)=(n+1)F(n−1)−(n−2)F(n−2)−(n−5)F(n−3)+(n−3)F(n−4)F(n)=\\ (n+1)F(n-1)\\-(n-2)F(n-2)\\-(n-5)F(n-3)\\+(n-3)F(n-4) F(n)=(n+1)F(n−1)−(n−2)F(n−2)−(n−5)F(n−3)+(n−3)F(n−4)

原因未知。但是 State:Approved.\rm State:Approved.State:Approved.

[ACNOI2021]OEIS yyds相关推荐

  1. 火遍全国的网络热梗“yyds”,创造者被判刑3年

    不关注电竞圈的朋友们,可能对"山泥若"这个游戏主播的ID感到很陌生. 但他创造的一些梗,相信大家一定有所耳闻.其中最出圈的,莫过于YYDS,也就是"永远的神". ...

  2. 谷歌学术公布2021年最有影响力工作,CV顶会论文“夹缝求生”!凯明 YYDS!

    编译 | 陈彩娴 转自:AI科技评论 不久前,谷歌学术(Google Scholar)公布了2021年最有影响力的论文列表,结果在意料之中. 由于去年新冠疫情的全球性爆发,研究 COVID-19 的早 ...

  3. YYDS!怪不得很多朋友去杭州,原来有10W+的福利!

    就在刚刚,小编逛雪球的时候,看到了这个热帖: 从网友晒信息中得知,该童鞋已经成功落户杭州.光这一点可能还无法触动大家,而后面的信息就比较凡尔赛了: 30000元生活补助(一次性),条件是应届硕士毕业生 ...

  4. 推荐 10 个你没见过的 VsCode 的高效开源神器,YYDS

    大家好,我是你们的 猫哥,那个不喜欢吃鱼.又不喜欢喵 的超级猫 ~ 平时如何发现好的开源项目,可以看看这篇文章:GitHub 上能挖矿的神仙技巧 - 如何发现优秀开源项目 1. code-server ...

  5. Node 应用篇!推荐 10 个好用的 Node 的开源项目 YYDS

    大家好,我是你们的 猫哥,那个不喜欢吃鱼.又不喜欢喵 的超级猫又在线营业啦 ~ 平时如何发现好的开源项目,可以看看这篇文章:GitHub 上能挖矿的神仙技巧 - 如何发现优秀开源项目 1. puppe ...

  6. 视觉盛宴篇!推荐 12 个好用的 CSS 的开源项目,YYDS !

    大家好,我是你们的 猫哥,那个不喜欢吃鱼.又不喜欢喵 的超级猫又在线营业啦 ~ 平时如何发现好的开源项目,可以看看这篇文章:GitHub 上能挖矿的神仙技巧 - 如何发现优秀开源项目 1. anima ...

  7. Markdown 编辑器才是yyds|CSDN编辑器测评

    前言 今天小编为大家介绍一款编辑器,也正是小编书写这篇文章所使用的Markdown编辑器,正是广大博友想要发布文章的工具.那么 你知道他的都有哪些方便之处么 下面小编带你了解一下 Markdown是什 ...

  8. Java技术:收集16 条 yyds 的代码规范,值得一读!

    今天给大家分享关于Java技术中16 条 yyds 的代码规范,读完肯定会有帮助! 一.MyBatis 不要为了多个查询条件而写 1 = 1 当遇到多个查询条件,使用where 1=1 可以很方便的解 ...

  9. 在openEuler上做开发?这个大赛拿出30万寻找开源的yyds

    摘要:为鲲鹏产业生态的一部分,在服务器操作系统层面,开源操作系统openEuler更是令人期待. 本文分享自华为云社区<在openEuler上做开发?这个大赛拿出30万寻找开源的yyds> ...

  10. 比大衣保暖,比羽绒服显瘦!这件高级反貂绒毛衣火了!不起球不掉毛,明明毛茸茸的却巨显瘦,舒适又保暖....YYDS!...

    ©程序员严选 丨为您甄选全球好物 在寒冬为保暖 每个小仙女衣柜里都有一沓打底衫或毛衣 软软糯糯冬天氛围分分钟被拉满~ 但是过来人都知道, 很多漂亮且造型夸张的毛衣或打底衫, 只适合单穿, 因为天气一冷 ...

最新文章

  1. 布局AR VR领域?Tessera 8.5亿美元收购音频公司DTS
  2. ubuntu 16.04 更换国内源(下载源)(阿里源)(换源)
  3. 在Linux操作系统下使用虚拟光驱的方法
  4. python初学者用什么软件_初学者编写python用什么软件
  5. POJ 2229 Sumsets(递推,找规律)
  6. 大学生程序设计邀请赛(华东师范大学)C:袋鼠妈妈找孩子
  7. ImageMagick中文使用手册——复合字体效果
  8. mysql 嵌套查询
  9. 根据标题自动生成图片程序,使用教程,并附程序下载
  10. 【性能监测】前端性能监测方法总结(非监测平台)
  11. 绅士游戏 android绅士在线阅读,一骑当千游戏,绅士游戏 android绅士
  12. 河南移动AI面试 面经
  13. 数据库管理员个人简历模板(数据库简历模板)
  14. Unity 半透物体(Transparent)写入摄像机深度图(解决半透物体景深不生效)
  15. Trace32手册-Linux Debugging Reference Card
  16. EZ娱乐带手机版(足球+彩票)
  17. c语言strtok函数完美实现
  18. 怎么使用firebird maestro
  19. 1.19 Cubemx_STM32F4 TIM(五)---- 总结
  20. 计算机手机模型,手机、平板电脑等电子设备的E3D模型包AE模板,含29个

热门文章

  1. 已知任意三点坐标求圆心
  2. YYDS!完美抠图王冰冰!字节实习生开发的AI,4K60帧视频实时抠图
  3. 阿里云CentOS下搭建LNMP环境和Moodle安装
  4. STM32G0系列的启动配置与程序下载
  5. asp探针,php探针,jsp探针
  6. js模拟ps吸管吸取颜色功能
  7. BooKu手机电子书阅读器,正式推出了
  8. linux操作系统原理【3】
  9. vue电子数字、时钟数字、的字体引入和使-详细步骤
  10. 创维机顶盒E900刷LinuxNas系统