BZOJ4321: queue2】的更多相关文章

考虑套路地将1~n依次加入排列.设f[i][j]为已将1~i加入排列,有j对不合法的方案数.加入i+1时可能减少一对不合法的,可能不变,可能增加一对,对于i+1与i的关系再增设0/1/2状态表示i与左边/右边的数是否构成不合法对即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorit…
题面 传送门 Sol 先设一个套路的状态:\(f[i][j]\)表示到第\(i\)个人,有\(j\)对冲突 但是我们不能确定\(i-1\),所以不好决策i的位置 所以再加一维\(0/1\),\(f[0/1][i][j]\)表示\(i\)和\(i-1\)是否有冲突 每枚举一个人,我们就要把它插入到之前的队列中 转移: \(f[0][i][j]\): 乘上\(j\),转移给\(f[0][i+1][j-1]\),表示消除一个冲突 乘上\(i+1-j-2\),转移给\(f[0][i+1][j]\),表示…
Description n 个沙茶,被编号 1~n.排完队之后,每个沙茶希望,自己的相邻的两人只要无一个人的编号和自己的编号相差为 1(+1 或-1)就行.现在想知道,存在多少方案满足沙茶们如此不苛刻的条件.  Input 只有一行且为用空格隔开的一个正整数 N,其中 100%的数据满足 1≤N ≤ 1000. Output 一个非负整数,表示方案数对 7777777 取模.    Sample Input 4 Sample Output 2 样例解释:有两种方案 2 4 1 3 和 3 1 4…
woc万能的OEIS大法!这题居然是有递推式的QAQ http://oeis.org/A002464 这题的状态想不出来T^T... f[i][j][0/1]表示前i个编号,有j对相邻的编号位置上相邻,i和i-1是否相邻 先考虑f[i][j][1]怎么转移. i和i-1相邻,如果i-1和i-2相邻的话,可以选择把i插入这两个中间,这样相邻的对数不会增加,所以可以从f[i-1][j][1]转移.也可以不插入这两个数之间,而是放在i旁边,这样相邻对数会+1,所以可以从f[i-1][j-1][1]转移…
题目描述 n 个沙茶,被编号 1~n.排完队之后,每个沙茶希望,自己的相邻的两人只要无一个人的编号和自己的编号相差为 1(+1 或-1)就行:  现在想知道,存在多少方案满足沙茶们如此不苛刻的条件.  输入 只有一行且为用空格隔开的一个正整数 N,其中 100%的数据满足 1≤N ≤ 1000;  输出 一个非负整数,表示方案数对 7777777 取模.    样例输入 4 样例输出 2 题解: 考虑从小到大插入,f[i][j]表示前i个数,有j组相邻,且i和i-1不相邻 g[i][j]   …
题目描述 n 个沙茶,被编号 1~n.排完队之后,每个沙茶希望,自己的相邻的两人只要无一个人的编号和自己的编号相差为 1(+1 或-1)就行:  现在想知道,存在多少方案满足沙茶们如此不苛刻的条件.  输入 只有一行且为用空格隔开的一个正整数 N,其中 100%的数据满足 1≤N ≤ 1000;  输出 一个非负整数,表示方案数对 7777777 取模.    样例输入 4 样例输出 2 题解 dp 老套路了,考虑把数从小到大插入的过程进行dp. 设 $f[i][j]$ 表示 $1\sim i$…
4321: queue2 Description n 个沙茶,被编号 1~n.排完队之后,每个沙茶希望,自己的相邻的两人只要无一个人的编号和自己的编号相差为 1(+1 或-1)就行: 现在想知道,存在多少方案满足沙茶们如此不苛刻的条件.  Input 只有一行且为用空格隔开的一个正整数 N,其中 100%的数据满足 1≤N ≤ 1000;  Output 一个非负整数,表示方案数对 7777777 取模.    Sample Input 4 Sample Output 2 样例解释:有两种方案…
dp(i, j, 1)表示前i个, 有j对是不合法的, i和i-1是在一起的. dp(i, j, 0)表示前i个, 有j对是不合法的, i和i-1不在一起的. 转移我们只需考虑是多了一对不合法的还是少了一对不合法的, 或者是不变, 考虑当前i和i-1,i-2的位置的影响就可以了. dp(i, j, 1) = 2*dp(i-1, j-1, 0) + dp(i-1, j-1, 1) + dp(i-1, j, 1) dp(i, j, 0) = (i-j-2)*dp(i-1, j, 0) + (j+1)…
queue2 HYSBZ - 4321 n 个沙茶,被编号 1~n.排完队之后,每个沙茶希望,自己的相邻的两 人只要无一个人的编号和自己的编号相差为 1(+1 或-1)就行:  现在想知道,存在多少方案满足沙茶们如此不苛刻的条件. Input 只有一行且为用空格隔开的一个正整数 N,其中 100%的数据满足 1≤N ≤ 1000;  Output 一个非负整数,表示方案数对 7777777 取模.      Sample Input 4 Sample Output 2 样例解释:有两种方案 2…
这个题的dp真的恶心.首先,一开始我以为是一道数论题,但是组合数和这个题没啥关系.dp方程巨麻烦,状态是dp[i][j][0/1],代表i位连了j个,上一位是否连着.然后开始转移,证明如下: 我们先来分析i-1,i相邻,也就是f[i][j][1]怎么推. 对于i,i-1,i-2,有这几种关系, 本来i-1与i-2相邻,将i插入两者中,拆了一对(i-1,i-2),又形成了一对(i-1,i),这样方案来源于f[i-1][j][1]. 本来i-1与i-2相邻,将i插入与i-1相邻却不被i-1与i-2夹…