博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces 558D Guess Your Way Out! II 规律
阅读量:5931 次
发布时间:2019-06-19

本文共 1858 字,大约阅读时间需要 6 分钟。

题意:

给出n和q

表示有一棵深度为n的全然二叉树。叶子节点中有恰好一个点是出口 主角从根往下走。但不知道出口在哪里,但主角会获得q个提示。
 
像这样标号
q个提示 格式: deep [l, r] ok

 表示 深度为deep 时, 出口(可能在) (一定不在)[l,r]区间 
ok=1表示 是可能在 ok=0一定不在
目标:

若依据提示能找到出口则输出叶子节点下标,有多个可能的出口则输出data not sufficient。若给出的提示互相矛盾输出 Game cheatde
思路:

首先把全部提示的区间都映射到叶子节点上

先把一定不在的问题转成2个一定存在的提示。

那么显然每一个提示里都包括了出口。所以我们查询一下哪个点是被q个区间覆盖了,则这个点就是出口。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;template
inline bool rd(T &ret) { char c; int sgn; if (c = getchar(), c == EOF) return 0; while (c != '-' && (c<'0' || c>'9')) c = getchar(); sgn = (c == '-') ?

-1 : 1; ret = (c == '-') ? 0 : (c - '0'); while (c = getchar(), c >= '0'&&c <= '9') ret = ret * 10 + (c - '0'); ret *= sgn; return 1; } template <class T> inline void pt(T x) { if (x <0) { putchar('-'); x = -x; } if (x>9) pt(x / 10); putchar(x % 10 + '0'); } typedef long long ll; typedef pair<ll, ll> pii; const int N = 500005; const int inf = 1e9 + 10; int n, q; ll L[55], R[55]; map<ll, int>mp; int main() { L[1] = R[1] = 1; for (int i = 2; i <= 50; i++)L[i] = L[i - 1] << 1, R[i] = R[i - 1] << 1 | 1; rd(n); rd(q); if (q == 0) { if (n == 1)puts("1"); else puts("Data not sufficient!"); return 0; } for (int i = 0, dep, ok; i < q; i++) { ll l, r; rd(dep); rd(l); rd(r); rd(ok); while (dep < n) { l <<= 1; r = r << 1 | 1; dep++; } if (ok)mp[l]++, mp[r + 1]--; else { mp[L[n]]++; mp[l]--; mp[r + 1]++; mp[R[n]+1]--; } } int sum = 0; ll pre = -1, cnt = 0, ans = 0; for (auto i : mp) { sum += i.second; if (pre != -1) { cnt += i.first - pre; ans = pre; } if (sum == q)pre = i.first; else pre = -1; } if (cnt == 0)puts("Game cheated!"); else if (cnt > 1)puts("Data not sufficient!"); else pt(ans); return 0; }

你可能感兴趣的文章
mysql基础
查看>>
微信小程序获取用户信息方法
查看>>
利用统计计算而不是计算机模拟解决样本容量问题
查看>>
前端的flutter之路(一):语法
查看>>
Vue+express+mongoDB实现个人博客系统
查看>>
HTTP - 发展历程
查看>>
【前端词典】提高幸福感的 9 个 CSS 技巧
查看>>
Python|拥有选择权,才拥有概率
查看>>
TS报错errorTS1086
查看>>
sprinboot 整合shiro后, aop不生效
查看>>
【鉴轻尘】漫长的熊市是彻底消亡的前兆,还是牛市一飞冲天的爆发?
查看>>
数据可视化学习之旅(一) React项目中初步使用Bizcharts
查看>>
spring boot 多模块项目整合 mybatis 时提示找到不 Mapper 的解决方案
查看>>
【从蛋壳到满天飞】JS 数据结构解析和算法实现-红黑树(一)
查看>>
SpringBoot,Vue前后端分离开发首秀
查看>>
centos7 redhat7以上版本gcc和gcc++ npm安装
查看>>
终点站系列之李鸿章
查看>>
LeetCode之Evaluate Division(Kotlin)
查看>>
vue基础(10)--vue-router
查看>>
Logstash占用CPU高的问题
查看>>