呃呃,贪心就可以了,似乎没有什么太多的东西了
1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 #include <cmath> 5 #include <iostream> 6 using namespace std; 7 #define N 10005 8 int n,K; 9 int a[N]; 10 char s[N]; 11 struct node1 12 { 13 int num; 14 int pla; 15 int bef; 16 int cha; 17 }; 18 struct node 19 { 20 node1 a1[N]; 21 int sum; 22 char a2[N]; 23 }c[11]; 24 int cmp(node1 a,node1 b) 25 { 26 if(a.num==b.num) 27 { 28 if(a.bef==b.bef) 29 { 30 if(a.bef<=b.cha) 31 { 32 return a.pla>b.pla; 33 } 34 return a.pla<b.pla; 35 } 36 return a.bef>b.bef; 37 } 38 return a.num<b.num; 39 } 40 int cmp1(node a,node b) 41 { 42 if(b.sum==a.sum) 43 { 44 int i=strcmp(a.a2,b.a2); 45 if(i>0) 46 { 47 return 1; 48 }else 49 { 50 return 0; 51 } 52 } 53 return a.sum<b.sum; 54 } 55 int main() 56 { 57 scanf("%d%d",&n,&K); 58 scanf("%s",s); 59 for(int i=1;i<=n;i++) 60 { 61 a[i]=s[i-1]-‘0‘; 62 } 63 for(int k=0;k<=9;k++) 64 { 65 for(int i=1;i<=n;i++) 66 { 67 c[k].a1[i].num=abs(a[i]-k); 68 c[k].a1[i].pla=i; 69 c[k].a2[i]=s[i-1]; 70 c[k].a1[i].bef=a[i]; 71 c[k].a1[i].cha=k; 72 } 73 sort(c[k].a1+1,c[k].a1+n+1,cmp); 74 c[k].sum=0; 75 for(int i=1;i<=K;i++) 76 { 77 c[k].sum+=c[k].a1[i].num; 78 c[k].a2[c[k].a1[i].pla]=k+‘0‘; 79 } 80 } 81 sort(c,c+10,cmp1); 82 printf("%d\n",c[0].sum); 83 for(int i=1;i<=n;i++) 84 { 85 printf("%c",c[0].a2[i]); 86 } 87 puts(""); 88 return 0; 89 }
时间: 2024-10-11 10:56:07