CF1800F Dasha and Nightmares
F.Dasha and Nightmares
题意:\(n\) 个字符串 \(s_i\),问有多少对不同的 \((i, j) \ (1 \le i \le j \le n)\),使得 \(s_i\) 和 \(s_j\) 拼接后的字符串满足下列条件:
- 长度为奇数
- 恰好出现 25 个字母
- 每个字母出现次数为奇数
显然,如果满足后两个条件,第一个条件也满足。
由于只与是否出现和出现次数有关,不妨用两个数 \(a_i, b_i\) 代替 \(s_i\)。
\(a\) 表示出现过哪些字符,\(b\) 表示出现过哪些次数为奇的字符。
for(char c : s) {
a[i] |= 1 << c - 'a';
b[i] ^= 1 << c - 'a';
}
如果 \(i, j\) 满足条件,则
a[i] | a[j]恰好 25 位。a[i] | a[j] = b[i] ^ b[j]。
枚举没出现的那一位 k,则
a[i] >> k & 1 = 0a[j] >> k & 1 = 0a[i] | a[j] = b[i] ^ b[j] = ((1 << 26) - 1) ^ (1 << k)
令 val = ((1 << 26) - 1) ^ (1 << k)
一个第 k 位为 0 的 a[i] 对答案的贡献是满足以下条件的 j 的个数
a[j] >> k & 1 = 0b[j] = val ^ b[i]
用哈希表或者桶记录先前 b 出现的次数即可。
rep(k, 0, 25) {
int val = ((1 << 26) - 1) ^ 1 << k;
vector<int> t;
rep(i, 1, n) {
if(a[i] >> k & 1 ^ 1) {
++ cnt[b[i]];
t.pb(b[i]);
}
}
for(int x : t) ans += cnt[val ^ x];
for(int x : t) cnt[x] = 0;
}
我这里由于 i,j 是无序的,所以最终答案除二(自己和自己一定不行)。
CF1800F Dasha and Nightmares的更多相关文章
- Div.2 C. Dasha and Password
C. Dasha and Password time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- CF1100D Dasha and Chess
题目地址:CF1100D Dasha and Chess 这是我的第一道交互题 思路不难,主要讲讲这条语句: fflush(stdout); stdout是标准输出的意思.因为有时候,我们输出到std ...
- Codeforces Round #394 (Div. 2) C. Dasha and Password
C. Dasha and Password time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle 构造
E. Dasha and Puzzle 题目连接: http://codeforces.com/contest/761/problem/E Description Dasha decided to h ...
- Codeforces Round #394 (Div. 2) D. Dasha and Very Difficult Problem 贪心
D. Dasha and Very Difficult Problem 题目连接: http://codeforces.com/contest/761/problem/D Description Da ...
- Codeforces Round #394 (Div. 2) C. Dasha and Password 暴力
C. Dasha and Password 题目连接: http://codeforces.com/contest/761/problem/C Description After overcoming ...
- Codeforces Round #394 (Div. 2) B. Dasha and friends 暴力
B. Dasha and friends 题目连接: http://codeforces.com/contest/761/problem/B Description Running with barr ...
- Codeforces Round #394 (Div. 2) A. Dasha and Stairs 水题
A. Dasha and Stairs 题目连接: http://codeforces.com/contest/761/problem/A Description On her way to prog ...
- codeforces 761D - Dasha and Very Difficult Problem
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- 761A Dasha and Stairs
A. Dasha and Stairs time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
随机推荐
- Kingbase ES 游标跨事务及其案例一则
前言 本文介绍游标在PLSQL和SQL层跨事务使用案例,及其案例一则. 本文验证版本: db0=# select version(); db0-# / version ---------------- ...
- linux系统执行 ifconfig命令ens33没有显示ip地址解决办法
问题背景 安装虚拟机(以ubuntu为例)因为重启或更新等原因导致,无法通过ssh连接到虚拟机,本地cmd窗口ping虚拟机ip发现无法ping通 启动本地虚拟机 发现ens33 位置没有显示 ip地 ...
- Python 潮流周刊第 44 期(摘要)+ 赠书 5 本《明解Python算法与数据结构》
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 【LGR-069】洛谷 2 月月赛 II & EE Round 2
目录 前言 洛谷 6101 [EER2]出言不逊 分析 代码 洛谷 6102 [EER2]谔运算 分析 代码 洛谷 6103 [EER2] 直接自然溢出啥事没有 分析 代码 洛谷 6105 [Ynoi ...
- #博弈论#HDU 1847 Good Luck in CET-4 Everybody!
题目 有\(n\)个石子,每次只能取2的自然数幂个, 取完石子的人获胜,问先手是否必胜 分析 如果不是3的倍数,那么取完一次一定能剩下3的倍数个, 反之亦然,那么3的倍数为必败状态 代码 #inclu ...
- 密码学系列之:IDEA
密码学系列之:IDEA 目录 简介 IDEA简介 IDEA原理 IDEA子密钥的生成 简介 IDEA的全称是International Data Encryption Algorithm,也叫做国际加 ...
- OpenHarmony源码解析之电话子系统——通话流程
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 王大鹏 深圳开鸿数字产业发展有限公司 一.简介 OpenAtom OpenHarmony(以下简称"Open ...
- 深入了解 Java 方法和参数的使用方法
Java 方法 简介 方法是一块仅在调用时运行的代码.您可以将数据(称为参数)传递到方法中.方法用于执行特定的操作,它们也被称为函数. 使用方法的原因 重用代码:定义一次代码,多次使用. 提高代码的结 ...
- 基于OT与CRDT协同算法的文档划词评论能力实现
基于OT与CRDT协同算法的文档划词评论能力实现 当我们实现在线文档平台时,划词评论的功能是非常必要的,特别是在重文档管理流程的在线文档产品中,文档反馈是非常重要的一环,这样可以帮助文档维护者提高文档 ...
- UJCMS 9.1.0 发布,国内开源 java cms
许可协议从GPL-2改为Apache-2.0,更宽松的协议,方便用户将系统集成到自身的应用中. 修复了已知bug,系统更加稳定. 升级日志(9.1.0) 修复前台全文搜索没有结果 web.xml se ...