codeforces 558D Guess Your Way Out! II
题目链接
题意:
给出n和q表示有一棵深度为n的完全二叉树
叶子节点中有恰好一个点是出口
主角从根往下走,但不知道出口在哪里,但主角会获得q个提示
q个提示 格式: deep [l, r] ok
目标:
思路:
①首先把所有提示的区间都映射到叶子节点上(即深度为n的那一层);
②先把一定不在的问题转成2个一定存在的提示,比方说最大深度为4,某次询问告诉你出口一定不在[10,13],
那么出口就可能在[8,9]和[14,15];
③那么显然每个提示里都包含了出口,所以我们查询一下哪个点是被q个区间覆盖了,则这个点就是出口。
代码如下:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
ll L[55], R[55];
int n, q, deep, ok;
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; //深度为i层的左右端点 }scanf("%d%d", &n, &q);if(q == 0){if (n == 1)puts("1");else puts("Data not sufficient!");return 0;}for(int i = 0; i < q; i++){ll l, r;scanf("%d%I64d%I64d%d", &deep, &l ,&r, &ok);while(deep < n){l <<= 1, r = r << 1|1;deep ++;}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; //cnt表示出口的个数,ans表示出口 for(map<ll, int>::iterator i = mp.begin(); i != mp.end(); i++){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 printf("%I64d\n", ans); return 0;
}
codeforces 558D Guess Your Way Out! II相关推荐
- 连飞学长的爱 解题报告 Apare_xzc
连飞学长的爱 解题报告 2019/2/22 vj链接 A-A CodeForces - 560A 题意: 有一套纸币,有n个币种,问是否能构成任意面值? input: n a1 a2 - an 数据范 ...
- linux中文件链接,关于Linux中文件,链接的一些思考
在Unix系统中,操作系统为磁盘上的文本与图像,鼠标键盘操作,网络交互等IO操作设计了一组通用API. 使他们被处理的时候可统一用字节流的方式.所以说,除了进程之外,其他的一切均可看做文件. Linu ...
- Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...
- CodeForces - 1480D2 Painting the Array II(dp)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,现在要求拆分成两个子序列,使得两个子序列的贡献之和最 小.对于一个序列的贡献就是,去掉相邻且相同的字母后的长度,即 ∑i=1n[a[i]! ...
- 暴力 Codeforces Round #183 (Div. 2) A. Pythagorean Theorem II
题目传送门 1 /* 2 暴力:O (n^2) 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <c ...
- Codeforces Gym101257F:Islands II(求割点+思维)
http://codeforces.com/gym/101257/problem/F 题意:给出一个n*m的地图,上面相同数字的代表一个国家,问对于每个国家有多少个国家在它内部(即被包围).例如第一个 ...
- Codeforces Round #450 (Div. 2)D. Unusual Sequences[数论][组合数学][dp II]
题目:http://codeforces.com/contest/900/problem/D 题意:找到加和为m的且gcd为n的数列种类数 分析:可以转化为求gcd为1的加和为m/n的种类数,假设有m ...
- Codeforces Round #700 (Div. 2) A ~ E ,6题全,超高质量良心题解【每日亿题】2021/2/8
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Yet Another String Game B - The Great Hero C ...
- Codeforces Round #193 (Div. 2)
题目地址: http://codeforces.com/contest/332 第一题:题目又臭又长,读了好长时间才读懂. n个人,你是0号,从0开始到n-1循环做动作,只要你前面三个人动作一样,你就 ...
- codeforces 954C
codeforces 954C C. Matrix Walk introduction 一个x行y列矩形的矩形,每个格子的从左到右,从上到下编号.然后给出一条路径,确定x和y的值,使得这条路径成立. ...
最新文章
- [leetcode]Sort Colors
- Mybatis3源码分析(05)-加载Configuration-加载MappedStatement
- 【JZOJ4835】【GDOI2017模拟10.31】量化交易
- Master公式(计算递归复杂度)
- iframe父子页面间的关系
- n维数组实现(可变参数表的使用)
- 整合ssh model $$_javassist_13 cannot be cast to javassist.util.proxy.Proxy
- [转载][HASS.IO] 【HASSOS安装】成功安装HASSOS 1.9(避开了大部分坑版)
- 学习通视频enc生成方法
- ssoj 2279 磁力阵
- Fast and Accurate Recognition of Chinese Clinical Named Entities with Residual Dilated Convolutions
- “不一样的六一儿童节”——暨线上公益跳绳颁奖活动圆满结束
- 软件开发与软件研发的区别
- 【NB-ioT模组】移远BC35-G 基于STM32连接电信云(附代码)
- Java中ch.ethz.ssh2.Connection对象的使用
- 无密码登陆的ssh和ssh-agent
- C语言 --- 动态内存管理(上)+优化版通讯录+笔试题
- 存储过程——天使还是魔鬼
- TensorFlow c++ SessionFactory注册与No session factory registered错误
- 断电断网等原因致使重新进入linux时系统进不去,进不了图形界面,出现/dev/sda2 recovery,clean,,,