【GDOI2018模拟7.6】吃干饭
Description
求区间[l,r]中的数任意互相异或之后有多少种可能的结果
l<=r<=1e18,数据组数<=100
Solution
这种题一眼线性基啦~
虽然我并不太熟练,还自己推了一遍插入
这样直接暴力做有50分
然后打了个表发现了一个规律:
首先l一定会在线性基中,
然后我们知道了线性基中的最后一个数,想要快速找出线性基中的下一个数
假设当前的数的二进制表示是 10100,那么接下来的会是
10100
10101
10110
11000
11100
也就是每次找当前最后一个数中,从最低位起第一个当前位为0且线性基为空的位置
然后这一位是1,后面就都是0,并插入到这一位的线性基中
感性理解一下好像没什么毛病
那就直接模拟这个过程就好了,复杂度O(T log^2 L)
Code
#include <cstdio>
#include <cstring>
#include <algorithm>
#define fo(i,a,b) for(ll i=a;i<=b;i++)
#define fd(i,a,b) for(ll i=a;i>=b;i--)
using namespace std;
typedef long long ll;
ll l,r,ans,a[61],mi[61];
int main() {freopen("A.in","r",stdin);freopen("A.out","w",stdout);int ty;mi[0]=1;fo(i,1,60) mi[i]=mi[i-1]*2;for(scanf("%d",&ty);ty;ty--) {scanf("%lld%lld",&l,&r);if (!l&&!r) {printf("1\n");continue;}fo(i,0,60) a[i]=0;ll x=l;ans=2;if (!x) x=1;fd(i,60,0) if (x&mi[i]) {a[i]=x;break;}while (x<r) {int now=61;fo(i,0,60)if (!a[i]&&!(x&mi[i])) {now=i;break;}if (now>60) break;fo(i,0,now-1) if (x&mi[i]) x-=mi[i];x+=mi[now];a[now]=x;if (x<=r) ans=ans*2;}printf("%lld\n",ans);}
}
【GDOI2018模拟7.6】吃干饭相关推荐
- JZOJ 5221. 【GDOI2018模拟7.10】A
Description Input Output Sample Input 4 2 3 2 1 2 4 Sample Output 4 Data Constraint Solution 首先,这是一棵 ...
- [2020.10.30NOIP模拟赛]小鱼吃大鱼【RMQ】
正题 题目大意 nnn个数,求一对(i,j)(i,j)(i,j)要求最大化max{ai,aj}%min{ai,aj}max\{a_i,a_j\}\% min\{a_i,a_j\}max{ai,aj ...
- 【GDOI2018模拟7.14】小奇的糖果
Description 有 N 个彩色糖果在平面上.小奇想在平面上取一条水平的线段,并拾起它上方或下方的所有糖果.求出最多能够拾起多少糖果,使得获得的糖果并不包含所有的颜色. Input 包含多组测试 ...
- JZOJ 5207【GDOI2018模拟7.7】暴力大神hxx
题目描述: 有26重循环,1<=x,y<= 105 10^5 题解: 我们注意到x,y最多只有一个是变量,于是我们可以连出一个森林. 设f[i][j]为底i重循环选j,它和它的子树的方案数 ...
- 【GDOI2018模拟7.7】暴力大神hxx 树形dp
题意:给你n个嵌套for语句,然后从第二个开始每一个循环的起点或者是终点是变量,问你会循环多少次. 这是一道好题. 手玩一下可以很容易发现,上下之间有可以递推的关系,但是直接递推会炸,所以需要dp. ...
- 【JZOJ5224】【GDOI2018模拟7.12】C
Description Data Constraint Solution 首先必须讲讲自然数幂求和. 我们设 Sk(n)=∑i=1nik Sk(n)=\sum_{i=1}^ni^k 我们用第一类斯特林 ...
- jzoj5224 [GDOI2018模拟7.12]C 杜教筛+自然数幂和
Description 求 ∑i=1n∑j=1ngcd(i,j)k且n≤1010,k≤5 ∑ i = 1 n ∑ j = 1 n gcd ( i , j ) k 且 n ≤ 10 10 , k ≤ 5 ...
- 「6月雅礼集训 2017 Day5」吃干饭
[题目大意] 询问[L,R]中选若干个数异或起来得到的答案集合大小.多组数据. 对于50%的数据,$R - L \leq 10^4$ 对于100%的数据,$R - L \leq 10^{18}, T ...
- jzoj5382 [GDOI2018模拟9.21]数列 可持久化trie+分块
Description n,q<=20000 a[i]<=10^9 Solution 今天场外体验noi刺激战场,发现我只会做T1这种送分题(⊙ˍ⊙),还没切.果然人菜还是要多读书 首先做 ...
最新文章
- Python 3 尴尬了这么久,终于有救了
- 刷题中,效率好低,哈哈哈 -----1.Two Sum
- tf keras Dense源码解析
- Boost:projection years投影年的测试程序
- 世纪互联云和华为共同打造的数据中心是一个很好的一步标志!
- 【转】四、关于如何使用软件库的一个技巧-避免重复配置属性表
- 一文带你看完ZooKeeper!
- Python概率编程库PyMC应用案例二则
- CnCiswumWN
- day15【前台】项目发布
- 烫烫烫和屯屯屯2021
- 中级通信工程师考试之六移动通信
- python写的flappy bird小游戏(最简单版本)有视频链接
- python ttk style_关于python:在ttk中更改“选项卡标题”的颜色。
- 基于卫星测深的牙买加沿岸水深测量
- python语言表白语句简单_简短的表白语句280句
- 老宇哥带你玩转 ESP32:04 串口玩起来是真方便
- 最强大易用的开源MODBUS库-YMODBUS,包含MASTER/SLAVE
- 全国大学生信息安全大赛线下赛crypto3题解
- 基于 DataOps 的运营商大数据平台探索