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 ...
随机推荐
- linux查看资源使用情况
linux查看资源使用情况 top -c # 查看资源使用情况 top 输出如下内容 top - 14:54:21 up 95 days, 20:03, 3 users, load average: ...
- C++设计模式 - 职责链模式(Chain of Resposibility)
数据结构模式 常常有一-些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用.这时候,将这些特定数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无 ...
- JDK10的新特性:var和匿名类
目录 简介 匿名类中自定义变量 lambda表达式中的匿名类 总结 简介 匿名类相信大家都用过了,学过JDK8中的lambda表达式之后,可以发现有些匿名类是可以用lambda表达式来替代的,能够被替 ...
- SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用
SQL NULL 值 什么是 NULL 值? NULL 值是指字段没有值的情况.如果表中的字段是可选的,那么可以插入新记录或更新记录而不向该字段添加值.此时,该字段将保存为 NULL 值.需要注意的是 ...
- C#实现的下拉多选框,下拉多选树,多级节点
今天给大家上个硬货,下拉多选框,同时也是下拉多选树,支持父节点跟子节点!该控件是基于Telerik控件封装实现的,所以大家在使用的过程中需要引用Telerik.WinControls.dll.Tele ...
- HMS Core视频编辑服务:AI着色, 忆往昔看今朝
近期热播的电视剧<人世间>,讲述了70年代无数普通人的故事,细腻的人物形象和真实的故事感动着我们.原来在那个年代,我们的父母和祖辈都在为新中国的美好生活而奋斗着,为国家舍弃了小家团聚的机会 ...
- MFC程序隐藏托盘+右键关闭菜单
背景介绍: 我的程序是启动后,默认就隐藏到托盘中,等待http请求后,显示界面.所以最小化到托盘的代码,我是写在初始化里面. 正文: 一.自定义消息 WM_SHOWTASK #define W ...
- ArkUI新能力,助力应用开发更便捷
原文链接:https://mp.weixin.qq.com/s/TAuq1WC6435ebn6L61rZAA,点击链接查看更多技术内容: ArkUI是一套构建分布式应用的声明式UI开发框架.它具 ...
- TextIn.com API使用心得
我们参加了本次大学生创新创业服务外包大赛,在项目中大量使用到了合合信息所提供的api进行相关功能实现,所以在这里写一篇博客分享一下我们在项目的实际推进中关于TextIn.com API使用心得 我们的 ...
- javascript现代编程系列教程之二——IIFE
IIFE(Immediately Invoked Function Expression,立即执行函数表达式)是一个在定义后立即执行的JavaScript函数.它具有以下特点: 是一个匿名函数:通常情 ...