Description

一个长度为 \(n\) 的序列,初始都为 \(0\),你需要求出一个长度为 \(n-1\) 的排列 \(P\), 按照 \(1\) 到 \(n\) 的顺序,每次把 \(P_i\) 和 \(P_i+1\) 染成 \(1\),一个排列的价值为所有的位置都变成 \(1\) 的操作次数,求所有排列的价值和
题面

Solution

我们求出价值为 \(\lceil\frac{n}{2}\rceil\) 到 \(n-1\) 的排列的方案数,然后分别算贡献就行了
操作最多 \(i\) 次的方案数是 \(f[i]\)
恰好 \(i\) 次的方案就是 \(f[i]-f[i-1]\)
而 \(f[i]=C_{i-1}^{n-1-i}\)
具体含义:可以看作是每次可以选择 \(+1,+2\) ,求构成 \(n-2\) 的方案数,我们先默认都 \(+1\),剩下就是选择 \(+0,+1\) 了,只要总共的 \(i-1\) 次操作中有 \(n-1-i\) 个选择了 \(+1\),就一定可以达到目标了

#include<bits/stdc++.h>
using namespace std;
template<class T>void gi(T &x){int f;char c;for(f=1,c=getchar();c<'0'||c>'9';c=getchar())if(c=='-')f=-1;for(x=0;c<='9'&&c>='0';c=getchar())x=x*10+(c&15);x*=f;
}
const int N=1e6+10,mod=1e9+7;
int Fac[N],inv[N],n,f[N];
inline int C(int n,int m){return 1ll*Fac[n]*inv[m]%mod*inv[n-m]%mod;
}
int main(){freopen("pp.in","r",stdin);freopen("pp.out","w",stdout);cin>>n;int ans=0,li=(n+1)/2;Fac[0]=inv[0]=inv[1]=1;for(int i=1;i<=n;i++)Fac[i]=1ll*Fac[i-1]*i%mod;for(int i=2;i<=n;i++)inv[i]=(mod-1ll*(mod/i)*inv[mod%i]%mod)%mod;for(int i=2;i<=n;i++)inv[i]=1ll*inv[i]*inv[i-1]%mod;for(int i=li;i<n;i++)f[i]=1ll*C(i-1,n-1-i)*Fac[i]%mod*Fac[n-1-i]%mod;for(int i=n-1;i>=li;i--)f[i]=(f[i]-f[i-1]+mod)%mod;for(int i=n-1;i>=li;i--)ans=(ans+1ll*i*f[i])%mod;cout<<ans<<endl;return 0;
}

转载于:https://www.cnblogs.com/Yuzao/p/8971726.html

AtCoder Grand Contest 023 C - Painting Machines相关推荐

  1. 【每日亿题#12】AtCoder Grand Contest 021 (A ~ F)全部题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 AtCoder Grand Contest 021 题解 A. Digit Sum 2 B. ...

  2. AtCoder Grand Contest 008: Contiguous Repainting(思维)

    Contiguous Repainting 时间限制: 2 Sec  内存限制: 256 MB 提交: 69  解决: 22 [提交][状态][讨论版][命题人:admin] 题目描述 There a ...

  3. AtCoder Grand Contest 017

    AtCoder Grand Contest 017 A - Biscuits 有\(n\)个数,问有多少个集合的数的和模\(2\)余\(P\). 随便\(dp\)一下就好了. #include< ...

  4. AtCoder题解——AtCoder Grand Contest 048——A - atcoder < S

    题目相关 题目链接 AtCoder Grand Contest 048 A 题,https://atcoder.jp/contests/agc048/tasks/agc048_a. Problem S ...

  5. AtCoder题解 —— AtCoder Grand Contest 050 —— B - Three Coins —— 动态规划

    题目相关 题目链接 AtCoder Grand Contest 050 B 题,https://atcoder.jp/contests/agc050/tasks/agc050_b. Problem S ...

  6. Atcoder Grand Contest 012 B - Splatter Painting解题报告

    题目:http://agc012.contest.atcoder.jp/tasks/agc012_b 有一个n点m边的图,(不一定联通) 还有q个操作:每次将一个点v及其周围距离<=d的点涂成颜 ...

  7. AtCoder Grand Contest 012 B Splatter Painting (反向处理 + 记忆化)

    题目链接  agc012 Problem B 题意  给定一个$n$个点$m$条边的无向图,现在有$q$个操作.对距离$v$不超过$d$的所有点染色,颜色编号为$c$. 求每个点最后的颜色状态. 倒过 ...

  8. AtCoder Grand Contest 012 B Splatter Painting(记忆化搜索)

    题意: 给一个包含N个顶点,M条边,无自环和重边的简单无向图,初始每个点颜色都为0,每条边的长度为1,连接着ai,bi两个节点.经过若干个操作, 每次将与某个点vi距离不超过di的所有点染成某种颜色c ...

  9. Atcoder Grand Contest 010 B - Boxes 差分

    B - Boxes 题目连接: http://agc010.contest.atcoder.jp/tasks/agc010_b Description There are N boxes arrang ...

最新文章

  1. java thumbnails 中心点_java Thumbnails 图片处理的使用
  2. C#设置WebBrowser使用Edge内核
  3. spring第二冲刺阶段第九天
  4. jQuery EasyUI Datagrid组件的完整的基础DOM结构
  5. iphone ios编译ffmpeg
  6. 【牛客 - 551C】CSL 的密码(后缀数组,后缀自动机,随机算法)
  7. ae中心点重置工具_7步学习AE 入门篇 第2步 初学乍练
  8. aspx转发php_asp,php,aspx一句话合集
  9. strtoupper 小写_PHP strtoupper()函数与示例
  10. java 下一代_Java 下一代: 混入和特征
  11. linux cut 命令详解
  12. Docker 容器使用教程
  13. python中wx_python中wx模块的具体使用方法
  14. 渠道生意宝android版,生意宝app安卓版
  15. 数学基础 | (3) cs229概率论基础
  16. 智慧城市智慧路灯解决方案
  17. 系统集成(IBMS)软件的功能
  18. Wireshark基础知识(一)
  19. idea 如何不依赖maven导入本地依赖 jar
  20. 自然语言分词词性标注指代

热门文章

  1. 高级I/O(七)--readv和writev函数
  2. QString包含中文时与char *转换
  3. Leetcode刷题(4)罗马数字转整数
  4. Taro+react开发(26)taro基本骨架
  5. 前端学习(3054):vue+element今日头条管理-状态展示处理
  6. [css] 说说浏览器解析CSS选择器的过程?
  7. [css] 请你解释下什么是浮动和它的工作原理是什么?同时浮动会引起什么问题?
  8. [js] 一道变态题 Number.call.call(Number, undefined, 0) 等于什么?
  9. 前端学习(2310):数据请求和json-server
  10. “约见”面试官系列之常见面试题之第六十篇之事件绑定和普通事件(建议收藏)