[JZOJ6344] 【NOIP2019模拟2019.9.7】Huge Counting
题目
题目大意自己看题去……
正解
比赛时在刚第二题,所以根本没有时间思考……
模型可以转化为从\((x_1,x_2,..,x_n)\)出发到\((1,1)\)的方案数模\(2\)。
方案数就用有重复的排列公式:\(\frac{(\sum{x_i})!}{\prod x_i!}\)
考虑它的奇偶性。显然可以将上面的\(2\)因子个数求出来,减去下面的个数,如果为\(0\)则是奇数。
这个东西也就是下面这条式子:\(\sum_{w=2^i} (\lfloor \frac{\sum_{x_i}}{w} \rfloor-\sum{\lfloor \frac{x_i}{w}\rfloor})\)
显然这条式子是大于等于\(0\)的。我们考虑它是否等于\(0\)。
然后我们就发现,如果有相加的时候有进位,那么它就会对下一位有贡献,而这一位的贡献不变。这意味着上式的值至少加\(1\)。
所以,若要它等于\(0\),一定要保证相加的时候没有进位,也就是每一位上为\(1\)的数至多有\(1\)个。
于是就开始DP:设\(f_{i,S}\)表示从高到低到\(i\)位,\(S\)为贴着上限的状态。
由于有上下界的限制,所以容斥一下就可以了。
代码
using namespace std;
#include <cstdio>
#include <cstring>
#include <algorithm>
#define mo 990804011
#define ll long long
#define N 9
int n;
ll l[N],r[N],lim[N];
ll ans;
ll f[51][512];
inline void upd(ll &a,ll b){a=(a+b)%mo;}
inline ll calc(){
memset(f,0,sizeof f);
f[50][(1<<n)-1]=1;
for (int i=50;i>=1;--i)
for (int j=0;j<1<<n;++j){
if (!f[i][j])
continue;
int s=0;
for (int l=0;l<n;++l)
if (j>>l&1 && !(lim[l]>>i-1&1))
s|=1<<l;
upd(f[i-1][s],f[i][j]);
for (int k=0;k<n;++k)
if (j>>k&1 && lim[k]>>i-1&1 || !(j>>k&1)){
int s_=s&((-1)^1<<k) | ((j>>k&1 && lim[k]>>i-1&1)?1<<k:0);
upd(f[i-1][s_],f[i][j]);
}
}
ll res=0;
for (int i=0;i<1<<n;++i)
res+=f[0][i];
return res%mo;
}
void dfs(int k,int flag){
if (k==n){
ans+=calc()*flag;
return;
}
lim[k]=r[k];
dfs(k+1,flag);
if (l[k]-1>=0){
lim[k]=l[k]-1;
dfs(k+1,-flag);
}
}
int main(){
freopen("c.in","r",stdin);
freopen("c.out","w",stdout);
int T;
scanf("%d",&T);
while (T--){
scanf("%d",&n);
for (int i=0;i<n;++i)
scanf("%lld%lld",&l[i],&r[i]),l[i]--,r[i]--;
ans=0;
dfs(0,1);
ans%=mo;
ans=(ans<0?ans+mo:ans);
printf("%lld\n",ans);
}
return 0;
}
总结
坦白说我的脑子真是太不好了……
[JZOJ6344] 【NOIP2019模拟2019.9.7】Huge Counting的更多相关文章
- jzoj6009. 【THUWC2019模拟2019.1.18】Counting (dp)
Description 羽月最近发现,她发动能力的过程是这样的: 构建一个 V 个点的有向图 G,初始为没有任何边,接下来羽月在脑中构建出一个长度为 E 的边的序列,序列中元素两两不同,然后羽月将这些 ...
- 6424. 【NOIP2019模拟2019.11.13】我的订书机之恋
题目描述 Description Input Output Sample Input 见下载 Sample Output 见下载 Data Constraint 题解 lj题卡线段树 求出每个右端点往 ...
- 6392. 【NOIP2019模拟2019.10.26】僵尸
题目描述 题解 吼题但题解怎么这么迷 考虑一种和题解不同的做法(理解) 先把僵尸离散化,h相同的钦(ying)点一个大小 (可以发现这样每种情况只会被算正好一次) 计算完全被占领的方案,然后1-方案/ ...
- 6389. 【NOIP2019模拟2019.10.26】小w学图论
题目描述 题解 之前做过一次 假设图建好了,设g[i]表示i->j(i<j)的个数 那么ans=∏(n-g[i]),因为连出去的必定会构成一个完全图,颜色互不相同 从n~1染色,点i的方案 ...
- 6377. 【NOIP2019模拟2019.10.05】幽曲[埋骨于弘川]
题目描述 题解 随便bb 详细题解见 https://www.cnblogs.com/coldchair/p/11624979.html https://blog.csdn.net/alan_cty/ ...
- 6364. 【NOIP2019模拟2019.9.20】养马
题目描述 题解 一种显然的水法:max(0,-(点权-边权之和*2)) 这样会挂是因为在中途体力值可能会更小,所以考虑求走完每棵子树所需的至少体力值 考虑从子树往上推求出当前点的答案 设每棵子树从根往 ...
- 6362. 【NOIP2019模拟2019.9.18】数星星
题目描述 题解 一种好想/好写/跑得比**记者还快的做法: 对所有询问排序,按照R递增的顺序来处理 维护每个点最后一次被覆盖的时间,显然当前右端点为R时的答案为所有时间≥L的点的权值之和 LCT随便覆 ...
- 6359. 【NOIP2019模拟2019.9.15】小ω的树(tree)(定期重构)
题目描述 题解 qy的毒瘤题 CSP搞这种码农题当场手撕出题人 先按照边权从大到小建重构树,然后40%暴力修改+查找即可 100%可以定期重构+平衡规划,每次把B个询问拉出来建虚树,在虚树上暴力维护每 ...
- 【NOIP2019模拟2019.11.13】旅行 && GDKOI2018 还念(二分答案+dij)
Description: 题解: 显然满足二分性. 并且每一条边要不选l要不选r. 二分的那条链肯定要选l. 考虑有两个人在走最短路,一个人一开始必须走二分的那条链,要求第一个人走的比第二个人快. 安 ...
随机推荐
- C# WinfForm 控件之dev表格 GridControl
基本用法 1.新建一个winformAPP 放一个gridControl 为gridC 再放一个button 用法与dataGrid一样 代码如下: /// <summary> /// 显 ...
- pcA降维 SVD
前言: PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的.在上篇文章中便是基于特征值分解的一种解释.特征值和奇异值在大部分人的印象中,往往是停留在纯粹的数学计算中.而且线 ...
- opencv——常见的操作
一 图像阈值处理 准备一张灰度图像 阈值处理通常是设定一个阈值,让图片的所有像素点的值与其比较做出一系列的操作. 在opencv常用的阈值处理函数有五种,分别是THRESH_BINARY.THRESH ...
- 自动化监控系统(二)连接数据库,创建app,添加model,同步数据库
数据库我使用:mysql5.7 程序连接数据库的模块:pymysql 一.创建数据库: dbname:automatedmonitor 二.使用pip安装pymysql,这里我直接在pycharm上安 ...
- udp - IPv4 上面的 UDP 协议.
SYNOPSIS (总览) #include <sys/socket.h> #include <netinet/in.h> udp_socket = socket(PF_INE ...
- uptime - 告知系统运行了多久时间
SYNOPSIS(总览) uptime uptime [-V] DESCRIPTION(描述) uptime 给出下列信息的一行显示. 当前时间, 系统运行了多久时间, 当前登陆的用户有多少, 以及前 ...
- unicode_stop - 撤销控制台unicode模式(例如, 回到8-bit模式).
总览 unicode_stop 描述 unicode_stop 撤销以前 unicode_start(1) 命令的效果, 将显示屏和键盘设回到 8-bit 模式.
- CAS -- ABA问题的解决方案
我们现在来说什么是ABA问题.假设内存中有一个值为A的变量,存储在地址V中. 此时有三个线程想使用CAS的方式更新这个变量的值,每个线程的执行时间有略微偏差.线程1和线程2已经获取当前值,线程3还未获 ...
- vue tabNav 点击
<template> <div class="content"> <header class="tab_nav"> < ...
- 分布式项目controller项目中web.xml配置文件的编写
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " ...