A Adjacent Swapping

题意:

给定一个字符串,每次可以移动相邻字符,求最小移动次数可以把它变成s+s这样左右两边相同的字符串。

思路:

1:我们知道他一定是偶数长度,所以我们把字符串分成两部分s1和s2

2:贪心的扫描一遍这个字符串,s1就是前一半,然后计算在满足这一般的时候他要移动多少次,即直接往前移动就可以了

len = i-s1.size()

3:此时的s2就是剩下的数组,我们需要把s2变成s1,所以也就是求s2变成s1需要多少步,求步数这个思想类似于冒泡排序

4:我们根据冒泡排序的性质:对于任意两个数看他是否逆序即大数在前小数在后如果逆序则进行交换次数+1,那么我们就可以根据这个性质求出s2到s1通过树状数组或归并排序求逆序对求出步数

点击查看代码
#include <bits/stdc++.h>

using namespace std;
#define int long long
map<char,int>mp;
queue<int>q[30];
const int N = 1e6 + 10;
int d[N];
int lowbit(int x)
{
return x&(-x);
}
void add(int x)
{
for(;x<= N;x += lowbit(x))
d[x]++;
}
int query(int x)
{
int res = 0;
for(;x;x-=lowbit(x))
res += d[x];
return res;
}
void solve()
{
int n;
cin >> n;
string s;
cin >> s;
for(int i = 0;i < n;i ++)
{
mp[s[i]] ++;
} for(auto [l,r]:mp)
{
mp[l] = r/2;
} string s1,s2;
int ans = 0;
for(int i = 0;i < n;i ++)
{
if(mp[s[i]]!=0)
s2+=s[i],mp[s[i]]--,ans += i+1-s2.size();
else
s1 += s[i];
}
for(int i = 0;i < s2.size();i ++)
{
q[s2[i]-'a'].push(i);
}
vector<int>num;
for(int i = 0;i < s1.size();i ++)
{
num.push_back(q[s1[i]-'a'].front());
q[s1[i]-'a'].pop();
}
for(int i = 0;i < num.size();i ++)
{
ans += query(n/2)-query(num[i]+1);
add(num[i]+1);
}
cout << ans << '\n';
}
signed main()
{
solve();
}

2022年第十四届四川省大学生程序设计大赛 A的更多相关文章

  1. CISCN2021-第十四届全国大学生信息安全竞赛-WriteUp

    WriteUp - Maple_root -CISCN2021 总结 总得分:3400 总排名:203 赛区排名:21 第一次认真参加正式的CTF,24+3小时的脑血栓比赛时长,收获还是很多的. 开卷 ...

  2. 第十四届华中科技大学程序设计竞赛 C Professional Manager【并查集删除/虚点】

    题目描述 It's universally acknowledged that there're innumerable trees in the campus of HUST. Thus a pro ...

  3. 第十四届中北大学ACM程序设计竞赛 J.ZBT的游戏

    问题描述 第14届中北大学程序设计竞赛来了,集训队新买了一大堆气球,气球一共有K种颜色(1<=K<=256),气球的颜色从1-K编号. ZBT童心未泯,他发明了一种摆放气球的游戏,规则如下 ...

  4. 第十四届华中科技大学程序设计竞赛决赛同步赛 A - Beauty of Trees

    A - Beauty of Trees 题意: 链接:https://www.nowcoder.com/acm/contest/119/A来源:牛客网 Beauty of Trees 时间限制:C/C ...

  5. 第十四届华中科技大学程序设计竞赛决赛同步赛 F Beautiful Land(01背包,背包体积超大时)

    链接:https://www.nowcoder.com/acm/contest/119/F来源:牛客网 Beautiful Land 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1 ...

  6. 第十四届华中科技大学程序设计竞赛 K Walking in the Forest【二分答案/最小化最大值】

    链接:https://www.nowcoder.com/acm/contest/106/K 来源:牛客网 题目描述 It's universally acknowledged that there'r ...

  7. 第十四届华中科技大学程序设计竞赛 J Various Tree【数值型一维BFS/最小步数】

    链接:https://www.nowcoder.com/acm/contest/106/J 来源:牛客网 题目描述 It's universally acknowledged that there'r ...

  8. 第十四届华中科技大学程序设计竞赛 B Beautiful Trees Cutting【组合数学/费马小定理求逆元/快速幂】

    链接:https://www.nowcoder.com/acm/contest/106/B 来源:牛客网 题目描述 It's universally acknowledged that there'r ...

  9. 第十四届华中科技大学程序设计竞赛决赛同步赛 Beautiful Land

    It’s universally acknowledged that there’re innumerable trees in the campus of HUST.Now HUST got a b ...

  10. 第十四届华中科技大学程序设计竞赛 K--Walking in the Forest

    链接:https://www.nowcoder.com/acm/contest/106/K来源:牛客网 题目描述 It’s universally acknowledged that there’re ...

随机推荐

  1. Java Swing的练习感悟

    感悟心得 这还是我第一次使用Java Swing写代码呢,直接就是趣味性拉满! 在相关的界面代码的基础上,在必要的位置嵌入Java代码,就可以很好的实现啦! 简单的嘞! (有兴趣的各位可以选择去浅浅地 ...

  2. Java 编程入门第一课:HelloWorld

    在之前的文章中,壹哥带大家搭建出了 Java 的开发环境,配置了 JDK 环境变量,并且我们也熟悉了 dos 命令行的操作.那么从这篇文章开始,壹哥就开始带各位真正地学习 Java 代码该怎么写. - ...

  3. MySQL与Java常用数据类型的对应关系

    一.字符串数据类型: MySQL类型名 大小 用途 对应Java类名 char 0-255 bytes 定长字符串 (姓名.性别.学号) String varchar 0-65535 bytes 变长 ...

  4. vue中新的状态管理器-pinia

    背景 对于pinia的使用,可参考官方文档在这不做过多赘述.这边主要来讲讲pinia中 少用且好用的方法,为什么我们选择pinia而不用vuex ps: 以下写法全部基于组合式API 使用方式: 先下 ...

  5. Promise合集

    Promise.all Promise.all 可以将多个 Promise 实例包装成一个新的 Promise 实例.所有的 Promise 对象都成功时返回的是一个结果数组,一旦有任何一个 Prom ...

  6. 原生请求 js、jquery封装的ajax请求、axios请求与fetch请求区别与优缺点

    原生JS请求 现代浏览器,最开始与服务器交换数据,都是通过XMLHttpRequest对象.它可以使用JSON.XML.HTML和text文本等格式发送和接收数据. 首先我们先把原生的请求封装一下: ...

  7. win10计划任务程序库实现定时任务的自动执行程序及问题解决。

    win10计划任务程序库可以实现按照规则频率执行脚本的功能.现在将设置方法记录如下: 创建任务步骤 1.右键点击我的电脑,选择管理,依次点击:系统工具->任务计划程序->任务计划程序库. ...

  8. Visual Studio 2022 不支持 .NET Framework 4.5 项目的解决办法

    概述 升级到Visual Studio  2022后,打开速度快了很多,开发体验也舒服很多.只是使用过程中遇到了一个比较尴尬的问题:默认Visual Studio 2022 不再支持安装 .NET F ...

  9. 内网搭建DNS服务器

    DNS:Domain Name Service,域名解析服务 监听端口:udp/53,tcp/53 应用程序:bind 根域:. 一级域: 组织域:.com, .org, .net, .mil, .e ...

  10. 《HelloTester》第4期

    1.前言 终于到了谈面试的部分了! 我在这也说明一下,有同学说之前简历篇的时候一直在说项目的介绍,而面试官真正关心的是技术啊?我在这做个解释,因为我写的这些文章主要针对的是软件测试的同学,所以其他职位 ...