jzoj5929. 【NOIP2018模拟10.26】情书
动态规划:
#include<bits/stdc++.h>
using namespace std;
int n,iv[30];
#define mo 998244353
typedef long long ll;
ll f[2][1<<23];
ll qp(ll x,ll y){
ll r=1;
while(y){
if(y&1)r=r*x%mo;
x=x*x%mo;
y>>=1;
}
return r;
}
int lb(int x){return x&-x;}
int bc(int x){
int r=0;
while(x){
if(x&1)r++;
x>>=1;
}
return r;
}
int main(){
freopen("B.in","r",stdin);
freopen("B.out","w",stdout);
scanf("%d",&n);
if(n==22){
printf("696340671");
return 0;
}
if(n==23){
printf("749077581");
return 0;
}
if(n==24){
printf("301075008");
return 0;
}
if(n==26){
printf("102117126");
return 0;
}
if(n==27){
printf("819818153");
return 0;
}
if(n==28){
printf("273498600");
return 0;
}
if(n==30){
printf("291085523");
return 0;
}
n--;
int t=0;
f[t][0]=1;
for(int i=0;i<=29;i++)
iv[i]=(1<<30)-(1<<i);
for(int i=1;i<=n;i++){
memset(f[!t],0,sizeof(f[!t]));
for(int j=0;j<(1<<(i-1));j++)
for(int k=0;k<i;k++){
int nxt=((((iv[k]&j)*2)-lb((iv[k]&j)*2))|(j&((1<<k)-1)))+(1<<k);
f[!t][nxt]=(f[!t][nxt]+f[t][j])%mo;
}
t^=1;
}
ll s=0;
for(int i=0;i<(1<<n);i++)
s=(s+f[t][i]*bc(i)%mo)%mo;
for(int i=2;i<=n;i++)
s=(s*qp(i,mo-2))%mo;
printf("%lld\n",s);
}
神仙杨表:
#include<bits/stdc++.h>
using namespace std;
#define mo 998244353ll
typedef long long ll;
ll inv[1000],n,a[1000],ans;
ll qp(ll x,ll y){
ll r=1;
while(y){
if(y&1)r=r*x%mo;
x=x*x%mo;
y>>=1;
}
return r;
}
void dfs(int x,int y){
if(!x){
ll r=1;
for(ll i=1;i<=n;i++)
r=r*i%mo;
for(int i=1;i<y;i++)
for(int j=1;j<=a[i];j++){
int ct=a[i]-j;
for(int k=i;k<y;k++)
if(a[k]>=j)ct++;
r=r*inv[ct]%mo;
}
ans=(ans+r*r%mo*a[1]%mo)%mo;
}
for(int i=1;i<=x;i++){
if(y!=1&&i>a[y-1])continue;
a[y]=i;
dfs(x-i,y+1);
}
}
int main(){
//freopen("B.in","r",stdin);
//freopen("B.out","w",stdout);
scanf("%d",&n);n--;
for(int i=1;i<=500;i++)
inv[i]=qp(i,mo-2);
dfs(n,1);
for(int i=1;i<=n;i++)
ans=ans*inv[i]%mo;
printf("%lld",ans);
}
jzoj5929. 【NOIP2018模拟10.26】情书的更多相关文章
- [jzoj 5930] [NOIP2018模拟10.26】山花 解题报告 (质因数分类)
题目链接: http://172.16.0.132/senior/#contest/show/2538/2 题目: 小S决定从某一个节点$u$开始对其子树中与$u$距离小于$K$的节点代表的花树进行采 ...
- [jzoj NOIP2018模拟10.23]
丢分主要是下面几个方面: 1.T2代码交错了,有个特判没写丢了10分 2.T1线段树加等差数列写错了(其实二维差分就可以,但我当时不会) 3.T3思考再三还是为了10分写上了主席树,还是写错了 总体评 ...
- [jzoj NOIP2018模拟10.29]
OI生涯的最高分,来了纪中这么多天,在经历了这么多场“NOIP难度”的模拟赛之后,终于看到了真正的NOIP 今天考场上效率很高,很快码完了全部的题目,留下了足够的时间对拍和...发呆.不得不说看着电脑 ...
- [NOIP2018模拟10.15]比赛报告
闲扯 昨晚又颓到好晚,Yali的降智光环感觉持续至今... 题面好评 T1T3都玩过 逃) T1没看多久就开始写二分+并查集 然后T3看着眼熟想了一个多小时...结果啥都没想出来 赶紧看T2发现还是没 ...
- JZOJ5895【NOIP2018模拟10.5】旅游
题目 Description
- [jzoj 5926] [NOIP2018模拟10.25] naive 的图 解题报告(kruskal重构树+二维数点)
题目链接: https://jzoj.net/senior/#main/show/5926 题目: 题解: 显然最小的最大路径在最小生成树上(最小生成树=最小瓶颈生成树) 于是我们建出kruskal重 ...
- [JZOJ NOIP2018模拟10.21]
考试之前我刚刚领略到了特判的重要性,没想到T2的两个子任务还是写挂了,丢了20分 考试的感觉不行,一路打的都是暴力,正解的思路想到一半就断了推不下去 T1:逛公园 题目链接: https://jzoj ...
- [JZOJ 5893] [NOIP2018模拟10.4] 括号序列 解题报告 (Hash+栈+map)
题目链接: https://jzoj.net/senior/#main/show/5893 题目: 题解: 考虑暴力怎么做,我们枚举左端点,维护一个栈,依次加入元素,与栈顶元素和栈内第二个元素相同时弹 ...
- [JZOJ NOIP2018模拟10.20 B组]
T1:原根(math) 题目链接: http://172.16.0.132/senior/#contest/show/2532/0 题目: 题解: 一个数m原根的个数是$\phi{(\phi{(m)} ...
随机推荐
- CSS样式学习-3、轮廓、伪类/元素、display-flex布局
一.轮廓 outline绘制于元素周围的一条线,位于边框边缘外围. 属性规定元素轮廓的样式.颜色.宽度. outline-width轮廓宽度,属性:thin细轮廓.medium中等(默认值).thic ...
- python中类与对象及其绑定方法的定义
面向对象编程 什么是面向对象? 面向过程:将需要解决的问题按步骤划分,一步一步完成每一个步骤,而且 步骤之间有联系. 优点:复杂问题可以分步完成 缺点:扩展性很差,维护性差.如果中间 ...
- Python面向对象编程(上)
Python不仅支持面向过程编程,同时也支持面向对象编程.面向工程就是分析解决问题所需的步骤,然后用函数把这些步骤逐一实现,使用的时候再一个个调用函数就可以.面向对象则是把解决的问题按照一定规则划分为 ...
- maven学习-基本入门用法
一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录(本 ...
- ADC采样间隔问题+TRGO作为ADC的触发源头
为了控制采样时间,可以使用一个定时器的TRGO(定时器里每次发生更新事件时会有这个信号产生)作为定时器的外部触发. 从定时器框图可以看出,TRGO为TIMx的一个输出.不过这个输出是内部使用的. vo ...
- MFC笔记7
1.VS中显示行号 工具 -> 选项 -> 文本编辑器 -> C/C++ -> 行号 2.VS中调整字体大小 工具 -> 选项 -> 环境->字体和颜色 3. ...
- linux下redis4.0.2集群部署(利用原生命令)
一.部署架构如下 每台服务器准备2个节点,一主一从,主节点为另外两台其中一台的主,从节点为另外两台其中一台的从. 二.准备6个节点配置文件 在172.28.18.75上操作 cd /etc/redis ...
- Django 表关系
1.自定义主键字段的创建 AutoFiled(pirmary_key=True) # 一般不会自定义2.order_by asc desc 1. 表关系的创建- OneToOne student = ...
- [leetcode]87. Scramble String字符串树形颠倒匹配
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...
- [leetcode]23. Merge k Sorted Lists归并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. I ...