当前位置: 首页 > news >正文

凡诺企业网站管理系统云南建设局网站

凡诺企业网站管理系统,云南建设局网站,怎样建网站视频教程,工地建筑模板尺寸每日构造题训练 题目链接: 题目传送门 前置知识: 按位或运算 一、题意: 1 1 1、 有一个长度为 n n n的但是元素未知的数组 a a a, 给定 m m m个约束&#xff0c;每个约束都有 l , r , x l, r, x l,r,x, 并且满足 1 ≤ l ≤ r ≤ n , 1 ≤ x < 2 30 , a [ l ] ∣ a [ l 1 …

每日构造题训练

题目链接: 题目传送门

前置知识: 按位或运算


一、题意:

1 1 1、 有一个长度为 n n n的但是元素未知的数组 a a a, 给定 m m m个约束,每个约束都有 l , r , x l, r, x l,r,x, 并且满足 1 ≤ l ≤ r ≤ n , 1 ≤ x < 2 30 , a [ l ] ∣ a [ l + 1 ] ∣ . . . . ∣ a [ r ] = x 1 \le l \le r \le n, 1 \le x < 2^{30}, a[l] | a[l + 1] | .... | a[r] = x 1lrn,1x<230,a[l]a[l+1]∣....∣a[r]=x, l l l是按位或,要求构造出 a a a n n n个元素,使得其满足 m m m个约束并且 0 ≤ a [ i ] < 2 30 0 \le a[i] < 2^{30} 0a[i]<230,并且求出每个非空子序列(子序列可以不连续,但是要保序)的异或值之和,结果模 1 e 9 + 7 1e9+7 1e9+7, 保证在这些约束下有解。
2 2 2、数据范围: 1 ≤ n ≤ 2 e 5 1 \le n \le 2e5 1n2e5, 1 ≤ m ≤ 2 e 5 1 \le m \le 2e5 1m2e5


二、题解:

1 1 1、 我们先思考 ∣ | 运算的性质,可以知道只要在区间中有一个数字在某个二进制位上是 1 1 1,那么区间的 ∣ | 值一定在此二进制位上有 1 1 1,那么我们不妨倒着思考,假设我们知道一个区间的 ∣ | 值,我们就可以知道它们在哪些二进制一定是 0 0 0, 怎么根据这些区间记录呢,我们可以用预处理的思想去做,因为暴力去更新显然会超时。
2 2 2、我们可以开一个数组 c n t [ 30 ] [ i ] cnt[30][i] cnt[30][i]用来标记第i个数字上的第 30 30 30个二进制位,当我们读取到查询 l , r , x l,r,x l,r,x时, 我们将数字 x x x中二进制位为 0 0 0的位置找到,假设是 j j j,那么我们就可以用差分处理, c n t [ j ] [ l ] + = 1 , c n t [ j ] [ r + 1 ] − = 1 cnt[j][l] \mathrel{+}= 1, cnt[j][r + 1] \mathrel{-}= 1 cnt[j][l]+=1,cnt[j][r+1]=1,最后我们就可以用前缀和知道每个数字的每一个二进制位的信息了,此时我们不妨将每一位的初值赋值为 ( 1 < < 30 ) − 1 (1<<30)-1 (1<<30)1,这样每一个二进制位都有 1 1 1,当我们知道 c n t [ j ] [ i ] > 0 cnt[j][i]>0 cnt[j][i]>0, 则 a [ i ] & = ( 1 < < j ) a[i]\mathrel{\&}= (1<<j) a[i]&=(1<<j)
3 3 3、根据上面设计的思路我们可以找到满足约束的数组 a a a的每个元素,接下来我们要计算所有的非空子序列异或值之和,我们不妨考虑一下累积每个二进制位的贡献,我们先统计一下每个二进制位的个数 c o u n t [ i ] count[i] count[i],让我们来推导一下计算二进制位贡献的公式,首先只有奇数个 1 1 1异或值才能是 1 1 1, 所以,我们将很轻易的推导出计算贡献的公式: ∑ ( C ( 1 c o u n t [ i ] ) ∗ 2 n − 1 + C ( 3 c o u n t [ i ] ) ∗ 2 n − 3 + . . . + C ( 2 ∗ x + 1 c o u n t [ i ] ) ∗ 2 n − ( 2 ∗ x + 1 ) ) \sum(C\binom{1}{count[i]} * 2^{n-1} + C\binom{3}{count[i]} * 2^{n-3} + ... + C\binom{2 * x + 1}{count[i]}* 2^{n-(2*x+1)}) (C(count[i]1)2n1+C(count[i]3)2n3+...+C(count[i]2x+1)2n(2x+1))
4 4 4、时间复杂度(忽略常数): O ( N ∗ 30 + N ∗ l o g ( 2 30 − 1 ) ) O(N * 30 + N * log(2^{30}-1)) O(N30+Nlog(2301))


三、代码实现:

涉及算法:快速幂、组合数预处理、差分、前缀和、逆元。

#include <bits/stdc++.h>
#define int long long 
#define ff first 
#define ss second 
using namespace std; 
using PII = pair<int, int>; 
constexpr int N = 2e5 + 10; 
constexpr int inf = 0x3f3f3f3f;
constexpr int mod = 1e9 + 7; 
int n, m; 
int a[N]; 
int cnt[40][N];
int us[40]; 
int f1[N], f2[N]; 
int qmi(int x, int y) {int res = 1; while(y) {if(y & 1) res = res * x % mod; x = x * x % mod; y >>= 1; }return res; 
}int md(int a, int b) {return (f1[a] * f2[a - b] % mod * f2[b] % mod) % mod; 
}
void solve() {scanf("%lld%lld",&n,&m);// for(int j = 0; j < 40; j ++ ) us[j] = 0; for(int i = 1; i <= n; i ++ ) a[i] = (1 << 30) - 1; for(int i = 0; i < 30; i ++ ) { us[i] = 0; for(int j = 1; j <= n; j ++ ) cnt[i][j] = 0;}for(int i = 1; i <= m; i ++ ) {int l, r, x; scanf("%lld%lld%lld",&l,&r,&x);for(int j = 0; j < 30; j ++ ) {if(x >> j & 1) continue; cnt[j][l] += 1, cnt[j][r + 1] -= 1; }}for(int i = 0; i < 30; i ++ ) {for(int j = 1; j <= n; j ++ ) cnt[i][j] += cnt[i][j - 1]; for(int j = 1; j <= n; j ++ ) if(cnt[i][j]) a[j] -= (1 << i);}for(int i = 1; i <= n; i ++ ) for(int j = 0; j < 30; j ++ ) if(a[i] >> j & 1) us[j] ++; for(int i = 0; i < 30; i ++ ) {int x = us[i], su = 0;  // us[i] = 0;for(int j = 1; j <= x; j += 2) su = (su + md(x, j) * qmi(2,n-x) % mod) % mod;us[i] = su;}int ans = 0; for(int i = 0; i < 30; i ++ ) ans = (ans + (1ll << i) * us[i] % mod) % mod;printf("%lld\n",ans);    
}signed main() {f1[0] = 1, f2[0] = 1; for(int i = 1; i < N; i ++ ) {f1[i] = (f1[i - 1] * i) % mod;  f2[i] = qmi(f1[i], mod - 2);}int ts; cin >> ts; while(ts -- ) solve(); return 0; 
}
http://www.yayakq.cn/news/109292/

相关文章:

  • 网站建设域名是什么意思长沙的网站制作公司
  • 怎么用建站系统建网站网络seo哈尔滨
  • 旅游seo整站优化前端app用什么开发
  • 网站建设合同的内容与结构wordpress版权文件
  • 国外免费空间网站申请滕州网站建设网站行吗
  • 游戏周边产品 做网站绿色环保网站模板
  • 甘肃做网站哪家好字体大全
  • 青海省建设厅网站执业想做电商怎么找货源
  • 怎么优化自己公司的网站用easyui皮肤做漂亮的网站
  • cn域名网站建材行业网站建设方案
  • php网站做安卓客户端普通的个人简历怎么写
  • 烟台制作网站的公司中小企业名录查询官网入口
  • 做网站用jsp还是html2015手机版网站制作
  • 旅游电子商务网站的建设有哪些企业可以做招聘的网站有哪些方面
  • 常州网站seo代理加盟物流网站做那个好
  • 目前做网站最好的语言是河池网站制作公司
  • 网站登录系统怎么做搜索引擎营销的方法不包括
  • 网站的锚点链接怎么做哪个网站做电子请帖好
  • 站建设培训学校优秀的公司网站
  • 教务系统门户网站昆明专业网站建设公司
  • 洛阳建站推广公司wordpress实时推送 php
  • 漳州城乡和建设局网站首页备案网站可以做卡盟么
  • 正规的培训行业网站制作品牌策划公司
  • 品牌网站建设专家如何制作网站app
  • 国外网站开发在线网站制作工具
  • 免费企业建站系统排名三只松鼠的网站建设理念
  • 建可收费的网站中国建设企业银行官网站
  • 深圳做网站可用乐云seo十年建设银行官网网站首页纪念币预约
  • 建设购物网站需要多少费用网站开发项目概述
  • p2p网上贷款网站建设方案泉州建站平台