第 2 届河北省大学生程序设计竞赛(河北省赛)-Problem H. 神殿-题解

2024-04-11 11:08

本文主要是介绍第 2 届河北省大学生程序设计竞赛(河北省赛)-Problem H. 神殿-题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

传送门

Problem A. Mex Query
Problem B. Nim Game
Problem C. icebound 的账单
Problem G. 520
Problem H. 神殿
Problem J. icebound 的商店
Problem K. Bitmap
       哈希讲解
       二维哈希讲解
Problem L. 跑图





Problem H. 神殿

Time Limit: 1000ms
Memory Limit: 65536KB

Description

icebound通过勤工俭学,攒了一小笔钱,于是他决定出国旅游。这天,icebound走进了一个神秘的神殿。神殿由八位守护者守卫,总共由 64 64 64个门组成,每一道门后都有一个迷宫,迷宫的大小均为 100 × 100 100 \times 100 100×100。icebound在迷宫中总共耗时 T T T小时,消耗食物 K K K公斤。历经千辛万苦之后,icebound终于穿越了迷宫,到达了神殿的中心。神殿的中心有一个宝箱。宝箱上显示有两个正整数 l l l r r r。icebound苦思冥想,终于发现一些打开宝箱的线索。你需要找到一个数 P P P,它具有一个美妙的性质:它是 [ l , r ] [l,r] [l,r]中所有数的二进制表示里, 1 1 1的个数最多的一个数。如果你发现了这个美妙的数字,你就可以打开宝箱,获得巨额财富。

比如 [ 4 , 8 ] [4,8] [4,8]中:

4: 0100
5: 0101
6: 0110
7: 0111
8: 1000

二进制表示中 1 1 1的个数最多的数是 7 7 7,它含有 3 3 3 1 1 1

Input

输入一行,两个正整数:ll和rr,用空格隔开,代表神殿中宝箱上显示的数。

1 ≤ T < 2 31 1 \leq T < 2^{31} 1T<231 ,

1 ≤ K ≤ 1 0 5 1 \leq K \leq 10^5 1K105 ,

1 ≤ l ≤ r ≤ 1 0 6 1 \leq l \leq r \leq 10^{6} 1lr106

Output

一个十进制数 P P P,代表满足条件的解。如果有多个 P P P满足条件,输出最小的 P P P

Sample Input

4 8

Sample Output

7

题目大意

前面一堆其实不用管,给你一个 l l l和一个 r r r,让你输出从 l l l r r r的所有的数中,二进制状态下 1 1 1最多的数。
如果有多个,就输出最小的那个。


解题思路

这是一道阅读理解题,题目不短,有效信息不多。
l l l r r r的范围都是 1 0 6 10^6 106,而 2 20 = 1048576 > 1 0 6 2^{20}=1048576>10^6 220=1048576>106,因此每个数最多看它的 20 20 20位就够了。 1 0 6 × 20 = 2 e 7 10^6\times20=2e7 106×20=2e7,暴力可以通过。

AC代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int get(int n)//get(n)的作用是返回n的二进制有多少个1
{int s=0;//初始值有0个1while(n)//n不为0时{s+=n&1;//加上最后一位n>>=1;//右移一位}return s;
}
int main()
{int a,b;int M=-1;//M来记录最大的0的个数cin>>a>>b;int ans;for(int i=a;i<=b;i++)//从a到b枚举{int t=get(i);//i的二进制有get(i)个1if(t>M)//如果大于历史最多{M=t;//更新ans=i;}}cout<<ans<<endl;//输出return 0;
}

原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/116534218

这篇关于第 2 届河北省大学生程序设计竞赛(河北省赛)-Problem H. 神殿-题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/893903

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

C - Word Ladder题解

C - Word Ladder 题解 解题思路: 先输入两个字符串S 和t 然后在S和T中寻找有多少个字符不同的个数(也就是需要变换多少次) 开始替换时: tips: 字符串下标以0开始 我们定义两个变量a和b,用于记录当前遍历到的字符 首先是判断:如果这时a已经==b了,那么就跳过,不用管; 如果a大于b的话:那么我们就让s中的第i项替换成b,接着就直接输出S就行了。 这样

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

【秋招笔试】9.07米哈游秋招改编题-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集 100+ 套笔试题,笔试真题 会在第一时间跟新 🍄 题面描述等均已改编,如果和你笔试题看到的题面描述

C语言程序设计(选择结构程序设计)

一、关系运算符和关系表达式 1.1关系运算符及其优先次序 ①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于 ) ⑤==(等于) ⑥!=(不等于) 说明: 前4个优先级相同,后2个优先级相同,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符 1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符

LeetCode 第414场周赛个人题解

目录 Q1. 将日期转换为二进制表示 原题链接 思路分析 AC代码 Q2. 范围内整数的最大得分 原题链接 思路分析 AC代码 Q3. 到达数组末尾的最大得分 原题链接 思路分析 AC代码 Q4. 吃掉所有兵需要的最多移动次数 原题链接 思路分析 AC代码 Q1. 将日期转换为二进制表示 原题链接 Q1. 将日期转换为二进制表示 思路分析