how to count

news/2025/9/20 21:39:41/文章来源:https://www.cnblogs.com/annika-xym/p/19102922
  • Polygon
    根据范围 dp 还是比较显然的。\(f_{i,j}\):将i边形分成j个多边形的方案数。
    整体思考
    一开始的方向是通过保证每种方案,对于每条分割线计算一次去重,对于每个状态的转移,枚举每条分割线,然后枚举两侧分割个数,对于分割线两侧获得多边形边数相同的情况特殊处理一下。问题在于最后要/(j-1),不保证有逆元。
    从变化/加入的角度考虑
    于是考虑每种方案只计算一次,从i-1边形到i边形的角度考虑。
    新加入的角编号为i,先考虑不用这个点的情况:1.连结其相邻两个点,贡献1,剩下为i-1边形;2.不连结其相邻两点,贡献0,多的这一块和剩下的拼起来。此时\(f_{i,j}=f_{i-1,j}+f_{i-1,j-1}\)。再考虑使用这个点的情况:枚举顺时针起第一个与其相连的点,再枚举两侧分割的个数,其中一侧随便选,另一侧有不和i相连的限制,用类似上面的套路做。code

  • PSequence
    首先\(\bmod p\)分一下组,转化成不同组的不能相邻的排列数(s可能为负,坑)。先只考虑种类,再分配上去。发现直接组合不好做,注意到范围考虑dp。分完类,从逐个种类插入的角度考虑\(p_i\)表示第i类的个数,\(f_{i,k}\)表示做完前i个种类,有k组同类相邻,转移枚举第i类相邻的合并之后的个数j,对于相邻个数有影响的可以这么考虑(4,2,2,1,2,3,2中2类该值即为3),破坏原有相邻相等数对的数量c。具体转移见code

  • 计算n个物品中不相邻地选若干个选法。

    • \(f_i\)为i个,钦定选了i。$f_0=f_1=1 \(,\)f_i=\sum_{j=0}^{i-2} f_j \(,\)ans=\sum_{i=0}^{n}f_i$
    • \(f_i\)为i个的答案,\(f_0=1,f_1=2,f_i=f_{i-1}+f_{i-2}\)
    • 两种状态设法具有参考价值。分别是对边界作出直接限制和从原有状态添加考虑新的选或不选。
  • CF559C Gerald and Giant Chess
    根据范围易得肯定是在黑点上做的。考虑容斥,ans=所有方案-经过黑点的。考虑如何不把经过黑点的算重,用首次去重的方法,\(f_i\)意义为经过的第一个黑点是i的方案数,转移也一样操作。code

  • CF722E Research Rover 妙妙题。首先考虑期望=所有方案贡献总和/方案数,然后注意到贡献种数非常少,除了\(\log s\)次之后就一直是1了,(又是注意到答案取值少的性质啊!)\(g_{i,j}\)表示经过了恰好i个点,现在到j的方案数,然后发现转移要数重,如果按上一个题的做法预处理两个点之间不经过某点方案数,变成\(O(n^3)\)。考虑改变状态意义,把恰好改成至少,差分容斥一下,\(g_{i,j}=f_{i,j}-f_{i+1,j},f_{i,j}=\sum (f_{i-1,k} - f_{i,k})\times coef(k \rightarrow j)\)。这样不会数重是因为钦定了第i-1个是不同的,感觉和通过首个避免算重相似。

  • P6275 [USACO20OPEN] Sprinklers 2: Return of the Alfalfa P
    首先看出最后由一条从\((0,0)\)\((n,n)\)的折线分割,在每个转折点都必须要安装,剩下的随意。总共有S个可安装的点,每种分割线有c个转折点,\(ans = \sum 2^{S-c}\)。注意到dp的目的是减少重复计算次数,每次我们只关心走到了哪个点、上一步横着还是竖着走,而不关心中间的步数,所以状态设计成\(dp_{i,j,0/1}\)表示走到点\((i,j)\)(而非格子),接下来的方向向下/右(注意这步向下/右的还没有走,省去了边界的判断)。转移的时候初始为\(2^S\),后面拐一下\(\times inv_2\)即可。code (这个题可能还可以同时当作一个刻画折线的示范)

  • P10259 [COCI 2023/2024 #5] Piratski kod 之前写过一个比较详细的找不到了/kk。把一个海盗代码拆成一个整块和一个散块。计算散块贡献,然后整块拆成已有整块拼上末尾为1的散块接上一个1。用到了首个防止算重的思想。

  • U111203 题面越来越短了 出现过 -> 1.钦定第一次出现位置(2.考虑钦定至少出现次数)

  • P12028 [USACO25OPEN] Moo Decomposition G 前面限制松,后面限制紧 -> 考虑从后往前做。证明划分不会跨串,考虑如果跨串,最后一个串会被用掉部分O(用M不可能和前面配对),那这个串就无解了。


  • CF1332E Height All the Same 考虑一个初始局面可行的充要条件。考虑转化操作,发现单个+2不会改变奇偶性,所以从此角度考虑;相邻+1会同时改变两个奇偶性,并且叠起来做可以翻转任意两个。当\(nm \bmod 2 = 1\)时,奇偶个数必然一奇一偶,怎么放都成立,\(ans=(R-L+1)^{nm}\)。否则,奇偶个数必须均偶,\(ans=\sum_{2|i} C_{nm}^i \times {c_0}^i \times {c_1}^{nm-i}\)\(c_0,c_1\)分别表示\([L,R]\)中的偶数、奇数个数。发现这个东西长得比较二项式定理(一开始想要把这个硬套二项式定理放到系数上去,但是我们的目的是把这个\(\sum\)消掉啊,系数没有任何作用,直接关于这个的柿子就行),但是只取了奇数项,一开始想把2都除掉,做不了啊!考虑把偶数项消掉,消掉要使用相反数,所以\(ans=\frac{(a+b)^{nm}+(a-b)^{nm}}2\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/908562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第六章 数组

一维数组的使用具有相同类型的若干变量按有序形式组织起来,这些按序排列的同类数据元素称为数组 数组的元素是连续的(元素的内存地址连续) 同一个数组所有的成员都是相同类型 一维数组数据类型 数组名 [常量表达式] …

basic - graph theory

P2860 [USACO06JAN] Redundant Paths G 先转化为加尽量少的边使得图为边双。 注意到边双具有传递性,则先进行缩点。(此处注意tot=1和lst^1的实现细节) 则问题又转化为加尽可能少的边,使一个全是割点的图变成边双。 边…

详细介绍:阻塞 IO为什么叫BIO,非阻塞IO为什么叫NIO,异步IO为什么叫AIO

详细介绍:阻塞 IO为什么叫BIO,非阻塞IO为什么叫NIO,异步IO为什么叫AIOpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family:…

Ubuntu系统使用gcc和Makefile编译C程序

一.用Ubuntu系统编写hello world程序并编译运行 1.用vim命令编写hello world程序代码

构造选记

CF1815B Sum Graph 考虑肯定要把图建成一个特殊形态,考虑链。指定x分别为\(n+1,n+2\)即可做到,这个时候链的实际形态已经确定下来(这里预处理出来链的实现没有想到)。有了链查询n-1次与\(p_1\)的距离,最长的肯定是…

0133_解释器模式(Interpreter)

解释器模式(Interpreter) 意图 给定一种语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 UML 图优点易于扩展文法:由于使用类来表示语言的文法规则,可以通过继承来扩展文…

trick杂记 例题

会把一些不太有分类的trick放在这里,弄得好乱啊! 其实感觉大部分算不上trick,就是一些思考的方向)组合数学。一些决策对总贡献没有影响,可以先钦定它们,在该局面下考虑对总贡献有影响的决策。CF2092E She knows.…

代码随想录算法训练营第四天 | leetcode 24

两两交换链表中的节点 注意:交换两个节点的步骤,采用虚拟节点会更加方便,每次交换的步骤是相同的所以可以使用递归做出来(二刷再做吧),然后就是注意指针是否为空,普通做法时可以将保存交换节点的下一个接地点,…

网络流 最小割、费用流

网络流 最小割、费用流 割 网络流中的割被定义为一种点集的划分方式,源点 \(s\in S\) ,汇点 \(t\in T\) 割 \((S,T)\) 的容量为 \(c(S,T)\) 表示所有从 \(S\) 到 \(T\) 的边的容量之和 最小割问题就是求一个割 \((S,…

DP tricks

乱记随机做到的dptricks 交换状态与答案 适用场景:状态大但是答案小AT_dp_e Knapsack 2 CF176D Hyper String AT_agc033_d [AGC033D] Complexity用map存 写出明显存不了的状态的柿子之后 发现只有比较少的几个会有更新…

碎碎念(十七)

awa听风听雨,留云留意 还在怀念过去吗? 那个清晨一起抓住了温柔的风, 那个午后一起接住了淅沥的雨, 那个黄昏一起数清了着火的云, 那个夜晚一起点亮了暗淡的星。那么现在呢? 只能祈祷吹过相同的风, 只能独自撑起…

OpenCV的一些API的使用

本文章会陆续记录一些OpenCV的API方法

AdMergeX与小川科技最右App合作案例入选中国信通院“高质量数字化转型典型案例集” - 实践

AdMergeX与小川科技最右App合作案例入选中国信通院“高质量数字化转型典型案例集” - 实践2025-09-20 21:19 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !importan…

在 macOS 上准备 CentOS 7.5 离线迁移文件的完整指南

在 macOS 上准备 CentOS 7.5 离线迁移文件的完整指南本地使用的是 macOS,但目标机器是 CentOS 7.5,我们需要特别小心地准备兼容的安装包。以下是详细步骤: 准备工作:在 macOS 上设置环境 1. 创建工作目录 mkdir -p…

2971:抓住那头牛

题目 总时间限制: 2000ms 内存限制: 65536kB 描述 农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式: 1、从X移动…

高效测试的第一步:5个用例设计基础思维模型

测试之路,思维先行。掌握这些基础思维模型,让你在测试领域走得更远更稳。欢迎分享你的测试设计经验和心得!在软件开发领域,测试是确保产品质量的关键环节。而对于测试工作来说,测试用例设计无疑是核心中的核心。一…

MFC Button 控件完全指南:从基础到进阶 - 指南

MFC Button 控件完全指南:从基础到进阶 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

Python笔记总结

python简练记录1 Python语言概述 1.1 走进Python 1.1.1 Python简史 一种解释型的、面向对象的、带有动态语义的高级程序设计语言。 使用Python作为语言的名字,因为Guido是英国幽默剧团 Monty Python飞行马戏团的fans。…

vulnhub靶机:GoldenEye-v1

扫描挖掘本地的IP地址信息: nmap -sT 192.168.111.101发现开放了25,80端口 访问http://192.168.111.101:80提示可以访问/sev-home/ ,访问后让我们输入账号密码,查看页面原代码 访问/terminal.js提示账号Boris,Nata…

8465:马走日

题目 总时间限制: 1000ms 内存限制: 65536kB 描述 马在中国象棋以日字形规则移动。 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上…