2018美团CodeM 题解

我现场打了3题,看看稳进复赛,就不打了。

T1

这题很简单,先扫一趟刷出最大值,标记最大值出现的时候,然后在扫一遍输出答案,这样效率高。

代码如下:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,k,MAXT,Now,hsh[505][505],ans[505][505],ID;
struct xcw{int x,y,z;double t;bool operator <(const xcw b)const{return t<b.t;}
}a[100005];
int main(){scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=k;i++){int x,y,z,h,m;double s;scanf("%d%d%d%d:%d:%lf",&x,&y,&z,&h,&m,&s);a[i]=(xcw){x,y,z,s+(double)h*3600+(double)m*60};}sort(a+1,a+1+k);for(int i=1;i<=k;i++){if(a[i].z==0){if(hsh[a[i].x][a[i].y]==0) Now++;hsh[a[i].x][a[i].y]++;}else{if(hsh[a[i].x][a[i].y]==1) Now--;hsh[a[i].x][a[i].y]--;}if(Now>=MAXT) MAXT=Now,ID=i;}memset(hsh,0,sizeof(hsh));for(int i=1;i<=ID;i++)if(a[i].z==0) hsh[a[i].x][a[i].y]++;else hsh[a[i].x][a[i].y]--;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) printf(j==m?"%d\n":"%d",hsh[i][j]>0);return 0;
}

T2

这题我没打,但是我们机房XYZ dalao打掉了此题(卡在95%一个小时一直过不了,最后发现-1没判),他的想法就是DP,我没有仔细问。

T3

这题其实不难,首先我们知道l=1时最优,这个好证,那么r怎么办,其实也不难,推一下就知道了,最高位与n的最高位相同,然后在不大于n的情况下1越多越好。这个推出来了,那么就简单了。

代码如下:

#include<cstdio>
#include<cstring>
using namespace std;
int n,Ans,Len;
char ch[20005];
int main(){#ifndef ONLINE_JUDGEfreopen("T3.in","r",stdin);freopen("T3.out","w",stdout);#endifgets(ch+1);Len=strlen(ch+1);for(int i=2;i<=Len;i++){if(ch[i]=='1'){bool t=1;for(int j=i+1;j<=Len;j++) if(ch[j]=='0'){t=0;break;}if(!t){ch[i]='0';for(int j=i+1;j<=Len;j++) ch[j]='1';}break;}}for(int i=1;i<=Len;i++) Ans+=(ch[i]=='1');for(int i=3;i<=Len;i++) Ans+=i-1;printf("%d\n",Ans);return 0;
}

T4

平面几何题,我们会发现这个答案是一个单峰函数,那么果断三分,但是我不会QAQ。我就讲讲我的另一个暴力的想法。

R是已知的,我们只需要枚举D,就能确定这个圆上的点,如果每次D+=1e-6的话,肯定超时,我们知道这是单峰函数,那么我们就枚举ΔxΔx表示D每次的增量,我们想让答案越精确,那么ΔxΔx就得越小。
答案Ans的值Just like this:

每次去求当长度等于DD的答案和ΔDΔD的答案,如果当前出现这种情况,那么答案就在D∼D+ΔxD∼D+Δx之间,那么就将ΔxΔx减小,继续找。我选择每次除以1000,然后精度定在1e-9,所以这个算法的复杂度就是O(4*1000)。
我的表达不太好,所以还不懂的只能看代码了。

代码如下:

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int f[4][2]={{1,1},{-1,1},{1,-1},{-1,-1}};
double R,L,Lst,rx1,rx2,ry1,ry2,x,_x,y,_y,Ans=1e99;
double Check(double D){double xx,yy,_xx,_yy;xx=D,yy=sqrt(R*R-D*D);_xx=-D,_yy=-yy;return sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy))+sqrt((_x-_xx)*(_x-_xx)+(_y-_yy)*(_y-_yy));
}
int main(){#ifndef ONLINE_JUDGEfreopen("T4.in","r",stdin);freopen("T4.out","w",stdout);#endifscanf("%lf%lf%lf%lf%lf",&R,&rx1,&ry1,&rx2,&ry2);for(int i=0;i<4;i++){//我感觉这个函数有两个峰,因为时间关系,没有去证,直接旋转这个圆来求解。 x=rx1*f[i][0];y=ry1*f[i][1];_x=rx2*f[i][0];_y=ry2*f[i][1];Lst=Check(-R);L=R;for(double D=-L+1;D<=L;D+=1){double Now=Check(D);if(Lst<=Now){L=D-1;break;}Lst=Now;}Lst=Check(L);for(double D=L+(1e-3);D<=L+1;D+=1e-3){double Now=Check(D);if(Lst<=Now){L=D-(1e-3);break;}Lst=Now;}Lst=Check(L);for(double D=L+(1e-6);D<=L+(1e-3);D+=1e-6){double Now=Check(D);if(Lst<=Now){L=D-(1e-6);break;}Lst=Now;}Lst=Check(L);for(double D=L+(1e-9);D<=L+(1e-6);D+=1e-9){double Now=Check(D);if(Lst<=Now){L=D-(1e-9);break;}Lst=Now;}Ans=min(Ans,Check(L));}Ans=min(Ans,sqrt((rx1-rx2)*(rx1-rx2)+(ry1-ry2)*(ry1-ry2)));printf("%.10lf",Ans);return 0;
}

T5~T6

题目没来的及看。

转载于:https://www.cnblogs.com/XSamsara/p/9248291.html

2018美团CodeM 题解相关推荐

  1. 2018美团codeM资格赛——python代码

    2018美团codeM资格赛--python代码 第一题:下单 题目描述 美团在吃喝玩乐等很多方面都给大家提供了便利.最近又增加了一项新业务:小象生鲜.这是新零售超市,你既可以在线下超市门店选购生鲜食 ...

  2. 2018美团CodeM编程大赛 Round A Problem 2 下棋 【贪心】

    应该一眼看出来是贪心题,然后想最优解是什么.正确的贪心策略是[原棋盘上每个位置的棋子]都往最近的左边[目标棋盘上棋子]移动,如果左边没有棋子了那就闲置最后处理,如果目标棋盘在该位置上也有棋子,那就算距 ...

  3. 2018美团CodeM编程大赛资格赛第一题

    一.问题描述 题目描述 美团在吃喝玩乐等很多方面都给大家提供了便利.最近又增加了一项新业务:小象生鲜.这是新零售超市,你既可以在线下超市门店选购生鲜食品,也可以在手机App上下单,最快30分钟就配送到 ...

  4. 牛客网-2018 美团 CodeM 编程大赛-初赛 A 轮

    ACM模版 这场比赛没有晋级,以为没有好好打--我又在找借口.下午去办入职体检,比赛开始时还在回来路上,回到宿舍的时候就剩下半个小时了,签了一下到就没时间了.赛后发现第三题很有意思,就补了补-- 1- ...

  5. #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队

    #6164. 「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 ...

  6. 95后能拯救结婚行业吗?《2018美团点评结婚行业蓝皮书》发布

    上海2018年8月24日电 /美通社/ -- 8月20日,在美团点评结婚行业峰会上,<2018美团点评结婚行业蓝皮书>正式发布,蓝皮书显示,结婚人口逐年递减,结婚市场体量面临停滞,自主.主 ...

  7. LibreOJ #6177. 「美团 CodeM 初赛 Round B」送外卖2【状压DP】

    「美团 CodeM 初赛 Round B」送外卖2 内存限制:32 MiB 时间限制:200 ms 题目描述 一 张 n 个 点 m 条 有 向 边 的 图 上 , 有 q 个 配 送 需 求 , 需 ...

  8. 一周竞赛资讯|CodeM 2018美团点评编程大赛启动

     (本内容转载自公众号"科技与Python") 如今,小程序小游戏已经成为继手游之后,中小游戏企业公认的下一个风口.CodeM是由美团点评主办的编程竞赛,旨在展示和激发软件技术人才 ...

  9. 2018 美团、腾讯、头条、蔚来 社招面试随谈

    2018,工作快两年了,趁着春招的尾巴,面了几个大厂,现记录下这次的面试路程. 美团 去美团面试时,在路上问路正好问到美团的同学,美女人很友好,直接带我上去了,哈哈. 一面 首先让讲解了下自己所做的一 ...

最新文章

  1. 转载 .net面试题大全(有答案)
  2. js高级编程中命名空间的两种用法
  3. 关联容器的插入操作简单举例
  4. Maven实战(八)——常用Maven插件介绍(下)
  5. SAP Spartacus的configModule
  6. django 1.8 官方文档翻译: 2-2-3 查找 API 参考
  7. 华为入局 VR 眼镜能让 VR 早普及几年?|CSDN博文精选
  8. 我的最新分词进展和接口设计~
  9. nginx 的启动、停止与重启
  10. android 反编译 签名,Android反编译及重签名命令
  11. pytorch 中 .detach() .detach_() 和 .data的区别
  12. block unicast机制
  13. 分布式系统-共识协议
  14. 如何通过电感+MOS管实现BUCK降压和Boost升压
  15. 第三组 通信一班 030 网工知识点总结
  16. Unable to instantiate appComponentFactory
  17. 基于Spring Boot技术栈博客系统企业级前后端实战之课程导论(零)
  18. axios(5)——请求拦截器和响应拦截器
  19. chrome谷歌浏览器:您使用的是不受支持的命令行标记:--extensions-on-chrome-urls
  20. 怎么学java软件工程师_如何学习java软件工程师面试

热门文章

  1. 【Android】第三方QQ账号登录的实现
  2. 【博学谷学习记录】超强总结,用心分享|AjaxHTTP(二)
  3. RPG游戏代理和传统游戏代理的区别
  4. python等比例压缩图片_python图片等比例压缩
  5. linux系统:rm-rf执行以后,怎么办?我来教你恢复文件
  6. 二维数组应用——扫雷进阶版
  7. 面试分享:手机收费问题面试
  8. 【WEB】HTML标签自带属性title样式修改
  9. 谁偷窥了你的隐私?穿透无痕模式,浏览器指纹正在泄露你的秘密。
  10. MyEclipse设置黑色主题皮肤(详细)