当前位置: 代码迷 >> 综合 >> Codeforces Round #757 (Div. 2) C. Divan and bitwise operations
  详细解决方案

Codeforces Round #757 (Div. 2) C. Divan and bitwise operations

热度:56   发布时间:2023-11-22 08:28:47.0

Codeforces Round #757 (Div. 2)

A B两题很简单,C有点绕
原题链接
找了几个不错的博客
大佬的博客
这个大佬讲的思路很清晰,可以借鉴
还有一点:同或和还有一个性质,两个区间的同或和进行或运算可以得到他们并集的同或和。根据这一点,加上题目中提到必然会遍及每一个元素,那么把给出的m个区间的同或和进行或运算即可得到[1,n]的同或和x。
附上代码

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef long long ll;
typedef pair<int,int> PII;
const int N=1e5+10;
const int mod=1e9+7;
ll q_mi(int a,int b)
{
    ll ans=1;while(b){
    if(b&1) ans=ans*a%mod;a=(ll)a*a%mod;b>>=1;}return ans;
}
int main()
{
    IOS;int t;cin>>t;while(t--){
    int n,m;ll ans=0;cin>>n>>m;for(int i=0;i<m;i++){
    ll l,r,x;cin>>l>>r>>x;ans=ans|x;}ll sum=q_mi(2,n-1)*ans%mod;cout<<sum<<endl;}return 0;
}
  相关解决方案