[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. 考虑有两个人在走最短路,一个人一开始必须走二分的那条链,要求第一个人走的比第二个人快. 安 ...
随机推荐
- MS Sql添加描述信息 及其他信息
--查询某个表的描述 SELECT * FROM fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '(表名)',NULL, NULL) - ...
- 将时间 '2018-08-06T10:00:00.000Z' 格式转化为本地时间
参考:https://blog.csdn.net/sxf_123456/article/details/81582964 参考模板: from datetime import datetime, ti ...
- D3.js绘制 颜色:RGB、HSL和插值 (V3版本)
颜色和插值 计算机中的颜色,常用的标准有RGB和HSL. RGB:色彩模式是通过对红(Red).绿(Green).蓝(Blue)三个颜色通道相互叠加来得到额各式各样的颜色.三个通道的值得范围都 ...
- MySQL日期格式化 利用Mysql的DATE_FORMAT()进行日期格式转换
碰到一个MYSQL的问题,表logstatb中moment字段的内容是"年-月-日 时:分:秒",需要查询匹配“年月日”或“时:分:秒”即可的数据条目,这个时候就可以通过下面的SQ ...
- xpath总结
Python包 pip install lxml 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的. xpath语 ...
- leetcode-126-单词接龙
题目描述: class Solution: def findLadders(self, beginWord: str, endWord: str, wordList: list) -> list ...
- 单源最短路径问题2 (Dijkstra算法)
用邻接矩阵 /* 单源最短路径问题2 (Dijkstra算法) 样例: 5 7 0 1 3 0 3 7 1 2 4 1 3 2 2 3 5 2 4 6 3 4 4 输出: [0, 3, 7, 5, 9 ...
- thinkphp 防止XSS(跨站脚本攻击)
XSS(跨站脚本攻击)可以用于窃取其他用户的Cookie信息,要避免此类问题,可以采用如下解决方案: 直接过滤所有的JavaScript脚本: 转义Html元字符,使用htmlentities.htm ...
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
今天来看一下自定义标签的内容,自定义标签是JavaWeb的一部分非常重要的核心功能,我们之前就说过,JSP规范说的很清楚,就是Jsp页面中禁止编写一行Java代码,就是最好不要有Java脚本片段,下面 ...
- 依赖背包优化——ural1018,金明的预算方案
经典题了,网上博客一大堆O(nCC)的做法,其实是可以将复杂度降到O(nC)的 参考依赖背包优化(泛化物品的并) 根据背包九讲,求两个泛化物品的和复杂度是O(CC)的,所以依赖背包暴力求解的复杂度是O ...