wannafly test D
题意:
给定n,m
求满足:
1.a[i][j]互不相同,且有$1<=a[i][j]<=n*m$
2.对于$a[i1][j1],a[i2][j2]$,如果有 $i1 \oplus j1 > i2 \oplus j2$,则有$a[i1][j1] > a[i2][j2]$
的矩形个数,答案取余$10^9+7$
数据组数T<=1000,且n,m <= 1000
解法:
首先注意到我们只要根据$i \oplus j$分类,计算出$cnt(x)$表示$i \oplus j = x$的$i,j$对数。
这样有答案为$\sum_{i=0}^{1024}{cnt(x)!}$
1.(雾)对于每组数据循环i,j然后cnt[i^j]++;,因为 i^j 操作很快所以AC
2.每个询问是关于(n,m)的一个二元组,考虑对n莫队分块,这样复杂度$O(T*n* \sqrt{n} + 1024*T)$
3.考虑fwt,注意到cnt = id(n)*id(m),应用fwt卷积可以$O(T*nlogn)$
\#include <iostream>
#include <cstdio>
#include <cstring>
#include <bitset>
#include <algorithm> #define N 1010
#define LL long long
#define P 1000000007LL using namespace std; struct node
{
int n,m,id;
}a[N]; LL fac[N*N];
LL ansv[N];
int cnt[],SIZE; bool cmp(node a,node b)
{
if((a.n-)/SIZE==(b.n-)/SIZE) return a.m<b.m;
return a.n<b.n;
} LL calc(int n,int m)
{
LL ans=;
for(int i=;i<=;i++)
ans=ans*fac[cnt[i]]%P;
return ans;
} int main()
{
int T;
scanf("%d",&T);
for(int i=;i<=T;i++)
{
scanf("%d%d",&a[i].n,&a[i].m);
a[i].id=i;
}
SIZE = ;
sort(a+,a+T+,cmp);
fac[]=1LL;
for(int i=;i<N*N;i++) fac[i]=fac[i-]*(LL)i%P;
int n=,m=;
for(int i=;i<=T;i++)
{
while(n<a[i].n)
{
n++;
for(int j=;j<=m;j++)
cnt[n^j]++;
}
while(n>a[i].n)
{
for(int j=;j<=m;j++)
cnt[n^j]--;
n--;
}
while(m<a[i].m)
{
m++;
for(int j=;j<=n;j++)
cnt[j^m]++;
}
while(m>a[i].m)
{
for(int j=;j<=n;j++)
cnt[j^m]--;
m--;
}
ansv[a[i].id] = calc(n,m);
}
for(int i=;i<=T;i++) cout << ansv[i] << endl;
return ;
}
wannafly test D的更多相关文章
- NowCoder Wannafly 27E 黄魔法师 构造
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-Wannafly27E.html 题目传送门 - NowCoder Wannafly 27E 题 ...
- 牛客 Wannafly 挑战赛26D 禁书目录 排列组合 概率期望
原文链接https://www.cnblogs.com/zhouzhendong/p/9781060.html 题目传送门 - NowCoder Wannafly 26D 题意 放一放这一题原先的题面 ...
- Wannafly挑战赛25游记
Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...
- 2019 wannafly winter camp day 3
2019 wannafly winter camp day 3 J 操作S等价于将S串取反,然后依次遍历取反后的串,每次加入新字符a,当前的串是T,那么这次操作之后的串就是TaT.这是第一次转化. 涉 ...
- 2019 wannafly winter camp
2019 wannafly winter camp Name Rank Solved A B C D E F G H I J K day1 9 5/11 O O O O O day2 5 3/11 O ...
- Wannafly挑战赛27
Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...
- Wannafly 挑战赛 19 参考题解
这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...
- Wannafly挑战赛21A
题目链接 Wannafly挑战赛21A 题解 代码 #include <cstdio> #include <cmath> #define MAX 1000005 #define ...
- Wannafly挑战赛24游记
Wannafly挑战赛24游记 A - 石子游戏 题目大意: A和B两人玩游戏,总共有\(n(n\le10^4)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...
- Wannafly挑战赛25C 期望操作数
Wannafly挑战赛25C 期望操作数 简单题啦 \(f[i]=\frac{\sum_{j<=i}f[j]}{i}+1\) \(f[i]=\frac{f[i]}{i}+\frac{\sum_{ ...
随机推荐
- do export method of oracle all database tables with dmp files.
usually we need to export the database tables to backup and others use. So we must know what to do e ...
- 获取EF查询的SQL语句
在EF编程中我们能够通过lamda表达式能够进行查询数据.获取到IQueryable<T>结果,我们要想知道详细的SQL语句是什么须要使用ObjectQuery<T>进行处理 ...
- poj 1730Perfect Pth Powers(分解质因数)
id=1730">Perfect Pth Powers Time Li ...
- 20181125 test
1.对一些不确定性的东西,还是需要一些勇气进行尝试 2.多阅读blog上的大咖的文章肯定会有提高的
- Collection of Boot Sector Formats for ISO 9660 Images
http://bazaar.launchpad.net/~libburnia-team/libisofs/scdbackup/view/head:/doc/boot_sectors.txt Colle ...
- APP上线审核注意事项
基本要点 · 不能导致手机故障(比如崩溃或屏幕问题) · 长时间/过度使用之后反应仍然很快 · 应用内的所有价格信息中不能用固定值代替可变变量 · ...
- vue定义全局变量和全局方法
一.全局引入文件 1.先定义共用组件 common.vue <script type="text/javascript"> // 定义一些公共的属性和方法 const ...
- 【Advanced Windows Phone Programming】在windows phone 8中解码mp3 和编码pcm
转眼间不做wp开发,投身于php事业已然一年了,转身看到8.1的发布,俨然一片欣欣向荣的景象,但是开发社区却没比一年前有过多大的提高,这并不是一个好现象,遂在git上开源了之前音频处理库,希望能对社区 ...
- 绝对定位(absolute)
绝对定位(absolute),作用是将被赋予此定位方法的对象从文档流中拖出,使用left,right,top, bottom等属性相对于其最接近的一个最有定位设置的父级对象进行绝对定位,如果对象的父级 ...
- HDU 5969 最大的位或 —— 贪心 + 二进制的理解
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5969 最大的位或 Time Limit: 2000/1000 MS (Java/Others) ...