题目描述

回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。

交换的定义是:交换两个相邻的字符

例如mamad

第一次交换  ad  :  mamda

第二次交换  md  :  madma

第三次交换  ma  :  madam  (回文!完美!)

输入

第一行是一个整数N,表示接下来的字符串的长度(N  < =  8000) 

第二行是一个字符串,长度为N.只包含小写字母 

输出

如果可能,输出最少的交换次数。 

否则输出Impossible 

样例输入

5
mamad

样例输出

3
 1 MAX = 100000000
2
3 def rfind(s, l, r, v):
4 for i in range(r, l-1, -1):
5 if s[i] == v:
6 return i
7 return -1
8
9 def move(s, fr, to):
10 for i in range(fr, to):
11 s[i], s[i+1] = s[i+1], s[i]
12
13 def f(s):
14 n = len(s)
15 res = 0
16 r = n - 1
17 for i in range(n//2):
18 lst = rfind(s, i+1, r, s[i])
19 if lst <= i:
20 if n % 2 == 0:
21 return MAX
22 else:
23 res += (r - i) // 2
24 else:
25 res += r - lst
26 move(s, lst, r)
27 r -= 1
28 pass
29
30 return res
31
32
33
34 n = int(input())
35 s = list(input())
36 r = f(s)
37 if r < MAX:
38 print(r)
39 else:
40 print('Impossible')

蓝桥杯训练赛二-1467 问题 F: 蓝桥杯基础练习VIP-完美的代价的更多相关文章

  1. HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 解题报告:输入一个序列,然后有q次操作,操作有两种,第一种是把区间 (l,r) 变成x,第二种是 ...

  2. 连号区间数【第四届蓝桥杯省赛C++B组,第四届蓝桥杯省赛JAVAB组】

    连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题: 在 \(1∼N\) 的某个排列中有多少个连号区间呢? 这里所说的连号区间的定义是: 如果区间 \([L,R]\) 里的所有元素(即此排列的第 ...

  3. 买不到的数目【第四届蓝桥杯省赛C++A组,第四届蓝桥杯省赛JAVAC组】

    买不到的数目 小明开了一家糖果店. 他别出心裁:把水果糖包成4颗一包和7颗一包的两种. 糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合. 当然有些糖果数目是无法组合出来的,比如要买 10 ...

  4. ★k倍区间【第八届蓝桥杯省赛C++B组,第八届蓝桥杯省赛JAVAB组】

    k倍区间 给定一个长度为 \(N\) 的数列,\(A1,A2,-AN\),如果其中一段连续的子序列 \(Ai,Ai+1,-Aj\) 之和是 \(K\) 的倍数,我们就称这个区间 \([i,j]\)是 ...

  5. 蓝桥杯 基础练习 BASIC-19 完美的代价

    基础练习 完美的代价   时间限制:1.0s   内存限制:512.0MB 问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定 ...

  6. Python解答蓝桥杯省赛真题之从入门到真题(二刷题目一直更新)

    蓝桥刷题 原文链接: https://github.com/libo-sober/LanQiaoCup Python解答蓝桥杯省赛真题之从入门到真题 不同字串 """ 一 ...

  7. 2021蓝桥杯省赛B组(C/C++)E.路径【最短路DP】

    2021蓝桥杯省赛B组题目(C/C++)E.路径 最短路径, 因为变化情况比较多, 所以开始想的是深搜, 但是太慢了, 跑不出来, 后来就想着优化一下, 有的地方到另一个地方可能会考虑很多遍, 于是考 ...

  8. 52-2018 蓝桥杯省赛 B 组模拟赛(一)java

    最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...

  9. 第九届蓝桥杯国赛+第二天的第11届acm省赛的总结

    第九届蓝桥杯国赛+第二天的第11届acm省赛的总结 25号坐的去北京的火车,10个小时的火车,然后挤了快两个小时的地铁,最终达到了中国矿业大学旁边的订的房间.12个小时很难受,晕车症状有点严重,吃了快 ...

  10. 计蒜客蓝桥杯模拟赛 后缀字符串:STL_map+贪心

    问题描述 一天蒜头君得到 n 个字符串 si​,每个字符串的长度都不超过 10. 蒜头君在想,在这 n 个字符串中,以 si​ 为后缀的字符串有多少个呢? 输入格式 第一行输入一个整数 n. 接下来  ...

随机推荐

  1. 前端js下载excel

    // 1.文件流下载文件: export function axiosPostExport(url, data, fileName, suffix = '.xlsx') {     url = get ...

  2. 下拉刷新 get请求 post请求 onLoad

       "enablePullDownRefresh": true 下拉刷新之后背景颜色  "backgroundColor": "#efefef&qu ...

  3. ComWin’ round 11部分题解

    https://vjudge.net/contest/325913#overview A.Threehouses 题意:一直二维平面上的$n$个点中,前$e$个点落在小岛周围,并且有$p$条边已经连接 ...

  4. 新的学习历程-python1 Hello World

    1 print('hello world!') 2 if 2 > 0: 3 print('ok') 4 print('yes') 5 6 x = 3; y = 4 7 print(x + y) ...

  5. LP1-5:接口测试方法

  6. Java面向对象之封装详解

    封装详解 封装 该露的露,该藏的藏 1.我们程序设计要追求"高内聚.低耦合".高内聚:类的内部数据操作细节自己完成,不允许外部干涉:低耦合:仅暴露少量的方法给外部使用. 封装(数据 ...

  7. RabbitMQ的安装(linux版)

    原文地址:https://blog.csdn.net/jiguquan3839/article/details/91346261 注意:在web管理页面登录提示"User can only ...

  8. mathjs 数字处理

    // mathjs 四舍五入取整 val:值export function roundingInt(val) { if (val) { return math.round(val, 0) }}// m ...

  9. 学习lua-06,异常提示,错误处理

    addNum = function(a, b) assert(type(a) == 'string','a必须是一个字符串') assert(type(b) == 'string','b必须是一个字符 ...

  10. 在Github上搭建个人主页

    最近试着在github上搭建个人主页,没用github给的模板,用的是自己在网上找到那种类似个人主页的模板,到时候直接上传到仓库里就行了 首先先创建仓库,点击右上角的加号,选择New reposito ...