首页 > 代码库 > 洛谷P1124 文件压缩 模拟
洛谷P1124 文件压缩 模拟
洛谷P1124 文件压缩
模拟
1 #include <bits/stdc++.h> 2 #define For(i,j,k) for(int i=j;i<=k;i++) 3 using namespace std ; 4 5 const int N = 10011 ; 6 int n,mid,p ; 7 char s[N] ; 8 int le[N],ri[N],sum[N],ans[N] ; 9 10 inline int read() 11 { 12 int x = 0 , f = 1 ; 13 char ch = getchar() ; 14 while(ch<‘0‘||ch>‘9‘) { if(ch==‘-‘) f = -1 ; ch = getchar(); } 15 while(ch>=‘0‘&&ch<=‘9‘) { x = x * 10+ch-48 ; ch = getchar(); } 16 return x * f ; 17 } 18 19 int main() 20 { 21 n = read() ; mid = n ; 22 scanf("%s",s+1) ; 23 For(i,1,n) 24 le[ i ] = ri[ i ] = s[ i ] - 96 ; // 这题 p 会等于 0 25 p = read() ; 26 if(n==1) { 27 printf("%c",ri[ n ]+96) ; 28 return 0 ; 29 } 30 sort(le+1,le+n+1) ; 31 printf("%c",ri[ p ]+96) ; 32 For(i,1,n) 33 sum[ le[ i ] ] = i ; 34 35 For(i,1,n) 36 if(le[i]==ri[p]) { 37 ans[ n ] = ri[ i ] ; 38 p = ri[ i ] ; 39 break ; 40 } 41 42 while(1) { 43 if(n<=2) break ; 44 n-- ; 45 ans[ n ] = ri[ sum[ p ] ] ; 46 sum[p]-- ; 47 p = ans[ n ] ; 48 } 49 For(i,2,mid) printf("%c",ans[ i ]+96) ; 50 return 0 ; 51 }
洛谷P1124 文件压缩 模拟
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。