A-活动选择
#include<stdio.h>
#include<stdlib.h>
struct sk
{
int h;
int k;
int j;
}a[105],t;
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a[i].h=i;
scanf("%d %d",&a[i].k,&a[i].j);
}
for(i=n;i>1;i--)
{
for(j=1;j<i;j++)
{
if(a[j].j>a[j+1].j)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
int k=a[1].j;
printf("%d",a[1].h);
for(i=2;i<=n;i++)
{
if(a[i].k>=k)
{
k=a[i].j;
printf(",%d",a[i].h);
}
}
printf("\n");
}
B-删数问题
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int n,i,l;
char s[105];
scanf("%s %d",s,&n);
while(n--)
{
i=0;
l=strlen(s);
while(i<l&&s[i]<=s[i+1])
{
i++;
}
while(i<l)
{
s[i]=s[i+1];
i++;
}
}
while(s[0]=='0')
{
i=0;
l=strlen(s);
while(i<l)
{
s[i]=s[i+1];
i++;
}
}
l=strlen(s);
if(l==0){printf("0\n");return 0;}
else puts(s);
}
C-活动选择问题
#include<stdio.h>
#include<stdlib.h>
struct sk
{
int k;
int j;
}a[105],t;
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&a[i].k,&a[i].j);
}
for(i=n;i>1;i--)
{
for(j=1;j<i;j++)
{
if(a[j].j>a[j+1].j)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
int k=a[1].j,h=1;
for(i=2;i<=n;i++)
{
if(a[i].k>=k)
{
k=a[i].j;
h++;
}
}
printf("%d\n",h);
}
D-区间覆盖问题
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int *)b-*(int *)a;
}
int main()
{
int n,m;
while(~scanf("%d %d",&n,&m))
{
int a[202],b[202];
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
qsort(a,n,sizeof(a[0]),cmp);
for(int i=0;i<n-1;i++)
{
b[i]=a[i]-a[i+1]-1;
}
qsort(b,n-1,sizeof(b[0]),cmp);
int sum=a[0]-a[n-1]+1,k=0,i=1;
while(i<m&&b[k]>0)
{
i++;
sum-=b[k];
k++;
}
printf("%d\n",sum);
}
}
E-最少拦截系统
#include<stdio.h>
#include<stdlib.h>
int a;
int b[100000]={0};
int main()
{
int n,m;
while(~scanf("%d",&n))
{
m=0;
for(int i=0;i<n;i++)
{
scanf("%d",&a);
int j;
for(j=0;j<=m;j++)
{
if(b[j]>=a){b[j]=a;break;}
}
if(j>m){b[++m]=a;}
}
printf("%d\n",m);
}
}
F-悼念512汶川大地震遇难同胞
#include<stdio.h>
#include<stdlib.h>
struct dm
{
int dj;
int sl;
}s[1005],k;
int main()
{
int m,n,i,j;
double sum=0;
scanf("%d %d",&n,&m);
for(i=0;i<m;i++) {scanf("%d %d",&s[i].dj,&s[i].sl);}
for(i=m-1;i>1;i--)
{for(j=0;j<i;j++){if(s[j].dj>s[j+1].dj){k=s[j];s[j]=s[j+1];s[j+1]=k;}}}
for(i=0;i<m;i++)
{
if(n>=s[i].dj*s[i].sl)
{
sum+=s[i].sl;
n-=s[i].dj*s[i].sl;
}
else if(n==0)
break;
else if(n>0&&n<s[i].dj*s[i].sl)
{
sum+=(n*1.0)/s[i].dj;
n=0;
}
}
printf("%.2lf",sum);
}
G-懒虫小鑫
#include<stdio.h>
#include<stdlib.h>
struct dm
{
int zl;
int jg;
}s[10005],t;
int main()
{
int m,n,i,j,sum1=0,sum2=0;
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) {scanf("%d %d",&s[i].zl,&s[i].jg);sum1+=s[i].jg;}
if(m>=n) printf("%d\n",sum1);
else
{
for(i=n-1;i>0;i--)
{
for(j=0;j<i;j++)
{
if(s[j].zl>s[j+1].zl)
{
t=s[j];s[j]=s[j+1];s[j+1]=t;
}
else if(s[j].zl==s[j+1].zl)
{
if(s[j].jg<s[j+1].jg)
{
t=s[j];s[j]=s[j+1];s[j+1]=t;
}
}
}
}
for(i=0;i<m;i++)
{
sum2+=s[i].jg;
}
printf("%d\n",sum2);
}
}
H-装船问题
#include<stdio.h>
#include<stdlib.h>
struct dm
{
int jg;
int zl;
int bz;
}s[105],t;
int main()
{
int n,i,j,sum=0;
scanf("%d",&n);
for(i=0;i<10;i++)
{
scanf("%d %d",&s[i].jg,&s[i].zl);
s[i].bz=s[i].jg/s[i].zl;
}
for(i=9;i>0;i--)
{
for(j=0;j<i;j++)
{
if(s[j].bz<s[j+1].bz)
{
t=s[j];s[j]=s[j+1];s[j+1]=t;
}
}
}
for(i=0;i<10;i++)
{
if(n==0) break;
else if(n>=s[i].zl)
{
sum+=s[i].jg;
n-=s[i].zl;
}
else if(n>0&&n<s[i].zl)
{
sum+=s[i].bz*n;
n=0;
}
}
printf("%d\n",sum);
return 0;
}
I- 商人小鑫
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a,const void *b)
{
return *(int *)b-*(int *)a;
}
int main()
{
int n,m,i,j,a,b,s[1000005],sum=0;
scanf("%d %d",&n,&m);
for(0;i<n;i++)
{
scanf("%d %d",&a,&b);
s[i]=b-a;
}
qsort(s,n,sizeof(int),cmp);
for(i=0;i<m;i++)
{
sum+=s[i];
}
printf("%d\n",sum);
}
J-商人的诀窍
#include <stdio.h>
#include <stdlib.h>
struct jueqiao
{
int zl;
int jg;
double zjb;
}s[55],t;
int main()
{
int n,m,i,j;
double sum=0,sum1=0,sum2=0;
scanf("%d %d",&n,&m);
for(i=0;i<n;i++)
{
scanf("%d %d",&s[i].zl,&s[i].jg);
s[i].zjb=1.0*s[i].zl/s[i].jg;
sum1+=s[i].zl;
sum2+=s[i].jg;
}
for(i=n-1;i>0;i--)
{
for(j=0;j<i;j++)
{
if(s[j].zjb<s[j+1].zjb)
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
}
if(n>=sum2) printf("%.3lf\n",sum1);
else
{
for(i=0;i<m;i++)
{
if(n>=s[i].jg)
{
sum+=s[i].zl;
n-=s[i].jg;
}
else
{
sum+=s[i].zjb*n;
n=0;
break;
}
}
printf("%.3lf\n",sum);
}
return 0;
}
不懂得可以私信我,随时解答。
程序有错误请私信我,以及时改正。感谢!