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

codeforces 1045I Palindrome Pairs 【stl+构造】

题目:戳这里

题意:给1e5个字符串,问有多少对字符串组合,满足最多只有一种字符有奇数个。

解题思路:每种情况用map存一下就行了。感觉这题自己的代码思路比较清晰,所以写个题解记录一下

附ac代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn = 2e5 + 10;
 5 const ll mod = 998244353;
 6 int arr[33];
 7 int nu[maxn];
 8 int now;
 9 string st;
10 map<int, int> mp;
11 int main() {
12     ios::sync_with_stdio(false);
13     int n;
14     cin>>n;
15     for(int i = 1; i <= n; ++i) {
16         memset(arr,0,sizeof(arr));
17         cin>>st;
18         now=0;
19         for(int j = 0; j < st.size(); ++j) {
20             arr[st[j]-'a']++;
21         }
22         for(int j = 0; j < 26; ++j) {
23             if(arr[j]&1) now += 1<<j;
24         }
25         ++mp[now];
26         nu[i] = now;
27     }
28 
29     int od = 0;
30     ll ans = 0;
31 
32     for(int i = 1; i <= n; ++i) {
33         od = 0;
34         for(int j = 0; j < 26; ++j) {
35             if(nu[i]&(1<<j)) ++od;
36         }
37         if(od == 0) {
38             ans += mp[nu[i]] - 1;
39             for(int j = 0; j < 26; ++j) {
40                 ans += mp[1<<j];
41             }
42         }
43         else {
44             ans += mp[nu[i]] - 1;
45             for(int j = 0; j < 26; ++j) {
46                 ans += mp[nu[i]^(1<<j)];
47             }
48         }
49     }
50     printf("%lld\n", ans / 2ll);
51     return 0;
52 }
View Code

 

转载于:https://www.cnblogs.com/zmin/p/9910525.html

相关文章:

  • 【SSH网上商城项目实战09】添加和更新商品类别功能的实现
  • 10-many2one
  • 【模板】ac自动机
  • ELK实时日志分析平台环境部署--完整记录
  • 前端学习路线
  • mysql字段名与关键字重复解决办法
  • 一步一步实现web程序信息管理系统之一----登陆界面实现
  • nginx反向代理解决跨域问题
  • 云架构师进阶攻略
  • 辗转相除法求最大公约数(c++)
  • Customize Acrylic Brush in UWP Applications(在UWP中自定义亚克力笔刷)
  • Java 基础拾遗
  • Docker Swarm 介绍 or 工作原理
  • go学习笔记-错误处理
  • python中各种数据类型
  • 「面试题」如何实现一个圣杯布局?
  • CSS 提示工具(Tooltip)
  • javascript从右向左截取指定位数字符的3种方法
  • js操作时间(持续更新)
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Vue.js源码(2):初探List Rendering
  • 大数据与云计算学习:数据分析(二)
  • 深入浅出webpack学习(1)--核心概念
  • 《码出高效》学习笔记与书中错误记录
  • 阿里云服务器购买完整流程
  • ​queue --- 一个同步的队列类​
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C#)一个最简单的链表类
  • (day 12)JavaScript学习笔记(数组3)
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (顺序)容器的好伴侣 --- 容器适配器
  • .chm格式文件如何阅读
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .Net Web窗口页属性
  • .net 简单实现MD5
  • .NET 事件模型教程(二)
  • .NET业务框架的构建
  • :如何用SQL脚本保存存储过程返回的结果集
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • []T 还是 []*T, 这是一个问题
  • [ERROR] Plugin 'InnoDB' init function returned error
  • [opencvsharp]C#基于Fast算法实现角点检测
  • [Python学习]总结一下Cygwin安装与进阶学习列表
  • [Ray Tracing in One Weekend] 笔记
  • [Spring Cloud] gateway全局异常捕捉统一返回值
  • [sqlmap]学习笔记#1
  • [SQL开发笔记]DELETE 语句:删除表中的行
  • [SSD综述 1.4] SSD固态硬盘的架构和功能导论
  • [VSCode] Shortcuts