1. 程式人生 > >第一飯堂 JDFZ模擬賽

第一飯堂 JDFZ模擬賽

int strcmp efi cst str struct can fin cmp

呃呃,貪心就可以了,似乎沒有什麽太多的東西了

 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 }

第一飯堂 JDFZ模擬賽