博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
校内测试618
阅读量:4967 次
发布时间:2019-06-12

本文共 3136 字,大约阅读时间需要 10 分钟。

今天是618

题目:(只做前三题)

T1多项式输出

既然题目中系数按从高到低开始输出,那我们从n到1开始存

具体见代码

#include
//评测机拒绝万能头 #include
#include
#include
using namespace std;int a[105],n;int main(){ //freopen("poly.in","r",stdin);考试别忘写 //freopen("poly.out","w",stdout); scanf("%d",&n); for(int i=n;i>=0;i--) scanf("%d",&a[i]); for(int i=n;i>=0;i--)//i即为当前x的指数 { if(i!=n&&a[i]>0)printf("+");//注意输出的第一项没有加号 if(a[i]==-1&&i!=0)printf("-"); if(a[i]!=0&&a[i]!=1&&a[i]!=-1)printf("%d",a[i]);//如果abs(a[i])==1 ,则不输出1(-1) if(i>1&&a[i]!=0)printf("x^%d",i);//i为1时只输出x if(i==1&&a[i]!=0)printf("x"); if((a[i]==1||a[i]==-1)&&i==0)printf("%d",a[i]); } return 0;}

 

T2:分数线划定

特别注意画黄线的部分!!!(忘记输出,结果100分没了QAQ)

简单来说,读入完之后先排序,算出k=m*1.5后注意会有分数相同的人,如果有分数相同的人,就一直m+1。最后输出小坑见代码。

#include
//评测机不喜欢万能头 #include
#include
#include
using namespace std;int n,m;struct rr{ int bh,f;}r[5005];bool cmp(rr a,rr b){ if(a.f!=b.f)return a.f>b.f; return a.bh

T3:细(zhi)胞(bi)分(fen)裂(li)

 

 数据那么大,显然是一道数学题

仔细思索,把题目翻译一下,对于每个si,求m1^m2|si^k的k的最小值。

我们看到数据范围,显然硬求会爆炸,那我们不妨分解一下质因数

对m1和每个输入的si分解质因数后,逐一比较m1与s的每个质因子的次数。

当然,如果有一个m1有的质因子,si没有,那就不用往下继续算了。

若si^k能被m1^m2整除,则对于s的每个质因子qi来说,它的次数ai一定大于m1的qi的次数bi,而且细胞每次分裂,对每个ai来说,都相当于加上一个最初的ai(刚分解完质因数的ai)。这时,问题转换为对每个ai求c*ai>=bi,c的最大值。

再从所有的c中,找出最小的那个,就是答案。若最后的答案没有被更新过,就输出-1。

特殊情况:m1=1 这时无论si怎样都可以在0秒内均分

代码

代码中有一些unbelievable的地方

#include
#include
#include
#include
#include
using namespace std;//1.m1,所有的s质因数分解(m1的所有质因数的次数*m2)//2.比较每个s与m1分出的质因数的次数(没包含全,直接continue),用m1的次数/s的次数向上取整,找出每个最大,将每个最大取最小//3.特判试管==1 int m2,n,ans=2147483647;struct pri{ int all,ys[30005],cs[30005],zhi;//ys[i]是第i个质因数,cs[i]是第i个质因数的次数,zhi就是m1,s的值,all是一共有几个不同的质因数}m1,s;void fj(pri &kk)//分解质因数{ memset(kk.ys,0,sizeof(kk.ys)); memset(kk.cs,0,sizeof(kk.cs)); for(int i=2;i*i<=kk.zhi;i++) { if(kk.zhi%i==0) { kk.all++; kk.ys[kk.all]=i; kk.cs[kk.all]=1; kk.zhi/=i; while(kk.zhi%i==0) { kk.cs[kk.all]++; kk.zhi/=i; } } } if(kk.zhi>1) {kk.ys[++kk.all]=kk.zhi; kk.cs[kk.all]++; }}int main(){ scanf("%d",&n); scanf("%d%d",&m1.zhi,&m2); if(m1.zhi==1){printf("0\n");return 0;}//小心有坑 fj(m1); for(int i=1;i<=m1.all;i++) {m1.cs[i]*=m2; } for(int i=1;i<=n;i++) { scanf("%d",&s.zhi); s.all=0; fj(s); if(s.all
=m1.all)//其实这句可以去掉的说 { for(int j=1;j<=m1.all;j++) { while(ss<=s.all&&s.ys[ss]
s.all||s.ys[ss]>m1.ys[j])break;//如果有一个质因数s没有,就不用继续算下去了 int h=m1.cs[j]/s.cs[ss]; if((m1.cs[j]%s.cs[ss]))h++;//注意这里用ceil会出现一些unbelievable的事情,比如说你会wa if(h>aans)aans=h;//取最大值 if(j==m1.all)flag=1; else flag=0; } } if(flag) ans=min(ans,aans);//所有最大值中取min } if(ans==2147483647)ans=-1;//未被更新,则证明没有细胞能满足条件 printf("%d",ans);}

终于搞完了qwq

T4:道路游戏

 

此题木有做,先咕咕咕着

转载于:https://www.cnblogs.com/lcez56jsy/p/11047393.html

你可能感兴趣的文章
Py 可能是最全面的 python 字符串拼接总结(带注释版)
查看>>
如何从亿量级中判断一个数是否存在?
查看>>
客户数据(类的调用)
查看>>
cookie session 和登录验证
查看>>
(转载)博弈汇总【巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈】
查看>>
【数据结构作业】-【带头结点的单链表就地逆置】
查看>>
【Pet HDU - 4707 】【利用并查集找深度】
查看>>
《Java程序设计实验》 软件工程18-1,3 OO实验2
查看>>
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>
【7-9 有重复的数据I (20 分)】【此题卡输入,需要自己写个输入挂】
查看>>
JRebel安装部署,激活
查看>>
OPENSSL使用方法
查看>>
下载GO的开源开发工具LITEIDE
查看>>
接口操作XML
查看>>
idhttp访问DATASNAP有密码验证的中间件
查看>>
libmidas.so.2
查看>>
开发WINDOWS服务程序
查看>>
httpencode编码
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>