codeforces1430E String Reversal
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相关推荐
- CodeForces - 1430E String Reversal(线段树+模拟)
题目链接:点击查看 题目大意:给出一个字符串 sss ,令其反转的串为 ttt ,每次操作可以将 ttt 中的两个相邻位置的字符交换,问最少需要进行多少次操作才能使得 ttt 变成 sss 题目分析: ...
- E. String Reversal
题意: 给定一个字符串,你每次可以交换相邻位置的字母,问最少操作多少次才能达到他的反转串 思路: 先把反转串获得,"abcbd"的反转串"dbcba",然后我们 ...
- E. String Reversal (树状数组)
E. String Reversal (树状数组) 思路:树状数组 考虑每个位置的贡献,从最后一个字符开始计算. 显然对于相同的字符选取靠前的位置的贡献更小. 所以用队列维护相同字母的位置. 从后往前 ...
- E. String Reversal(思维+逆序对)详解
https://codeforces.com/contest/1430/problem/E 题意:交换相邻的字母使得字符串翻转的最小次数. 最近碰到了几道逆序对的题,有个比较明显的特征是交换相邻的数. ...
- Educational Codeforces Round 96 E. String Reversa 线段树模拟序列交换
传送门 文章目录 题意: 思路: 题意: 思路: 与上一篇题解大同小异,无非就是不需要枚举排列了. // Problem: E. String Reversal // Contest: Codefor ...
- ie php脚本引擎,使用php重新实现PHP脚本引擎内置函数
使用php重新实现PHP脚本引擎内置函数 // 实在无聊,突发奇想,想把PHP里面部分已经提供封装好的函数重新使用PHP实现一遍, // 于是便有了下面的代码主要实现了PHP中部分字符串处理函数,同时 ...
- 语言高精度算法阶乘_JavaScript中的算法(附10道面试常见算法题解决方法和思路)...
https://juejin.im/post/6844903811505455118 Introduction 面试过程通常从最初的电话面试开始,然后是现场面试,检查编程技能和文化契合度.几乎毫无例外 ...
- 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+ ...
- Educational Codeforces Round 96 (Rated for Div. 2)
今天先补了上一场的Codeforces Global Round 11三道题,做的心神恍惚,然后17点报名没敢提交,先写了4个题剩下的改天补一补 我是真的服信号,卷积卷si我了 A - Number ...
最新文章
- Java8 lambda表达式10个示例
- oracle RAC信息,Oracle 查看 RAC GI 版本信息
- SpringBoot从入门到实战只需一篇文章
- labuladong 的算法小抄_来自GitHub 68.8k star的硬核算法教程
- 计算机网络安全应具备的功能,2016计算机专业知识:网络系统安全体系具备功能攻击方法...
- WAP2.0(XHTML MP)基础介绍
- python电话通知_教你如何用Python向手机发送通知
- Android水平仪实训报告,测量实训报告范文3篇
- 【细胞分割】基于matlab GUI形态学算法红细胞计数【含Matlab源码 638期】
- VARCHART XGantt 甘特图中的数据表介绍
- 21天通关python 磁力_python 磁力链接搜索器
- background-position切图
- 如何制作macOS Big Sur 系统启动U盘
- 案例: 模拟京东快递单号查询
- 计算生辰八字五行属性的算法
- c语言switch求利息,switch语句 利息计算器
- 中国提取市场趋势报告、技术动态创新及市场预测
- Missing instance name in instantiation of '*'.
- Python提取岛上书店书中所有书名后做成词云
- oracle风扇设置,HP DL380 G6风扇满速原因
热门文章
- 常用z反变换公式表_8套建筑工程测量公式计算表,输入参数自动计算,高效工作!...
- AppletViewer使用方法介绍
- 数据工程师该如何增加核心竞争力?
- 左右可以滑动半年的超级日历,支持日历部分收起和自动重定向为北京时间
- 易语言miniblink交互教程——第一课 了解 miniblink
- php taglib.php,thinkphp5 taglib_pre_load预加载自定义标签库
- 安卓手机如何查看WIFI密码
- html5实现在线动态画板,Javascript HTML5 Canvas实现的一个画板
- 区块链(Block Chain)结构解析
- 过TP保护与解除游戏驱动保护