由于$p_{i}$是随机的,不断选择最小的、未被操作过的$i$并处理其所在的环一定是最优的,而这样与已知$p_{i}$的区别是,当选择了一个$i=p_{i}$,那么必然失败(而已知$p_{i}$时不会去选择)

考虑令$t=\min_{p_{i}=i或i=A+1}i$,我们只能操作到$t-1$为止,因此即要求:

1.$\forall 1\le i<t,i\ne p_{i}$,同时若$t\le A$,则$p_{t}=t$

2.$\forall A<i\le n$,满足$\exists 1\le j<t,i和j在同一个环中$

对于$1\le i<t,i=p_{i}$的$i$数量容斥,即枚举这个数量$j$,之后这$j$个位置以及$t$(若$t\le A$)可以看作删除(这里有$(-1)^{j}{t-1\choose j}$的系数)

通过容斥,我们就去除了第一个条件(注意:容斥仅仅强制了这$j$个位置满足$p_{i}=i$,对其余位置没有限制),再整理一下,可以看作以下问题——

令$x=t-1-j$(初始是亮的且可以操作)、$y=\max(A-t,0)$(初始是亮的但不能操作)和$z=n-A$(初始不亮),统计$x+y+z$阶的排列:$\forall i\in z$,满足$\exists j\in x,i和j在同一个环中$

(上面的$\in x$指属于这$x$个点中的一个,$y$和$z$类似)

将排列看作一张有向图,每一次插入$i$,有两种可能:

新建一条边$(i,i)$或选择一条边$(x,y)$,删除该边并建立$(x,i)$和$(i,y)$($x$可以等于$y$)

归纳可得这样可以得到所有排列(所对应的有向图),同时我们考虑依次插入$x+y+z$个数,对于前$x$个数是任意的,再填$z$个数,但都只能在之前插入而不能选择自环,最后$y$个数依旧任意

(如果先填$y$个数,那么$z$不能选择仅由$y$组成的环,因此不正确)

根据乘法原理将这些乘起来,即$\frac{x(x+y+z)!}{x+z}$,综合前面答案即为$\sum_{t=1}^{A+1}\sum_{j=0}^{t-1}(-1)^{j}{t-1\choose j}\frac{x(x+y+z)!}{x+z}$,预处理阶乘和逆元就可以做到$o(n+A^{2})$

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 10000005
4 #define mod 1000000007
5 int n,a,ans,fac[N],inv[N],inv_fac[N];
6 int c(int n,int m){
7 return 1LL*fac[n]*inv_fac[m]%mod*inv_fac[n-m]%mod;
8 }
9 int calc(int x,int y,int z){
10 return 1LL*fac[x+y+z]*x%mod*inv[x+z]%mod;
11 }
12 int main(){
13 scanf("%d%d",&n,&a);
14 fac[0]=inv[0]=inv[1]=inv_fac[0]=1;
15 for(int i=1;i<N-4;i++)fac[i]=1LL*fac[i-1]*i%mod;
16 for(int i=2;i<N-4;i++)inv[i]=1LL*(mod-mod/i)*inv[mod%i]%mod;
17 for(int i=1;i<N-4;i++)inv_fac[i]=1LL*inv_fac[i-1]*inv[i]%mod;
18 for(int i=1;i<=a+1;i++)
19 for(int j=0;j<i;j++){
20 int s=1LL*c(i-1,j)*calc(i-1-j,max(a-i,0),n-a)%mod;
21 if (j&1)s=mod-s;
22 ans=(ans+s)%mod;
23 }
24 printf("%d",ans);
25 }

[atAGC045D]Lamps and Buttons的更多相关文章

  1. poj 1176 Party Lamps

    http://poj.org/problem?id=1176 Party Lamps Time Limit: 1000MS   Memory Limit: 10000K Total Submissio ...

  2. party lamps(dfs优化+规律枚举)

    Problem description: To brighten up the gala dinner of the IOI'98 we have a set of N coloured lamps ...

  3. Android 添加ActionBar Buttons

    一.在res/menu文件夹下创建Xml文件 跟标签为menu,设置item <?xml version="1.0" encoding="utf-8"?& ...

  4. Lesson 6 Percy Buttons

    Text I have just moved to a house in Bridge Street. Yesterday a bagger knocked at my door. He asked ...

  5. BUTTONS V. 2.0.0——CSS按钮库

    BUTTONS-V2-CSS库样式职责 CSS库样式职责分离优点 模块样式命名更清晰化 易于维护.扩展性强 动画效果——修改样式后有过度效果,默认样式 源码如下 <!DOCTYPE html&g ...

  6. CodeForces 520B Two Buttons(用BFS)

     Two Buttons time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  7. Codeforces Round B. Buttons

    Manao is trying to open a rather challenging lock. The lock has n buttons on it and to open it, you ...

  8. AngularJs的UI组件ui-Bootstrap分享(七)——Buttons和Dropdown

    在ui-Bootstrap中,Buttons控件和Dropdown控件与form表单中的按钮和下拉框名字很像,但实际上这两个控件有新的含义. 先说Buttons,它是一组按钮,用来实现form表单中的 ...

  9. 使用虚拟按钮(Ghost Buttons)的25个网站

    2014年已经过去大半年了,我们看到网页设计领域出现新的设计趋势. 虚拟按钮(Ghost Buttons)是指具备基本的按钮形状的透明按钮,但有细实线的边框.有些虚拟钮是互动的,点击之后按钮可能会成为 ...

随机推荐

  1. 调试器地址出现大小端紊乱,引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。

    今天在编写一系列新增需求代码后,开始调试代码 发现上个版本正常可运行的代码出现了:引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突. 上个版本数代码 ...

  2. 洛谷3628 APIO2010特别行动队(斜率优化)

    考虑最普通的\(dp\) \[dp[i]=max(dp[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c \] qwq 由于演算纸扔掉了 qwq 所以直接给出最后的 ...

  3. python函数参数类型:位置参数、默认参数、动态参数、关键字参数

    1.位置参数:调用函数的时候传的参数,参数默认按顺序赋值,如果是指定那个参数赋值,不关注顺序.指定参数a=1,b=2 就在函数体内a=1,b=2 2.默认参数:在定义函数的时候,给某个参数设置默认值 ...

  4. programmercarl——数组——二分查找

    二分查找,在经过: 34--https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-arr ...

  5. FastAPI 学习之路(三十八)Static Files

    如果使用前后台不分离的开发方式,那么模板文件中使用的静态文件,比如css/js等文件的目录需要在后台进行配置,以便模板渲染是能正确读到这些静态文件.那么我们应该如何处理呢. 首先安装依赖 pip in ...

  6. SpringCloud微服务实战——搭建企业级开发框架(七):自定义通用响应消息及统一异常处理

      平时开发过程中,无可避免我们需要处理各类异常,所以这里我们在公共模块中自定义统一异常,Spring Boot 提供 @RestControllerAdvice 注解统一异常处理,我们在GitEgg ...

  7. [Beta]the Agiles Scrum Meeting 10

    会议时间:2020.5.25 21:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 暂无 tq 暂无 wjx 实现创建.显示博客作业功能 增加博客作业功能 dzx 实 ...

  8. OO2020 助教工作总结

    1 我的初衷 这一学期的OO助教工作是我一段宝贵的经历,在其中我学习了很多.见识了很多,收获满满.当时报名OO的初衷主要有三方面.首先,我想说OO是我所上过的最好的一门课之一,这门课有这一套从理论讲授 ...

  9. Noip模拟70 2021.10.6

    T1 暴雨 放在第一道的神仙题,不同的做法,吊人有的都在用线段树维护$set$预处理 我是直接$dp$的,可能代码的复杂度比那种的稍微小一点 设$f[i][j][p][0/1]$表示考虑了前$i$列, ...

  10. 為什麼我的手機連Wi-Fi速度總是卡在75Mbps?Wi-Fi速度解惑~帶你一次看懂!

    正文字体大小:大 中 小 為什麼我的手機連Wi-Fi速度總是卡在75Mbps?Wi-Fi速度解惑-帶你一次看懂! (2017-02-21 10:57:48) 转载▼ 标签: wi-fi速度 手機wi- ...