《ACM程序设计-赛题样例》由会员分享,可在线阅读,更多相关《ACM程序设计-赛题样例(63页珍藏版)》请在金锄头文库上搜索。
1、 座位调整 题目描述:百度办公区里到处摆放着各种各样的零食。百度人力资源部的调研发现,员工如果可以在自己喜欢的美食旁边工作,工作效率会大大提高。因此,百度决定进行一次员工座位的大调整。调整的方法如下:1 首先将办公区按照各种零食的摆放分成 N 个不同的区域。(例如:可乐区,饼干区,牛奶区等等)。2 每个员工对不同的零食区域有不同的喜好程度(喜好程度度的范围为 1 100 的整数, 喜好程度越大表示该员工越希望被调整到相应的零食区域)。3 由于每个零食区域可以容纳的员工数量有限,人力资源部希望找到一个最优的调整方案令到总的喜好程度最大。数据输入:第一行包含两个整数 N , M ,( 1=N ,
2、M=300 )。分别表示 N 个区域和 M 个员工。第二行是 N 个整数构成的数列 a ,其中 ai 表示第 i 个区域可以容纳的员工数, (1=ai=M , a1+a2+.+aN=M) 。紧接着是一个 M*N 的矩阵 P , P ( i , j )表示第 i 个员工对第 j 个区域的喜好度。答案输出:对于每个测试数据,输出可以达到的最大的喜好程度。输入样例3 31 1 1100 50 25100 50 25100 50 25输出样例175#includevoidmain()intn,m,l=0,i,j,s,t,sum=0;inta100,p100100,b100,c100;for(i=0;i
3、100;i+)ai=0,ci=0,bi=0;for(j=0;j100;j+)pij=0;scanf(%d%d,&n,&m);for(i=0;in;i+)scanf(%d,&ai);for(i=0;in;i+)for(j=0;j=m)gotofinish;if(l0)for(s=0;sl;s+)t=cs;for(j=0;jm;j+)ptj=0;for(s=0;sm;s+)bs=0;for(s=0;sn;s+)bs=psi;for(s=0;sn-1;s+)for(j=0;jn-1-s;j+)if(bjbj+1)t=bj;bj=bj+1;bj+1=t;/printf(%dt,b0);/test+;f
4、or(s=0;s=ai)i+;gotofrist;for(t=0;tn;t+)if(bs=pti)cl=t;l+;break;elsecontinue;s+;gotosec;finish:/printf(n);printf(最大的喜好程度为:%dn,sum);/printf(%d,test);#include#includevoidmain()ints,t,u,v,w,x,y,z,sum=0,a20,b2020,c20,d20,sumx80,*p=sumx,max;scanf(%d%d,&x,&y);for(z=0;zx;z+)scanf(%d,&az);for(z=0;zy;z+)cz=z;
5、dz=z;for(w=0;wy;w+)for(z=0;zx;z+)scanf(%d,&bwz);sum=0;for(z=0;zy;z+)sum+=b0z;for(w=z;wy-1;w+)dw=dw+1;for(w=0;wy-1;w+)s=dw;sum+=b1s;for(v=w;vy-2;v+)dv=dv+1;for(u=0;uy-2;u+)s=du;sum+=b1s;for(t=u;ty-3;t+)du=du+1;for(t=0;ty-3;t+)s=dt;sum+=b2s;for(z=0;zmax)max=sumxt;t+;printf(%dn,max);#include#includeint
6、main(intargc,char*argv)intN,M,*a,*p,*temp,i,j,k,max=0;printf(Pleaseinputareaandstaffnum:);scanf(%d%d,&N,&M);a=(int*)malloc(sizeof(int)*N);printf(nPleaseinputstaffnumofeacharea:);for(i=0;iN;i+)scanf(%d,&ai);p=(int*)malloc(sizeof(int)*N);printf(nPleaseinputlike:);for(i=0;iM;i+)pi=(int*)malloc(sizeof(i
7、nt)*M);for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&pij);temp=(int*)malloc(sizeof(int)*M);for(i=0;iN;i+)if(iN-1)for(j=0;jM;j+)k=i+1;tempj=0;while(kN)tempj+=pji-pjk;k+;inttemp1,temp2;while(ai)temp1=-101;temp2=0;for(j=0;jtemp1)temp1=tempj;temp2=j;max+=ptemp2i;printf(%d%d%dn,ptemp2i,temp2,i);for(intm=0;mN;m+)ptemp2m=-101;printf(n);for(intq=0;qM;q+)