题目大意:给你N个字符串,你可以从中选择任意数量的字符串,请统计在你的字串中,相同字母出现次数正好为K次的字母数。数据保证出现的字母都是小写字母。

  • 1≤N≤15
  • 1 ≤K≤N

一开始读题的时候读错了,读成了至少为k次,就想的暴力选择全部字符串,然后统计字母数,但是在认真读题WA了N发后发现是恰好为K次,所以正确打开方式应该是

用二进制枚举所有选择方案,然后不断更新最大值。

因为每一个字符串在本题中只有两种状态:选(1),不选(0)

所以我们对于所有字符串总共有2^N个方案

我们随意取其中一个例子:20,将其转为二进制:10100

此时表示我们选择第一个和第三个字符串,其余字符串不选择,以这种方法我们可以将2^N次个方案全部枚举一遍,每次都统计出现字母的次数

通过,枚举每个方案

这时我们遇到了第二个问题,在每个方案中我们怎么知道每个字符串是否被选择到

这时就需要‘&’,按位与

1<<x == 2^x,二进制为100....000

1<<1 == 2,二进制为10

1<<2 == 4 二进制为100

1<<3 == 8,二进制为1000

除了第x位以外全是0,所以可以取出当前方案中的每一位,判断是否选择这个字符串,剩下的就是统计出现字母的次数了(map,数组映射都可以)

 1 #include <iostream>
2 #include <map>
3 #include <algorithm>
4 #include <cstring>
5 #define int long long
6 #define endl "\n"
7 using namespace std;
8 signed main()
9 {
10 ios::sync_with_stdio(false);
11 cin.tie(0);
12 int n, m;
13 cin >> n >> m;
14 string a[25];
15 int ans = 0;
16 for (int i = 0; i < n; ++i)
17 cin >> a[i];
18 for (int i = 0; i < (1 << n); ++i)
19 {
20 int mp[26] = {0};
21 for (int j = 0; j < n; ++j)
22 {
23 if (i & (1 << j))
24 {
25 for (int k = 0; k < a[j].length(); ++k)
26 {
27 mp[a[j][k] - 'a']++;
28 }
29 }
30 }
31 int res = 0;
32 for (char j = 0; j < 26; ++j)
33 {
34 if (mp[j] == m)
35 {
36 res++;
37 }
38 }
39 ans = max(ans, res);
40 }
41 printf("%lld", ans);
42
43 return 0;
44 }

Atcoder beginner contest 249 C-Just K(二进制枚举)的更多相关文章

  1. AtCoder Beginner Contest 249 E - RLE // 动态规划 + 前缀和优化

    传送门:E - RLE (atcoder.jp) 题意: 求满足原长为N且转换后长度严格小于N条件的小写字母组成的字符串的数量,输出时对P取模. 其中,转换规则为,将连续相同的字串替换为"字 ...

  2. AtCoder Beginner Contest 249 F - Ignore Operations // 贪心 + 大根堆

    传送门:F - Keep Connect (atcoder.jp) 题意: 给定长度为N的操作(ti,yi). 给定初值为0的x,对其进行操作:当t为1时,将x替换为y:当t为2时,将x加上y. 最多 ...

  3. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  4. AtCoder Beginner Contest 172 题解

    AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...

  5. AtCoder Beginner Contest 238 A - F 题解

    AtCoder Beginner Contest 238 \(A - F\) 题解 A - Exponential or Quadratic 题意 判断 \(2^n > n^2\)是否成立? S ...

  6. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  7. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  8. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  9. AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】

    AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...

随机推荐

  1. 从零开始Blazor Server(14)--修改密码

    目前,我们只做了在用户管理里强行修改密码,而没有做用户自行修改密码的功能,今天我们来实现它. 首先,我们的用户密码修改最好的位置应该就是在头像下面的下拉菜单里,所以我们在那里的LinkTemplate ...

  2. 2019 CSP-S Ⅱ 游记

    day0(试机) 第零天,重新打了一遍头文件和读优,熟悉了一下就匆匆走了. day1 T1一看到先把二分打了,然后发现long long要爆,好慌 主要是基础知识不够扎实,不知道unsigned lo ...

  3. Java基础——01

    今日学习 2020-2-27 Java多态 多态性格式 /* 代码中体现多态性 其实就是一句话:父类指向子类对象 格式: 父类名称 对象名= new 子类名称(): 或者 接口名称 对象名 = new ...

  4. KingbaseES如何更改现有表的主键

    更改主键 假设您必须更改现有表的主键.您可以通过执行以下语句来实现此目的: ALTER TABLE tablename DROP CONSTRAINT tablename_pkey , ADD PRI ...

  5. 在Windows客户端自动设置AD用户头像

    Windows现在可以设置用户头像,并在开始菜单显示.如果你安装了Exchange或者Lync,那么可以在Outlook或者Skype里看到用户的头像.这个图片是存储在AD用户属性里的.对于桌面电脑的 ...

  6. Coprime

    Coprime 前置芝士 莫比乌斯反演 正文 首先,我们来分析题意. 题目中给出 \(n\) 个人,每个人有一个编号 \(k\) ,要求我们从中选出 \(3\) 个人,三人编号分别为 \(k_a\) ...

  7. windows下 Rust 环境配置

    搭建 Visual Studio Code 开发环境 首先,需要安装最新版的 Rust 编译工具和 Visual Studio Code. Rust 编译工具:https://www.rust-lan ...

  8. 使用读写分离模式扩展 Grafana Loki

    转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247500127&idx=1&sn=995987d558 ...

  9. 内网部署YApi

    官网地址:https://hellosean1025.github.io/yapi/devops/index.html 环境要求 nodejs(7.6+) mongodb(2.6+),安装看这篇文章: ...

  10. Kibana可视化数据(Visualize)详解

    可视化 (Visualize) 功能可以为您的 Elasticsearch 数据创建可视化控件.然后,您就可以创建仪表板将这些可视化控件整合到一起展示. Kibana 可视化控件基于 Elastics ...