初见安~这里是传送门:洛谷P3293 [SCOI2016]美味

题解

首先看到有两层限制:区间[l, r]以及要异或值最大。很显然把区间限制转化到时间限制,建可持久化数据结构

每道菜对不同的人有不同的美味值。菜j对顾客i的美味值为,其中 i 我们视作已知表示阶段【第i个人】,那么唯一未知的就是。也就是说我们可以倒着推——枚举答案数位,看当前这一位能不能取1,也就是看是否存在使得满足前面的高位最优的情况下让当前这一位也最优。对于这一问题,我们完全可以建可持久化01trie来解决,查找当前这一位是否可以是我们倒推出来的数。【可惜做的时候太菜了,写的主席树】但也可以建一棵可持久化权值线段树,也就是主席树。若确定了所求的这前i位,那就可以确定所求的范围。查找范围内是否有这个数即可。

代码为主席树写法,

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define maxn 200005
using namespace std;
typedef long long ll;
const int INF = 1e5;
int read() {int x = 0, f = 1, ch = getchar();while(!isdigit(ch)) {if(ch == '-') f = -1; ch = getchar();}while(isdigit(ch)) x = (x << 1) + (x << 3) + ch - '0', ch = getchar();return x * f;
}int n, m, a[maxn];
int root[maxn], tot = 0;
struct SegmentTree {int l, r, cnt;
}t[maxn << 5];int insert(int now, int l, int r, int x) {register int p = ++tot, mid = l + r >> 1;t[p] = t[now];if(l == r) {t[p].cnt++; return p;}if(x <= mid) t[p].l = insert(t[now].l, l, mid, x);else t[p].r = insert(t[now].r, mid + 1, r, x);t[p].cnt = t[t[p].l].cnt + t[t[p].r].cnt;return p;
}int ask(int p, int q, int l, int r, int ls, int rs) {//l,r同时下传if(ls > rs) return 0;if(ls <= l && r <= rs) return t[q].cnt - t[p].cnt;//差分register int mid = l + r >> 1, res = 0;if(ls <= mid) res += ask(t[p].l, t[q].l, l, mid, ls, rs);if(rs > mid) res += ask(t[p].r, t[q].r, mid + 1, r, ls, rs);return res;
}signed main() {n = read(), m = read(); root[0] = 0;for(int i = 1; i <= n; i++) a[i] = read(), root[i] = insert(root[i - 1], 0, INF, a[i]);register int b, x, l, r, ans;for(int i = 1; i <= m; i++) {b = read(), x = read(), l = read(), r = read();ans = 0;for(int j = 17; j >= 0; j--) {//枚举每一位register int tmp = ans + ((1 ^ (b >> j & 1)) << j);//tmp是期望达到的数if(ask(root[l - 1], root[r], 0, INF, max(0, tmp - x), min(INF, tmp + (1 << j) - 1 - x))) ans = tmp;else ans += (b >> j & 1) << j;//反之就老实加上这一部分。}printf("%d\n", ans ^ b);}
}

迎评:)
——End——

洛谷·[SCOI2016]美味相关推荐

  1. [洛谷P3292] [SCOI2016]幸运数字

    洛谷题目链接:[SCOI2016]幸运数字 题目描述 A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在这座城 ...

  2. BZOJ4571:[SCOI2016]美味——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4571 https://www.luogu.org/problemnew/show/P3293 一家 ...

  3. Corn fields(玉米田)状压dp入门第一题 洛谷P1879 poj3254

    题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...

  4. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  5. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  6. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  7. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

  8. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

  9. 洛谷P1417 烹调方案

    洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...

最新文章

  1. 生信基础巩固Linux篇
  2. python netsnmp_使用 Net-SNMP 和 IPython
  3. linux proc 占用空间,一种诡异的Linux磁盘空间被占满问题
  4. TypeScript里对数组元素的自定义属性排序的实现原理
  5. 『设计模式』适配器模式(Adapter)
  6. 线程----Monitor(互斥锁)类设置超时值
  7. ZetCode 教程翻译计划正式启动 | ApacheCN
  8. “隐私经济”有未来吗?
  9. CodeSmith 创建Ado.Net自定义模版(一)
  10. Unity PointCloud开发:Mesh渲染点云
  11. Kotlin基础 — 扩展函数
  12. CF618F Double Knapsack
  13. 二维码加logo demo
  14. python-snap7使用说明
  15. SPSS新手教程——通过探索性分析,检验数据的正态性分布
  16. 一键定制个性化语音,微软的AI语音落地实践
  17. 测试网站速度简单方法
  18. DELPHI盒子上的RAD studio 2010安装过程及体验(超多图)
  19. 凌晨3点不回家:因为想不到的心酸!
  20. Gps测量两点之间的距离

热门文章

  1. React Design Editor 图像/视频在线编辑器;2022阿里天池冠军方案[1/1149];计算机优秀课程大集锦;贝叶斯统计课程资料;前沿论文 | ShowMeAI资讯日报
  2. 计算机学院吉祥物意见征集,计算机学院2017级开展年级吉祥物征集活动
  3. 美容院怎么实现无线wifi短信认证?
  4. java丧尸围城攻略_丧尸围城全关卡流程攻略 丧尸围城怎么通关
  5. AI绘图软件分享:Midjourney 基础教程(二)
  6. 帮一个锻造企业写的“关于该公司的网络推广相关”的问题
  7. 利用 ELK 搭建 Docker 容器化应用日志中心
  8. python死机怎么办_Python线程死机
  9. mac os x系统 怎么查看计算机名,如何更改 Mac OS X系统默认用户名
  10. java 全景_一种全景图浏览器的JAVA实现算法