题意

在小G的家乡,有很多人住在一个大湖的边上。

他告诉小D,这个大湖可以被视作一个圆。一共有 NNN 户人家, 他们住在这个圆的 NNN 等分点上,每个 NNN 等分点上恰好有一户人家.

这里的每户人家都有不同的信仰,其中第 iii 户人家信仰第 iii 种宗教。很显然,宗教对于生活会产生一定的影响,具体来说,相邻两户人家信仰的宗教的编号之差的绝对值不可以超过 KKK。

同时,有几户人家会不满其他的一些人,对于两户人家 iii 和 jjj,如果 iii 不喜欢 jjj ,那么 jjj 不可以住在 iii 顺时针方向的下一个位置上,这样的不满关系一共有 MMM 对。

小D突然好奇起来了,这 NNN 户人家一共有多少种不同的居住方法呢?

小D的方向感不好,所以如果两种方案可以通过顺时针旋转某个角度变成一样的,那么小D就不会认为这两种方案不同。
对于所有数据,有 1≤N≤106,0≤M≤105,0≤K≤31 \le N \le 10^6,0 \le M \le 10^5,0 \le K \le 31≤N≤106,0≤M≤105,0≤K≤3

Subtask1 5%: K=0K = 0K=0

Subtask2 5%: N=1N = 1N=1

Subtask3 5%: N=2N = 2N=2

Subtask4 5%: K=1K = 1K=1

Subtask5 20%:N≤10N \le 10N≤10

Subtask6 20%:K=2K = 2K=2

Subtask7 20%:M=0M = 0M=0

Subtask8 20%:没有特殊的约定.

题解

神题。(orz场正解的神犇szm)
k≤2k\le2k≤2的特判即可,下面考虑k=3k=3k=3的情况。
为了方便(解决顺时针同构和环的问题),把题目转化为第一个点为1,最后一个点为2或3或4的方案数,就变成序列上的计数问题。
先考虑m=0m=0m=0的情况。
先考虑算第一个点为1,最后一个点为2的方案数。直接DP不太可行,先手玩一下前几个数怎么填,发现在填完前几个数后,会转化为类似的子问题:第一个数为i+1i+1i+1,最后一个数为iii,在其间填上i+2...ni+2...ni+2...n的方案数,这正好是原问题翻转的结果。
于是记f[i]f[i]f[i]为第一个数为iii,最后一个数为i+1i+1i+1,在其间填上i+2…ni+2…ni+2…n的方案数,g[i]g[i]g[i]为第一个数为i+1,最后一个数为i,在其间填上i+2…ni+2…ni+2…n的方案数。发现f[i]f[i]f[i]恰好能由g[i+1],g[i+2],g[i+4],g[i+5]g[i+1],g[i+2],g[i+4],g[i+5]g[i+1],g[i+2],g[i+4],g[i+5]转移过来,g[i]g[i]g[i]同理,对于i>=n−6i>=n-6i>=n−6的DP值爆搜即可,于是该问题解决。
对于不满关系的限制,在爆搜和转移时分别判断一下是否合法即可。
再考虑最后一个点为2、3的情况,用刚才的思路,同样可以转移到一些DP值,再判一下初始的位置是否合法即可。

(CSP2019模拟)DTOJ 4632. 隐蔽的居所相关推荐

  1. #4632. 隐蔽的居所

    题目描述 在小G的家乡,有很多人住在一个大湖的边上. 他告诉小D,这个大湖可以被视作一个圆.一共有 NNN 户人家, 他们住在这个圆的 NNN 等分点上,每个 NNN 等分点上恰好有一户人家. 这里的 ...

  2. (CSP2019模拟)DTOJ 4624. 树

    题意 给定一棵 n n n 个结点的树,共有 q q q 次询问. 第 i i i 次询问首先包含了三个数 k i , m i , r i k_i,m_i,r_i ki​,mi​,ri​ ,接着给定了 ...

  3. (CSP2019模拟)DTOJ 4650. 暗雪

    题意 有nnn个物品,其中有一个是特殊的,每个物品有pip_ipi​的概率是特殊的.每次可以询问一个集合是否有特殊物品,要求在kkk次询问内找出,且期望询问次数最少. 题解 先把题意转换为:构造一颗深 ...

  4. (CSP2019模拟)DTOJ 4646. block

    题意 给定 nnn 个点,每个点有两个属性 valueivalue_ivaluei​ 和 keyikey_ikeyi​ 表示这个点的权值和关键字.要求将这 nnn 个点排成一个序列,满足 ∀1≤i≤n ...

  5. Webbots、Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)

    <Webbots.Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)> 基本信息 原书名: Webbots,Spiders,and Screen Scrape ...

  6. 【序列化】UNSAFE_DESERIALIZATION 不安全的反序列化和反序列化漏洞

    文章目录 Unsafe Deserialization 反序列化漏洞 背景 认识Java序列化与反序列化 用途 应用场景 Java中的API实现: 序列化基础类型参数 序列化对象 漏洞是怎么来的呢? ...

  7. Linux 模拟基于进程的隐蔽通道(修改文件名)

    Linux 模拟基于进程的隐蔽通道(修改文件名) 目录 Linux 模拟基于进程的隐蔽通道(修改文件名) 实验要求 实验步骤 流程图 具体代码 文件监听程序(process_p2.c) 文件修改程序( ...

  8. ARP欺骗原理与模拟

    ARP欺骗原理与模拟 本文只是协议学习中的心得,所示范的试验方法仅用作学习的目的,请大家不要恶意使用 一 什么是ARP协议? ARP协议是"Address Resolution Protoc ...

  9. Session的模拟

    Session相关的mock Session相关的mock主要有以下两个步骤: 1) HttpContext对象的实例化 ² session属于HttpContext对象,所以简单来说,就是我们需要构 ...

最新文章

  1. 每日一皮:男人有三宝「胡子、发型和肌肉」...
  2. python3 四舍五入
  3. Spring 2.5:Spring MVC中的新特性
  4. Spring AOP之ThrowsAdvice
  5. 童年各大名场面~ | 今日最佳
  6. POJ3250(单调栈)
  7. do while(false)实用技巧
  8. 温州近10%的网站存在高危安全漏洞
  9. html 图片 把绝对路径改为相对路径,html中想把图片绝对路径 改成相对路径怎么操作?...
  10. 怎样打开.jar格式文件,怎样运行.jar格式文件
  11. 吴伯凡-认知方法论-知行合一的本质
  12. 小白怎么入门网络安全?
  13. android手机电池寿命,手机电池寿命检测
  14. spring gateway route超时时间原理解析和gateway调用流程
  15. 问题1:老毛桃一键装机打开后安装目录只显示u盘
  16. 家·谱——人脸识别家谱系统
  17. 【ARM裸机s5pv210 】程序烧录
  18. ARM工控主板比X86工控主板好吗?
  19. 没用的大用_拔剑-浆糊的传说_新浪博客
  20. 每天小练笔10-小和尚挑水(回溯法)

热门文章

  1. 波士顿动力 Spot 机器人的测评视频来了
  2. 怎么从安卓设备转移数据到苹果_安卓换苹果如何转移数据?
  3. 基于element- table 实现表格动态数据,表头渲染
  4. 基于python环境的人脸签到系统[带数据库存储]
  5. maven打包出错 Error injecting constructor, java.lang.NoClassDefFoundError
  6. Mgc token十问(上)
  7. Linux(ubuntu)mysql数据库主从同步、配置
  8. SBCSDN-mysql中sfz号升级
  9. WPF项目-按着键盘方向键,移动格子盒子效果
  10. 基于php115课程辅助教学系统