洛谷-P2114 [NOI2014] 起床困难综合症

news/2024/11/23 2:32:15/

题目链接:

P2114 [NOI2014] 起床困难综合症 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目描述:

21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因:在深邃的太平洋海底中,出现了一条名为 drd 的巨龙,它掌握着睡眠之精髓,能随意延长大家的睡眠时间。正是由于 drd 的活动,起床困难综合症愈演愈烈,以惊人的速度在世界上传播。为了彻底消灭这种病,atm 决定前往海底,消灭这条恶龙。历经千辛万苦,atm 终于来到了 drd 所在的地方,准备与其展开艰苦卓绝的战斗。drd 有着十分特殊的技能,他的防御战线能够使用一定的运算来改变他受到的伤害。具体说来,drd 的防御战线由 n 扇防御门组成。每扇防御门包括一个运算 op 和一个参数 t,其中运算一定是 OR,XOR,ANDOR,XOR,AND 中的一种,参数则一定为非负整数。如果还未通过防御门时攻击力为 x,则其通过这扇防御门后攻击力将变为x op t。最终 drd 受到的伤害为对方初始攻击力 x 依次经过所有 n 扇防御门后转变得到的攻击力。

由于 atm 水平有限,他的初始攻击力只能为 0 到 m 之间的一个整数(即他的初始攻击力只能在0,1,…,m 中任选,但在通过防御门之后的攻击力不受 m 的限制)。为了节省体力,他希望通过选择合适的初始攻击力使得他的攻击能让 drd 受到最大的伤害,请你帮他计算一下,他的一次攻击最多能使 drd 受到多少伤害。

输入格式:

输入文件的第 1 行包含 2 个整数,依次为 n,m,表示 drd 有 n 扇防御门,atm 的初始攻击力为 0 到 m 之间的整数。

接下来 n 行,依次表示每一扇防御门。每行包括一个字符串 op 和一个非负整数 t,两者由一个空格隔开,且 op 在前,t 在后,op 表示该防御门所对应的操作,t 表示对应的参数。

输出格式:

输出一行一个整数,表示 atm 的一次攻击最多使 drd 受到多少伤害。

输入输出样例:

输入

3 10
AND 5
OR 6
XOR 7

输出

1

说明/提示

【样例说明】

atm 可以选择的初始攻击力为 0,1,…,10。

假设初始攻击力为 4,最终攻击力经过了如下计算

4 AND 5=4

4 OR 6=6

6 XOR 7=1

类似的,我们可以计算出初始攻击力为 1,3,5,7,9 时最终攻击力为 0,初始攻击力为 0,2,4,6,8,10 时最终攻击力为 1,因此atm的一次攻击最多使drd受到的伤害值为 1。

【数据规模与约定】

思路:

由于n和m的范围太大,用暴力方法是行不通的,会TLE,这里我们采取贪心策略.

核心思路:用全0和全1的分别计算一遍,然后在不超过m的情况下,选在二进制下计算结果为1的那种情况

参考代码:

#include <bits/stdc++.h>
using namespace std;inline int read()
{bool sym = 0;int res = 0;char ch = getchar();while (!isdigit(ch)) sym |= (ch == '-'), ch = getchar();while (isdigit(ch)) res = (res << 3) + (res << 1) + (ch ^ 48), ch = getchar();return sym ? -res : res;
}int main()
{int n = read(), m = read();int st1 = 0, st2 = pow(2, 31) - 1;string op;int t, ans = 0;while (n--){cin >> op;t = read();if (op == "AND")st1 &= t, st2 &= t;else if (op == "OR")st1 |= t, st2 |= t;else if (op == "XOR")st1 ^= t, st2 ^= t;}int tp = 0;for (int i = 30; i >= 0; i--){if (st1 >> i & 1)ans += (1 << i);else if (st2 >> i & 1 && tp + (1 << i) <= m)tp += (1 << i), ans += (1 << i);}printf("%d", ans);return 0;
}
#include <bits/stdc++.h>
using namespace std;typedef long long ll;
bitset<30> a, b(1073741823), c;
int r;
char s[5];inline int read()
{bool sym = 0;int res = 0;char ch = getchar();while (!isdigit(ch)) sym |= (ch == '-'), ch = getchar();while (isdigit(ch)) res = (res << 3) + (res << 1) + (ch ^ 48), ch = getchar();return sym ? -res : res;
}int main()
{int n=read(),m=read();for (int i = 1; i <= n; i++){scanf("%s%d", s, &r);if (s[0] == 'A')a &= r, b &= r;if (s[0] == 'O')a |= r, b |= r;if (s[0] == 'X')a ^= r, b ^= r;}for (int i = 0; i < 30; i++)if (a[i] | (b[i] && c.to_ulong() < m))c[i] = 1;printf("%d", c.to_ulong());
}

http://www.ppmy.cn/news/19533.html

相关文章

Mybatis 与 JDBC 编程的比较 及#{}与${}的区别

1.数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能&#xff0c;如果使用数据库链接池可解决此问题。解决&#xff1a;在 SqlMapConfig.xml 中配置数据链接池&#xff0c;使用连接池管理数据库链接。2.Sql 语句写在代码中造成代码不易维护&#xff0c;实际应用 sql 变…

Rust note

Rust 该文摘抄或总结自《Rust 权威指南》将持续跟进 基础篇 Hello, world! fn main() {println!("Hello, world!"); }变量声明 使用let 关键字进行声明&#xff1a; let 变量名: 类型; 也可以同时赋初始值&#xff1a; let 变量名: 类型 值; 编译器可对部分值的…

Service Mesh

Service Mesh 参考如下文章&#xff1a;可以将此文章看作为下面文章的结合&#xff1a; https://zhuanlan.zhihu.com/p/61901608 https://philcalcado.com/2017/08/03/pattern_service_mesh.html https://zhuanlan.zhihu.com/p/153105848?from_voters_pagetrue 微服务演化进…

【GIS】高分辨率遥感影像智能解译

1 绪论 随着航空科技工业的不断成熟与发展&#xff0c;我国遥感卫星研制能力不断攀升&#xff0c;发射数量逐年提高&#xff0c;在轨运行的遥感卫星为社会生产及居民日常生活提供了巨大的支持与便利。我国目前同时在轨运行的遥感卫星数量已超过60颗&#xff0c;每天获取并传回…

恶意代码分析实战 11 恶意代码的网络特征

11.1 Lab14-01 问题 恶意代码使用了哪些网络库&#xff1f;它们的优势是什么&#xff1f; 使用WireShark进行动态分析。 使用另外的机器进行分析对比可知&#xff0c;User-Agent不是硬编码。 请求的URL值得注意。 回答&#xff1a;使用了URLDownloadToCacheFileA函数&#…

Leetcode:46. 全排列、47. 全排列 II(C++)

目录 46. 全排列 问题描述&#xff1a; 实现代码与解析&#xff1a; 回溯&#xff1a; 原理思路&#xff1a; 47. 全排列 II 题目描述&#xff1a; 实现代码与解析&#xff1a; 回溯&#xff1a; 原理思路&#xff1a; 46. 全排列 问题描述&#xff1a; 给定一个不含…

Linux|奇怪的知识---CPU温度监控

前言&#xff1a; 最近我的台式机电脑CPU风扇由于积灰严重&#xff0c;噪音比较大&#xff0c;因此更换了CPU风扇。 更换比较简单没什么好说的&#xff0c;但我想清楚的知道我的CPU温度到底是多少&#xff0c;进而知道这个新风扇是否能给CPU一个清凉的环境&#xff0c;因此需…

SaaS是什么,目前主流的国内SAAS平台提供商有哪些?

SaaS是什么&#xff0c;目前主流的国内SAAS平台提供商有哪些&#xff1f;SaaS这个概念近两年可谓说是十分火热&#xff0c;尤其是后疫情时代。 但还是有很多人对SaaS这个名词云里雾里&#xff0c;被碎片化的信息裹挟&#xff0c;并没有真正意义上理解SaaS的概念。 这篇就综合…