贝茜的报复

问题描述

农夫约翰和奶牛贝茜喜欢在业余时间互相出数学题。

约翰给贝茜出了一道相当难的问题,导致她没能解决。

现在,她希望通过给约翰出一道有挑战性的难题来报复他。

贝茜给了约翰一个表达式 (B+E+S+S+I+E)(G+O+E+S)(M+O+O),其中包含七个变量 B,E,S,I,G,O,MO 是变量,不是零)。

对于每个变量,她给约翰一个列表,表中包含该变量可采用的最多 20 个整数值。

她要求约翰计算,共有多少种给变量赋值的方法可以使得表达式的计算结果为偶数。

输入格式
第一行包含一个整数 N

接下来 N 行,每行包含一个变量和该变量的一个可能值。

每个变量至少出现 1 次,最多出现 20 次。

同一变量不会重复列出同一可能值。

输出格式
输出可以使得表达式的计算结果是偶数的给变量赋值的方法总数。

数据范围

7≤N≤140,

所有变量的可能取值范围 [−300,300]

本题答案不会超出int范围。

输入样例:

10
B 2
E 5
S 7
I 10
O 16
M 19
B 3
G 1
I 9
M 2

输出样例:

6

样例解释
共有 6 种可能的赋值方式:

(B,E,S,I,G,O,M) = (2, 5, 7, 10, 1, 16, 19) -> 53,244
= (2, 5, 7, 10, 1, 16, 2 ) -> 35,496
= (2, 5, 7, 9, 1, 16, 2 ) -> 34,510
= (3, 5, 7, 10, 1, 16, 2 ) -> 36,482
= (3, 5, 7, 9, 1, 16, 19) -> 53,244
= (3, 5, 7, 9, 1, 16, 2 ) -> 35,496

注意,(2, 5, 7, 10, 1, 16, 19) 和 (3, 5, 7, 9, 1, 16, 19),虽然计算结果相同,但是赋值方式不同,所以要分别计数。

题意理解

DFS枚举每一个字母的奇偶

记录每一个字母的奇数,偶数的个数

枚举每一个字母的奇数和偶数的情况(2^7种情况)

化简(B + I + S + S + E + E), (G + O + E + S), (M + O + O)

得到(B + I), (G + O + E + S), (M)

满足 B + I,或者 G + O + E + S 或者 M 其中一个为偶数,则答案为偶数

假如满足,累加到答案ans中

时间复杂度(2^7 + n)

完整代码

#include <bits/stdc++.h>
using namespace std;map<char, int> m1, m2, a;//m1用于存每个字母中奇数的个数  m2用于存每个字母中偶数的个数 a用于存每个字母枚举的是偶数还是奇数
string S = "BISEGOM";int n;
int ans;void dfs(int u, int x)
{if(u == 7){if( (a['B'] + a['I']) % 2 && (a['G'] + a['O'] + a['E'] + a['S']) % 2 && a['M'] % 2) //都为奇数 乘积为奇数return;else{ans += x;return ;}}char ch = S[u];a[ch] = 1; dfs(u + 1, x * m1[ch]);a[ch] = 2; dfs(u + 1, x * m2[ch]);
}int main()
{cin >> n;while(n--){char ch; int x;scanf("%s%d", &ch, &x);if(x % 2) m1[ch]++;//奇数else m2[ch]++;}dfs(0, 1);cout << ans << endl;return 0;
}

寒假每日一题——贝茜的报复相关推荐

  1. AcWing寒假每日一题2058. 笨拙的手指

    AcWing寒假每日一题2058. 笨拙的手指 题目描述 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果 ...

  2. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.11日(2017省赛A第9题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家看博客目录:https://b ...

  3. 【寒假每日一题】剪绳子(个人练习)详细题解+推导证明(第六天)

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 今天终于出核酸检测的结果,还好大家都没事,不然怕是要封城了!!! 今天还是寒假 ...

  4. 【寒假每日一题】分巧克力(个人练习)详细题解+推导证明(第八天)附带转载程序员壁纸

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 话说今天开始准备搞一个秋招的GitHub,算是复习一遍了. 今天还是寒假每日一 ...

  5. 1875.贝茜的报复

    Powered by:NEFU AB-IN Link 文章目录 1875.贝茜的报复 题意 思路 代码 1875.贝茜的报复 题意 农夫约翰和奶牛贝茜喜欢在业余时间互相出数学题. 约翰给贝茜出了一道相 ...

  6. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.20日(2018省赛A组第8题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  7. 【寒假每日一题】数字三角形(个人练习)详细题解+推导证明(第二天)

    文章目录 前言 题目 详细题解 写法1 O ( n 2 ) O(n^2) O(n2) 推导证明 写法2 O ( n 2 ) O(n^2) O(n2) 推导证明 举一反三 总结 前言 昨天真是人生中奇葩 ...

  8. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  9. 倪文迪陪你学蓝桥杯2021寒假每日一题:2.1日(2019省赛A组第10题)

    2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...

最新文章

  1. 测试MindMotion 的 ISP功能 - 无法进入ISP功能
  2. android studio 中 gradle 配置与说明
  3. 编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起
  4. 安徽工业大学计算机考研历年分数线,安徽工业大学历年考研分数线汇总[2012-2021]...
  5. python的图书管理项目教程_基于python图书馆管理系统设计实例详解
  6. os.environ[‘CUDA_VISIBLE_DEVICES‘]= ‘0‘设置环境变量
  7. 判断linux进程是否存在
  8. 【cocos2d-x】对CCSprite进行高斯模糊
  9. [js高手之路] dom常用节点属性兼容性详解与应用
  10. 量子纠缠2——CHSH不等式
  11. 机器学习:邹博邹伟教学
  12. .gitignore java web_使.gitignore忽略除少数文件以外的所有内容
  13. 免费开源的图像处理软件GIMP下载安装(Windows)
  14. linux有没有右键解压文件夹,压缩解压文件无需右键可以这样操作
  15. 彻查手机端浏览博客园出现广告一事!
  16. 基于eNSP华为模拟器的VRRP简单实验
  17. LocalSend - 文件传输工具
  18. 20款精美APP和Web设计模板素材(附演示链接)
  19. 阿龙学堂-启动spark任务的两种方式
  20. 編程之美﹣電梯調度算法

热门文章

  1. 简单工厂 工厂方法 抽象工厂
  2. PHP公司高级面试题2017,php面试题2017
  3. 智能合约--如何实现可升级的智能合约
  4. H.265/HEVC学习笔记:变换
  5. 噪声和信噪比的转换(如何在数据集中添加噪声)
  6. 服务器未能启动w3svc,win10,iis10无法启动,w3svc服务无法启动
  7. 计算机考研数学复试时间,数学专业考研准备多久
  8. 鼠标经过图片 图片放大缩小
  9. 找出游戏的获胜者(java)
  10. 使用Canvas HTML5画出时钟