首页 > 其他分享 >GJOI 2024.7.15 总结

GJOI 2024.7.15 总结

时间:2024-07-15 10:43:55浏览次数:15  
标签:... 15 2024.7 int namespace two long GJOI define

T1 CF1607E

简单题,直接模拟即可。

T2 CF1614C

容易发现一种可行的构造方案就是对于每个 \(a_i\) 以及包含它的操作 \(C_{i_1, i_2 ... i_t}\),令 \(a_i = V_{i_1} \& V_{i_2} \& ...V_{i_t}\) 即可。直接硬上线段树即可。

考虑到位运算位之间互不影响的性质,接着我们从分别考虑每一位对答案的贡献。统计的时候分类讨论一下就可以了。

qwq
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N = 2e5 + 10, mod = 1e9 + 7;

int n, m, a[N], two[50];

namespace Segtree{
	#define ls (o << 1)
	#define rs (o << 1 | 1)
	#define mid (l + r >> 1)
	int tag[N << 2];
	void build(int o, int l, int r){
		tag[o] = (1ll << 31) - 1;
		if(l == r) return;
		build(ls, l, mid); build(rs, mid + 1, r);
	}
	void pushdown(int o){
		if(tag[o] != (1ll << 31) - 1){
			tag[ls] &= tag[o]; tag[rs] &= tag[o];
			tag[o] = (1ll << 31) - 1;
		}
	}
	void addtag(int o, int l, int r, int s, int t, int val){
		if(s <= l && r <= t){tag[o] &= val; return;}
		pushdown(o);
		if(s <= mid) addtag(ls, l, mid, s, t, val);
		if(mid < t) addtag(rs, mid + 1, r, s, t, val);
	}
	void getval(int o, int l, int r){
		if(l == r){a[l] = tag[o]; return;}
		pushdown(o); getval(ls, l, mid); getval(rs, mid + 1, r);
	}
}
using namespace Segtree;

int calc(int bitid){
	int cnt[2] = {1, 0};
	for(int i = 1; i <= n; i++){
		bool f = (a[i] & (1 << bitid));  
		int c[2]; c[0] = (cnt[0] + cnt[f]) % mod; c[1] = (cnt[1] + cnt[f ^ 1]) % mod;
		cnt[0] = c[0]; cnt[1] = c[1];
	}
	return cnt[1]; 
}

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int T; cin >> T; two[0] = 1;
	for(int i = 1; i <= 40; i++) two[i] = (two[i - 1] * 2) % mod;
	while(T--){
		cin >> n >> m; build(1, 1, n);
		for(int i = 1; i <= m; i++){
			int l, r, v; cin >> l >> r >> v;
			addtag(1, 1, n, l, r, v);
		}
		getval(1, 1, n); int ans = 0;
//		for(int i = 1; i <= n; i++) cout << a[i] << " ";
//		cout << calc(0) << "\n";
		for(int bit = 0; bit <= 30; bit++) ans = (ans + calc(bit) * two[bit] % mod) % mod;
		cout << ans << "\n"; 
	}
	
	return 0;
}

T3 CF1611G

标签:...,15,2024.7,int,namespace,two,long,GJOI,define
From: https://www.cnblogs.com/little-corn/p/18302679

相关文章

  • day11| 150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素
    代码随想录算法训练营第十一天|150.逆波兰表达式求值239.滑动窗口最大值347.前K个高频元素Leetcode150.逆波兰表达式求值题目链接:https://leetcode.cn/problems/evaluate-reverse-polish-notation/description/题目描述:给你一个字符串数组tokens,表示一个根......
  • 大气热力学(15)——热力学图的应用之三(逆温)
    目录15.1逆温的概念15.2辐射逆温15.2.1辐射逆温的形成原因15.2.2辐射逆温的生消过程15.2.3辐射逆温在探空图的特征15.2.4辐射雾的形成与特征15.3平流逆温15.3.1平流逆温的形成原因15.3.2平流雾的形成与特征15.4湍流逆温15.4.1湍流逆温的形成原因15.4.2湍流逆温在探空......
  • 2024.7.12单片机PWM
    遇到了一个光标变成下划线的问题:Keil5光标变下划线,变回来的方法_keil5光标是下划线-CSDN博客这里是用了输入捕获(IC:inputcapture),输出比较(OC:OutputCompare)区别学到这里是以为,首先输入捕获是捕获外界的数字信号,如果是模拟信号,可能需要加信号处理的模块,变成数字信号再加以处......
  • [rCore学习笔记 015]特权级机制
    写在前面本随笔是非常菜的菜鸡写的。如有问题请及时提出。可以联系:[email protected]:https://github.com/WindDevil(目前啥也没有官方文档仍然是一上来就丢出来的官方文档.只摘抄了我觉得有意思的部分:实现特权级机制的根本原因是应用程序运行的安全性不可充分信任......
  • lgP1558 色板游戏
    有编号为1~T的T种颜色和一块长为L的色板,每块色板只有一个颜色,最初均为颜色1,有O次操作:Cxyz,将区间[x,y]的色板涂成颜色z。Pxy,询问区间[x,y]有多少种不同的颜色。范围:1<=L<=1e5,1<=T<=30,1<=O<=1e5。分析:线段树维护区间内有哪些颜色,因为颜色种数少,可以用状压或者bitset......
  • [CF1538F] Interesting Function 的题解
    题目大意给定两个正整数\(l,r\),将\(l\)不断加\(1\)直到\(l=r\),求出这一过程中\(l\)发生变化的位数总数。\(1\lel<r\le10^9\)。思路假设从\(l\)处理到\(r\)变化的次数为\(f(l,r)\)。因为直接求解出\(f(l,r)\)十分困难,所以可以通过求出\(f(0,l)\)......
  • 「杂题乱刷2」CF1506E Restoring the Permutation
    duel到的。题目链接CF1506E解题思路有一个显然的性质就是这个序列的前缀最大值是单调不降的。于是我们就可以对于每个位置考虑还可以填哪些数,对于字典序最小的肯定填当时可填的最小数字,对于字典序最大的肯定填当时可填的最大数字,因为你可以通过填一个数的方式来满足要求,因此......
  • 题解:CodeForces 1511 C Yet Another Card Deck[暴力/模拟]
    CodeForces1511CC.YetAnotherCardDeckDescriptionYouhaveacarddeckof\(n\)cards,numberedfromtoptobottom,i. e.thetopcardhasindex\(1\)andbottomcard —index\(n\).Eachcardhasitscolor:the\(i\)-thcardhascolor\(a_i\......
  • [COCI2015-2016#6] PAROVI 的题解
    题意选择一些\(n\)一下互质的二元组\(\{a,b\}\),求对于任意\(x\in\big[2,n\big]\)都不满足\(a,b<x\)和\(a,b\gex\)的个数。简化题意因为无解的情况只发生在所有的\(\{a,b\}\)之间没有多余的位置用于放置\(x\),所以题意可以抽象成这样:选择一些区间互质的区间\([a......
  • [ARC115B] Plus Matrix 的题解
    题目大意给你一个\(n\timesn\)的数组\(C\),\(c_{i,j}=a_i+b_j\),求\(a\)数组与\(b\)数组,不保证有解,其中\(1\len\le500,1\lec_{i,j}\le10^9\),而且\(a_i,b_i\)都是非负整数。\[\begin{bmatrix}a_1+b_1&a_1+b_2&\cdots&a_1+b_{n-1}&a_1+b_n\\a_2+b_......