https://codeforces.com/contest/1430/problem/E

可以很容易求出反串中每个位置需要是原串中哪个位置的字母

然后求个逆序对就是需要交换的次数

我思想出问题了,想了一年

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;const int maxl=3e5+10;int n,m,cnt,tot,cas;ll ans;
int now[26],b[maxl];
bool vis[maxl];
char s[maxl],t[maxl];
vector<int> a[26];inline void prework()
{scanf("%d",&n);scanf("%s",s+1);for(int i=1;i<=n;i++)t[i]=s[n-i+1];for(int i=1;i<=n;i++)a[s[i]-'a'].push_back(i);
}inline void add(int i,int x)
{while(i<=n){b[i]+=x;i+=i&-i;}
}inline int sum(int i)
{int ret=0;while(i){ret+=b[i];i-=i&-i;}return ret;
}inline void mainwork()
{ans=0;int c,idx,id;for(int i=1;i<=n;i++){c=t[i]-'a';int x=a[c][now[c]];now[c]++;ans+=i-1-sum(x);add(x,1);}
}inline void print()
{printf("%lld\n",ans);
}int main()
{int t=1;//scanf("%d",&t);for(cas=1;cas<=t;cas++){prework();mainwork();print();}return 0;
}

codeforces1430E String Reversal相关推荐

  1. CodeForces - 1430E String Reversal(线段树+模拟)

    题目链接:点击查看 题目大意:给出一个字符串 sss ,令其反转的串为 ttt ,每次操作可以将 ttt 中的两个相邻位置的字符交换,问最少需要进行多少次操作才能使得 ttt 变成 sss 题目分析: ...

  2. E. String Reversal

    题意: 给定一个字符串,你每次可以交换相邻位置的字母,问最少操作多少次才能达到他的反转串 思路: 先把反转串获得,"abcbd"的反转串"dbcba",然后我们 ...

  3. E. String Reversal (树状数组)

    E. String Reversal (树状数组) 思路:树状数组 考虑每个位置的贡献,从最后一个字符开始计算. 显然对于相同的字符选取靠前的位置的贡献更小. 所以用队列维护相同字母的位置. 从后往前 ...

  4. E. String Reversal(思维+逆序对)详解

    https://codeforces.com/contest/1430/problem/E 题意:交换相邻的字母使得字符串翻转的最小次数. 最近碰到了几道逆序对的题,有个比较明显的特征是交换相邻的数. ...

  5. Educational Codeforces Round 96 E. String Reversa 线段树模拟序列交换

    传送门 文章目录 题意: 思路: 题意: 思路: 与上一篇题解大同小异,无非就是不需要枚举排列了. // Problem: E. String Reversal // Contest: Codefor ...

  6. ie php脚本引擎,使用php重新实现PHP脚本引擎内置函数

    使用php重新实现PHP脚本引擎内置函数 // 实在无聊,突发奇想,想把PHP里面部分已经提供封装好的函数重新使用PHP实现一遍, // 于是便有了下面的代码主要实现了PHP中部分字符串处理函数,同时 ...

  7. 语言高精度算法阶乘_JavaScript中的算法(附10道面试常见算法题解决方法和思路)...

    https://juejin.im/post/6844903811505455118 Introduction 面试过程通常从最初的电话面试开始,然后是现场面试,检查编程技能和文化契合度.几乎毫无例外 ...

  8. AtCoder Regular Contest 120 C - Swaps 2 线段树模拟

    传送门 文章目录 题意: 思路: 题意: 给你两个序列a,ba,ba,b,每次可以执行一个操作:将a[i]a[i]a[i]与a[i+1]a[i+1]a[i+1]交换,且让交换后的a[i]+1,a[i+ ...

  9. Educational Codeforces Round 96 (Rated for Div. 2)

    今天先补了上一场的Codeforces Global Round 11三道题,做的心神恍惚,然后17点报名没敢提交,先写了4个题剩下的改天补一补 我是真的服信号,卷积卷si我了 A - Number ...

最新文章

  1. Java8 lambda表达式10个示例
  2. oracle RAC信息,Oracle 查看 RAC GI 版本信息
  3. SpringBoot从入门到实战只需一篇文章
  4. labuladong 的算法小抄_来自GitHub 68.8k star的硬核算法教程
  5. 计算机网络安全应具备的功能,2016计算机专业知识:网络系统安全体系具备功能攻击方法...
  6. WAP2.0(XHTML MP)基础介绍
  7. python电话通知_教你如何用Python向手机发送通知
  8. Android水平仪实训报告,测量实训报告范文3篇
  9. 【细胞分割】基于matlab GUI形态学算法红细胞计数【含Matlab源码 638期】
  10. VARCHART XGantt 甘特图中的数据表介绍
  11. 21天通关python 磁力_python 磁力链接搜索器
  12. background-position切图
  13. 如何制作macOS Big Sur 系统启动U盘
  14. 案例: 模拟京东快递单号查询
  15. 计算生辰八字五行属性的算法
  16. c语言switch求利息,switch语句 利息计算器
  17. 中国提取市场趋势报告、技术动态创新及市场预测
  18. Missing instance name in instantiation of '*'.
  19. Python提取岛上书店书中所有书名后做成词云
  20. oracle风扇设置,HP DL380 G6风扇满速原因

热门文章

  1. 常用z反变换公式表_8套建筑工程测量公式计算表,输入参数自动计算,高效工作!...
  2. AppletViewer使用方法介绍
  3. 数据工程师该如何增加核心竞争力?
  4. 左右可以滑动半年的超级日历,支持日历部分收起和自动重定向为北京时间
  5. 易语言miniblink交互教程——第一课 了解 miniblink
  6. php taglib.php,thinkphp5 taglib_pre_load预加载自定义标签库
  7. 安卓手机如何查看WIFI密码
  8. html5实现在线动态画板,Javascript HTML5 Canvas实现的一个画板
  9. 区块链(Block Chain)结构解析
  10. 过TP保护与解除游戏驱动保护