有点置换群的味道。当撞开一个门后,能打开一连串的门,即是可以排成一个圈。求的是种数,于是,可以使用第一类斯特林数,求出撞了0~K次的种数。但是,注意,当第一个门为独自一个圈时,是不可行的,因为这代表第一个门要撞开,这违犯规则。所以,把第一个门独立成圈的情况去掉。即是求出S(N-1,K-1)以前的各种...
转载
2014-10-12 14:51:00
89阅读
2评论
最小生成树
转载
2011-07-26 19:05:00
39阅读
2评论
fft 分治虽然是万能的,但是太慢了 分治是nlog^2n的,太慢了,于是我们用求逆和开根 设f(x)表示答案为x的方案数 c表示物品的生成函数 那么f=f*f*c+1 f*f表示左右儿子的方案数 c表示根的方案数 +1是空树,也就是+上t(x)=1这个生成函数 然后求根公式得出f=2/(1+sqr
转载
2017-12-19 09:08:00
45阅读
2评论
hdu3625 题意: 酒店发生一起谋杀案。作为镇上最好的侦探,您应该立即检查酒店的所有N个房间。但是,房间的所有门都是锁着的,钥匙刚锁在房间里,真是个陷阱!您知道每个房间里只有一把钥匙,并且所有可能的分配可能性均等。例如,如果N = 3,则有6种可能的分布,每种分布的概率为1/6。为方便起见,我们
转载
2019-09-21 15:31:00
42阅读
2评论
题目大意:有n个房间,n!个钥匙,在房间中,最多可以破k扇门,然后得到其中的钥匙,去开其它的门,但是第一扇门不可以破开,求可以打开所有门的概率。题解:首先,建立这样的一个模型,题目相当于给出一个图,求形成1--K个环的可能性有多大。但是节点1不可以形成子环。那么首先,n个点形成1--k个环就是第一类斯特灵数的定义,但是该如何处理1的问题呢,既然算起来比较麻烦,那么正难则反,减去节点1成为自环的情况就可以了。第一类斯特林公式:S(m,n)=(m-1)*S(m-1,n)+S(m-1,n-1)。#include #include using namespace std;long long ans[2
转载
2014-01-18 09:10:00
33阅读
Building Roads
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 12244 Accepted: 3458DescriptionFarmer John had just acquired several new farms! He wants to con
原创
2023-02-08 07:42:58
89阅读
给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例1: 输入:nums = [3,0,1] 输出:2 解释:n =3,因为有3个数字,所以所有的数字都在范围 [0,3] 内。2是丢失
原创
2023-05-05 14:06:09
106阅读
非常好的树剖模板题了,直接C颗线段树上去就好了,动态开点一次写对~#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include#include#include#define N 100010#define m...
转载
2017-12-13 20:29:00
51阅读
2评论
非常好的树剖模板题了,直接C颗线段树上去就好了,动态开点一次写对~#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include#include#include#define N 100010#define mid (l+r>>1)using...
转载
2017-12-13 20:29:00
54阅读
2评论
"Link" 先不管$1$号点的限制,$k$次破能够全部打开的充要条件是构成了$\le k$个环。而$1$号点无法被打开的充要条件是自成一环。 因此答案就是$\frac{\sum\limits_{i=1}^k\left[_i^n\right]\left[_{i 1}^{n 1}\right]}{n!
转载
2020-01-29 07:56:00
63阅读
2评论
图论 最小生成树 kruskal
转载
2016-09-14 15:54:00
94阅读
2评论
Building Roads Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9360 Accepted: 2690 Description Farmer John had just acquired several new fa
转载
2017-07-03 17:23:00
58阅读
2评论
来源:http://poj.org/problem?id=3625题意:平面上有一些点,这些点的坐标已知。求连接起这些点最少的长度是多少。其中有一些点已经连接了起来。思路:其实还是最小生成树了。只不过这道题由于边太多,所以用kruskal超时,可以用prime轻松解决。下面简述一下prime算法的思想:prime算法是基于贪心的一种算法。首先我们可以选择一个点,并标记该点已经被访问过。然后从和该点相连的边中选择出一条长度最小的,该条边一定是最小生成树中的边。并且把这个点记录下来,并标记为访问过。然后从所有访问过的点中更新边,如果有能更新的边,则更新就可以了。该题代码:#include <
转载
2012-08-18 20:15:00
28阅读
2评论
HP新上市超级性价比本本3625
高配:3629
很多朋友都在为显卡及声卡驱动发愁,现将其落列出.
原创
2007-10-03 12:29:19
1713阅读
1评论
题目背景XS中学化学竞赛组教练是一个酷爱炉石的人。他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛CON900)。题目描述这之后校长任命你为特派探员,每天记录他的点名。校长会提供化学竞赛学生的人数和名单,而你需要告诉校长他有没有点错名。(为什么不直接不让他玩炉石。)输入输出格式输入格式: 第一行一个整数 n
士兵站队问题 题目描述 Description 在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点用整数坐标(x,y)表示。士兵们可以沿网格边往上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵。按照军官的命令,士兵们要整齐地列成一个水平队列,即排列成(x,y),(x+1,y)
转载
2017-03-22 09:20:00
297阅读
2评论
P3625 [APIO2009]采油区域(前缀和)前缀和的好题。考虑将矩形分成三部分有多少情况。一共只有六种。然后就是预处理4个角的最大值前缀和值,和从第i行到第j行的最大前缀和值,第i列到第j列的最大前缀和值。一般矩形范围在n,m≤103n,m\le 10^3n,m≤103的,显然就是O(nm)O(nm)O(nm)的解法。时间复杂度:O(nm)O(nm)O(nm)// Problem: P3625 [APIO2009]采油区域// Contest: Luogu// URL: https:
原创
2021-08-25 10:36:35
22阅读
Description 原题链接 Solution 很巧妙的一种思想:分类讨论 分为 6 种情况,如下图: 可以发现,每一张图都被分为了 3 块,我们就可以分别在这三个部分中各选择一个 \(k * k\) 的矩形,取最大值。 具体实现: 首先要进行预处理,设一个点为 \((x, y)\) 我们要预处 ...
转载
2021-09-29 23:42:00
64阅读
P3625 [APIO2009]采油区域(前缀和)前缀和的好题。考虑将矩形分成三部分有多少情况。一共只有六种。然后就是预处理4个角的最大值前缀和值,和从第i行到第j行的最大前缀和值,第i列到第j列的最大前缀和值。一般矩形范围在n,m≤103n,m\le 10^3n,m≤103的,显然就是O(nm)O(nm)O(nm)的解法。时间复杂度:O(nm)O(nm)O(nm)// Problem: P3625 [APIO2009]采油区域// Contest: Luogu// URL: https:
原创
2022-01-20 15:07:40
114阅读
与第二类有些区别!#include #include #include #include #include #include #include #include #include using namespace std;#define INF 0x3ffffffftypedef long long int LL;#define N 22LL dp[N][N];LL sum[N];int main(){ //freopen("//home//chen//Desktop//ACM//in.text","r",stdin); //freopen("/
转载
2013-07-17 18:18:00
63阅读