当前位置: 首页 > news >正文

题解:P1310 [NOIP2011 普及组] 表达式的值

前置芝士

在题目中,*号其实为&号其实为|

对于这种表达式的题目,我们一般都要建一棵表达式树。这道题我也用到了树形 DP。其实大家应该都接触到过,在题目中叫你求这颗二叉树的大小,在某种意义上也是树形 DP。怎么整呢?我们在每个子树的空格处填入 \(0\)\(1\),得到结果 \(0\)\(1\) 的方案数分别是多少。以下图片中的 \(L_0,L_1,R_0,R_1\) 分别表示左右子树算出来为 \(0\)\(1\) 的方案数。

这个算出来为 \(0\) 的方案数为 \(L_0\cdot R_0+L_0\cdot R_1+L_1\cdot R_0\)

这个算出来为 \(0\) 的方案数为 \(L_0\cdot R_0\)

AC code:

#include <bits/stdc++.h>
using namespace std;
const int mod = 10007;
const int N = 101000;
struct info {int s0, s1;
};
int n, l1[N], l2[N], c1[N], c2[N];
char s[N];
info f(int l, int r) {info ans;if (l > r) {ans.s0 = 1;ans.s1 = 1;return ans;}if (l1[r] >= l) {info ansl = f(l, l1[r] - 1);info ansr = f(l1[r] + 1, r);ans.s0 = ansl.s0 * ansr.s0 % mod;ans.s1 = (ansl.s0 * ansr.s1 + ansl.s1 * ansr.s0 + ansl.s1 * ansr.s1) % mod;return ans;}if (l2[r] >= l) {info ansl = f(l, l2[r] - 1);info ansr = f(l2[r] + 1, r);ans.s1 = ansl.s1 * ansr.s1 % mod;ans.s0 = (ansl.s0 * ansr.s1 + ansl.s1 * ansr.s0 + ansl.s0 * ansr.s0) % mod;return ans;}if (s[l] == '(' && s[r] == ')')return f(l + 1, r - 1);
//	assert(false);return ans;
}
int main() {scanf("%d", &n);if (n == 0) {printf("1\n");return 0;}scanf("%s", s + 1);int x = 0;for (int i = 1; i <= n; i++) {if (s[i] == '(')x += 1;else if (s[i] == ')')x -= 1;else if (s[i] == '+')c1[x] = i;else if (s[i] == '*')c2[x] = i;l1[i] = c1[x];l2[i] = c2[x];}info ans = f(1, n);printf("%d", ans.s0);
} 
http://www.gsyq.cn/news/198220.html

相关文章:

  • 停车场空位语音提示:驾驶员快速找到可用车位
  • 日本动漫经典重现:蜡笔小新用AI说普通话
  • 瑞士钟表匠工作室:精细操作伴随专注的低声细语
  • 题解:AT_abc389_c [ABC389C] Snake Queue
  • PyTorch显存占用太高?3个鲜为人知的Python技巧让你效率翻倍
  • 编辑文章 - 题解:CF665D Simple Subset
  • 电力巡检机器人语音报告:野外作业人员实时接收信息
  • 提升PostgreSQL编码效率的利器:pg-aiguide✨
  • 让Claude更聪明,提升效率的秘笈——Agent Skills 开源项目介绍
  • 题解:CF628C Bear and String Distance
  • 没闲着系列 2026 - 1.2 - ukyo-
  • 深度伪造语音防范:如何识别VoxCPM-1.5-TTS生成内容?
  • 罗马斗兽场历史回顾:角斗士入场时的呐喊重现
  • 孔子学院教学辅助:留学生练习汉语发音的好帮手
  • 【高性能Python网络编程】:掌握HTTPX并发控制的3个核心机制
  • 揭秘Transformer模型在Python中的显存瓶颈:如何从16GB减至8GB
  • AI歌手专辑发行:首张完全由机器创作并演唱的唱片
  • 工厂产线状态通报:机器运行异常时自动语音预警
  • 【高效开发必备】:FastAPI中绕过不必要预检请求的3种实战方案
  • Python大模型显存管理实战(从OOM到流畅训练的5个关键步骤)
  • 拍卖会竞价播报:主持人助手实时复述出价金额
  • 数据科学与大数据技术毕业设计最全方向答疑
  • 揭秘Python多模态数据存储瓶颈:3种高性能方案彻底提升IO效率
  • NBA球星采访重播:粉丝选择自己喜欢的解说风格
  • 【AI工程师私藏手册】:Python大模型显存占用分析与极致压缩技术揭秘
  • VoxCPM-1.5-TTS-WEB-UI支持多种语言输入的语音合成测试报告
  • 卢卡斯定理简记
  • CSDN官网博主都在用的语音合成工具:VoxCPM-1.5-TTS推荐
  • 前端频繁触发预检?FastAPI CORS配置全攻略,一文搞定
  • 足球裁判判罚解释:赛后回放附带语音说明争议点