完了感觉最近留了好多坑的说,这题也是模模糊糊地会一点

首先我们发现题目要求的是单调不上升的序列个数,那么一个套路就是用值减去下标

然后考虑连续位置的限制,这个我们做一个置换然后尽量向后取

这样拿值和位置卷积就变成了合法方案数的分子\(\times\)总方案数的分母?

感觉策不太懂啊,QQ上加了一个dalao问下细节,具体的到时候来填吧

先把CODE放了

#include<cstdio>
#include<cctype>
#define RI register int
#define CI const int&
#define Tp template <typename T>
using namespace std;
const int N=500005,mod=1004535809;
int n,m,len,lim,a[N],b[N],fact[N],F[N<<3],G[N<<3],ans;
class FileInputOutput
{private:static const int S=1<<21;#define tc() (A==B&&(B=(A=Fin)+fread(Fin,1,S,stdin),A==B)?EOF:*A++)char Fin[S],*A,*B;public:Tp inline void read(T& x){x=0; char ch; while (!isdigit(ch=tc()));while (x=(x<<3)+(x<<1)+(ch&15),isdigit(ch=tc()));}#undef tc
}File;
inline void maxer(int& x,CI y)
{if (y>x) x=y;
}
inline int quick_pow(int x,int p=mod-2,int mul=1)
{for (;p;p>>=1,x=1LL*x*x%mod) if (p&1) mul=1LL*mul*x%mod; return mul;
}
class Poly_solver
{private:int rev[N<<3],p;inline void swap(int& x,int& y){int t=x; x=y; y=t;}inline int sum(CI a,CI b){int t=a+b; return t>=mod?t-mod:t;}inline int sub(CI a,CI b){int t=a-b; return t<0?t+mod:t;}public:inline void init(CI n){for (lim=1,p=0;lim<=n;lim<<=1,++p);for (RI i=0;i<lim;++i) rev[i]=(rev[i>>1]>>1)|((i&1)<<p-1);}inline void NTT(int *f,CI opt){RI i; for (i=0;i<lim;++i) if (i<rev[i]) swap(f[i],f[rev[i]]);for (i=1;i<lim;i<<=1){int m=i<<1,D=quick_pow(3,~opt?(mod-1)/m:mod-1-(mod-1)/m);for (RI j=0;j<lim;j+=m){int W=1; for (RI k=0;k<i;++k,W=1LL*W*D%mod){int x=f[j+k],y=1LL*f[i+j+k]*W%mod;f[j+k]=sum(x,y); f[i+j+k]=sub(x,y);}}}if (!~opt){int Inv=quick_pow(lim); for (i=0;i<lim;++i) f[i]=1LL*f[i]*Inv%mod;}}
}P;
int main()
{//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);RI i; for (File.read(n),i=1;i<=n;++i)File.read(a[i]),b[a[i]]=i,++F[a[i]-i+n];for (i=m=a[1];i;--i) maxer(b[i],b[i+1]),++G[b[i]-i+m];for (P.init((len=n+m)<<1),P.NTT(F,1),P.NTT(G,1),i=0;i<lim;++i)F[i]=1LL*F[i]*G[i]%mod; for (P.NTT(F,-1),i=ans=1;i<=len;++i)ans=1LL*ans*quick_pow(i,F[i-1+n+m])%mod; ans=quick_pow(ans);for (fact[0]=i=1;i<=m;++i) fact[i]=1LL*fact[i-1]*i%mod;for (i=1;i<=n;++i) ans=1LL*ans*fact[a[i]]%mod;return printf("%d",ans),0;
}

转载于:https://www.cnblogs.com/cjjsb/p/10691385.html

LOJ #6051. 「雅礼集训 2017 Day11」PATH相关推荐

  1. LOJ #6052. 「雅礼集训 2017 Day11」DIV

    完了我是数学姿势越来越弱了,感觉这种CXRdalao秒掉的题我都要做好久 一些前置推导 首先我们很容易得出\((a+bi)(c+di)=k \Leftrightarrow ac-bd=k,ad+bc= ...

  2. [LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相(树的重心+贪心)

    [LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相 description solution 一个到所有节点距离和最小的节点 ⇔\Leftrightarrow⇔ 树的重心(满足最重的儿 ...

  3. loj #6046. 「雅礼集训 2017 Day8」爷

    #6046. 「雅礼集训 2017 Day8」爷 题目描述 如果你对山口丁和 G&P 没有兴趣,可以无视题目背景,因为你估计看不懂 -- 在第 63 回战车道全国高中生大赛中,军神西住美穗带领 ...

  4. Loj 6036 「雅礼集训 2017 Day4」编码 - 2-sat

    题目传送门 唯一的传送门 题目大意 给定$n$个串,每个串只包含 '0','1','?' ,其中 '?' 至多在每个串中出现1次,它可以被替换为 '0' 或 '1' .问是否可能任意两个不同的串不满足 ...

  5. LOJ#6044. 「雅礼集训 2017 Day8」共(Prufer序列)

    题面 传送门 题解 答案就是\(S(n-k,k)\times {n-1\choose k-1}\) 其中\(S(n,m)\)表示左边\(n\)个点,右边\(m\)个点的完全二分图的生成树个数,它的值为 ...

  6. LOJ#6048. 「雅礼集训 2017 Day10」数列(线段树)

    题面 传送门 题解 我的做法似乎非常复杂啊-- 首先最长上升子序列长度就等于把它反过来再接到前面求一遍,比方说把\(2134\)变成\(43122134\),实际上变化之后的求一个最长上升子序列和方案 ...

  7. 【思维题 细节】loj#6042. 「雅礼集训 2017 Day7」跳蚤王国的宰相

    挂于±1的细节-- 题目描述 跳蚤王国爆发了一场动乱,国王在镇压动乱的同时,需要在跳蚤国地方钦定一个人来做宰相. 由于当时形势的复杂性,很多跳蚤都并不想去做一个傀儡宰相,带着宰相的帽子,最后还冒着被打 ...

  8. loj 6038「雅礼集训 2017 Day5」远行

    http://www.elijahqi.win/archives/3236 题目描述 Miranda 生活的城市有 N NN 个小镇,一开始小镇间没有任何道路连接.随着经济发现,小镇之间陆续建起了一些 ...

  9. 【刷题】LOJ 6038 「雅礼集训 2017 Day5」远行

    题目描述 Miranda 生活的城市有 \(N\) 个小镇,一开始小镇间没有任何道路连接.随着经济发现,小镇之间陆续建起了一些双向的道路但是由于经济不太发达,在建设过程中,会保证对于任意两个小镇,最多 ...

最新文章

  1. 测试驱动开发与行为驱动开发中的测试先行方法
  2. 大脑如何判断该睡觉了?可能是这80种蛋白说了算
  3. 《高效程序员的修炼》 读书笔记
  4. logrotate测试_使用 logrotate 对 apache/nginx 日志切割
  5. Nginx模块学习之————accesskey权限模块使用(简单的m3u8防盗链)
  6. 即将从TechReady5归来
  7. SCSS 实用知识汇总
  8. 下班忘打卡了什么后果_工厂园区安装人脸识别门禁系统有什么好处?
  9. 转document.documentElement和document.body的区别
  10. windows下python环境搭建_Win7怎么搭建Python环境 win7系统搭建Python环境的方法
  11. C#判断联网状态检查电脑联网状态
  12. 2008年12月信息处理技术员上午试卷 51CTO版参考答案
  13. 九度 1188 约瑟夫环问题
  14. php验证qq,正则表达式验证qq号码是否输入正确
  15. oracle12c 重启服务,OBIEE12c的服务启动/关闭命令
  16. Linux系统Docker配置阿里云镜像加速器
  17. 树莓派设置屏幕待机时间
  18. [C语言]插入字符A:用字符数组作函数参数,编程实现在字符串每个字符间插入一个空格的功能。
  19. 2022年PMP最新报名流程来了! PMP考生看过来!
  20. Android Bluetooth HF client相关接口以及定义

热门文章

  1. 浅谈.net事件机制
  2. 【恋上数据结构】排序算法大全
  3. JZ55 二叉树深度
  4. dao-service-servlet-jsp构建简易web通讯录(三层开发)预备知识
  5. 没有业务思维,数据分析只能是一堆废纸
  6. VS-watch窗口
  7. php导出excel表格例子,PHP导出excel表格示例
  8. 中gcd函数_算法|博弈论入门(函数讲解+真题模板)
  9. Python 之详解深拷贝和浅拷贝
  10. centos系统 查看当前python执行的进程