CodeM2018 初赛A轮 第1,2题
CodeM2018 初赛A轮
今晚参加了CodeM2018初赛A,结果只做对了两题……
第1题:求一段字符串对应手机按键移动最少次数。
送分题非常简单,我的解法是一个数组保存A-Z的按键,一个二维数组保存按键之间的距离。读入字符串只需要记住当前的和它的前一个字母,查表加和。排行榜上的大佬们2-5分钟就写完提交,但我实在没那么快。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main(){int i,j,k,n,T,f,sum;int latterMap[26]={1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,6,7,7,7,8,8,8,8};int distMap[9][9]={{0,1,2,1,2,3,2,3,4},{1,0,1,2,1,2,3,2,3},{2,1,0,3,2,1,4,3,2},{1,2,3,0,1,2,1,2,3},{2,1,2,1,0,1,2,1,2},{3,2,1,2,1,0,3,2,1},{2,3,4,1,2,3,0,1,2},{3,2,3,2,1,2,1,0,1},{4,3,2,3,2,1,2,1,0}};char c,c0,xx[3];scanf("%d",&T);gets(xx);for(k=0;k<T;k++){f=0;sum=0;while(scanf("%c",&c)==1 && c!='\n'){printf("c=%c\n",c);if(f==0){sum+=distMap[0][latterMap[c-'A']];f=1;}else sum+=distMap[latterMap[c0-'A']][latterMap[c-'A']];c0=c;}printf("%d\n",sum);}return 0;
}
第2题: 一个1*n的棋盘上,每个格子放着一些棋子,每个棋子可以向左移,或者向左移动到最左边以后再向右移,给出棋子总数相同的状态A和B,求状态转换需要移动的次数。
这个题本来设想的是从左到右扫描,把第一个状态的棋子挨个转换为第二个状态,移动次数相加。但是提交不对,就去玩了半个时,时间浪的差不多了回来再看,然后发现了这样不对:
应该先从右向左遍历第一个状态的所有棋子,把其中能够只通过左移就能达到第二状态的棋子先减去,然后再从左向右次数相加,再注意数据大小就能通过。
可能这样设想的比较麻烦,大佬们应该有更简便的做法。另外在自己电脑VS根本开不了这么大数组,都是小数组编好,在提交时候再把数组改大。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int min(int a,int b){return a<b?a:b;
}
int main(){int i,j,k,n,f;long long ans=0;int a[100010],b[100010],num,done,x;scanf("%d",&n); if(n==1){printf("0\n");return 0;}memset(a,0,sizeof(a));b[0]=0;for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=1;i<=n;i++)scanf("%d",&b[i]);i=n;j=n;while(i>0 && j>0){while(a[i]==0 && i>0)i--;while(b[j]==0 && j>0)j--;while(i<j && j>0)j--;if(i>=j){if(a[i]>=b[j]){ans=ans+b[j]*(long long)(i-j);a[i]=a[i]-b[j];b[j]=0;j--;}if(a[i]<=b[j]){ans=ans+a[i]*(long long)(i-j);b[j]=b[j]-a[i];a[i]=0;i--;}}}for(i=1;i<=n;i++)a[i]=a[i-1]+a[i];j=1;done=0;for(i=1;i<=n;i++){num=b[i];b[i]=b[i-1]+b[i];if(num!=0){while(b[i]>=a[j] && j<=n){if(i<=j){x=min(b[i]-done,(a[j]-done));ans=ans+x*(long long)(j-i);done=done+x;}else if(i>j){x=min(b[i]-done,(a[j]-done));ans=ans+x*(long long)(j+i-2);done=done+x;}j++;}if(j<=n && b[i]>a[j-1] && b[i]<a[j]){if(i<=j){x=min(b[i]-done,(a[j]-done));ans=ans+x*(long long)(j-i);done=done+x;}else if(i>j){x=min(b[i]-done,(a[j]-done));ans=ans+x*(long long)(j+i-2);done=done+x;}}}}printf("%lld\n",ans);return 0;
}
后面题目没来得及看了,最终排名前600,只有前250名才能进复赛,又看了一下去年初赛B轮比A轮难一些,估计复赛无望了(望天)
CodeM2018 初赛A轮 第1,2题相关推荐
- CodeM2018美团 初赛A轮 题目二 下棋
CodeM2018美团 初赛A轮 题目二 下棋 [编程|1000分] 下棋 时间限制:C/C++ 1秒,其他语言 2秒 空间限制:C/C++ 262144K,其他语言 524288K 64bit IO ...
- 2021年CSP-J入门级初赛(第一轮)真题讲解
2017年NOIP普及组初赛真题讲解 2017年NOIP普及组初赛真题讲解_哔哩哔哩_bilibili 2018年NOIP普及组初赛真题讲解 2018年NOIP普及组初赛真题讲解_哔哩哔哩_bilib ...
- CodeM美团2018初赛A轮 题目一
CodeM美团2018初赛A轮 题目一 描述 小美想要在电视上看电影,我们知道在电视上搜索电影可以通过搜索电影名字首字母缩写得到,通过首字母搜索电影的界面由一个九宫格组成,如下图: 光标初始在这个九宫 ...
- NOIP历年第二轮入门组真题集合
NOIP历年第二轮入门组真题集合 年份 题目 题解链接 2000 T1-计算器的改良 T2- 税收与补贴问题 T3-乘积最大 T4-单词接龙 题解链接 2001 T1-数的记数 T2-最大公约数和最小 ...
- 【CodeM初赛B轮】A 贪心
[CodeM初赛B轮]A 题目大意:给你一棵树,起初所有点都是白色的,你每次都能选择一个白点i,将这个点i到根路径上的所有到i的距离<k[i]的点都染成黑色(根和i也算,已经被染成黑色的点还是黑 ...
- 2022年 CSP-J1 CSP-S1 初赛 如何进行复习 如何做题
第一题 单选题: 这个包含了2018年及以前年份的的单选或不定项选择(提高组 初赛) 以及问题求解题等考点 这一部分建议直接做历年的真题就可以了,至少要做最近的5年真题 做题的顺序:由最近往前做,也就 ...
- [蓝桥杯2016初赛]剪邮票-dfs+next_permutation(好题)
题目描述 如下图, 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连) 比如,下面两张图中,粉红色所示部分就是合格的剪取. 请你计算,一共有多少种不 ...
- 【初赛】「阅读程序」题答v1.0
「阅读程序」题答 核心要义:是设法弄清程序的功能,每个题目的写作目的. 一.方法 1.直接模拟:一般适用于T1.T2中的递归题,计算题等没有算法的题. 2.看出算法直接填:最佳方法.需要较多模板,但耗 ...
- 【初赛】「程序填空」题答v1.0
「程序填空」题答 核心要义:是算法基本功和对他人思想的理解. 一.题型 1.变量方面:定义变量的数据类型(声明):设定变量的初值(初始值):对变量的赋值(赋值):根据变量的辖域确定其是全局变量还是某个 ...
最新文章
- Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
- cpuz北桥频率和内存频率_内存频率怎样计算?一分钟教会你
- 关于SQL语言,这些你不得不了解!
- MacOS安装app提示已损坏修复指令
- Android中如何获取应用版本号
- Visual Studio DSL 入门 13---结合T4生成代码
- matlab Tricks(二十七)—— 可变输入参数输出参数的适配
- VMware CTO: 2009年虚拟化十大预测
- Numpy入门(详看注释)
- Android控件组合应用四
- Arnold渲染用炫云云渲染让我动画制作更轻松了
- 2020年的19种最佳React Native App模板(包括5种免费)
- mybatisplus删除操作引起的selectBatchIds报错
- android:layout_weight权重与warp_content配合使用
- dhcp服务器不显示mac地址,利用MAC地址解决无法获得DHCP动态地址分配问题
- python股票数据分析_用Python浅析股票数据
- 基于pandas、matplotlib、pyecharts的人工智能相关职位招聘市场数据分析
- python解压 tar.gz文件
- linux 命令查询主机名,linux如何查看主机名?
- META-INF/MANIFEST.MF 文件
热门文章
- bilibili小电视桌面天气站(esp8266+微信小程序控制)超详细,看这一篇就够了
- “老衲印象”开发团队章程
- 弘辽科技:淘宝店铺被降权后,流量不短下滑,如何扭转局面
- luoguP3600 随机数生成器概率与期望Dp
- 【面试篇】前端点滴(css/css3)
- Spring内部方法性能监控器
- R使用Z分数和四分位数区间法去除异常值(outlier)
- 抽象代数 04.07 Jordan-Holder定理
- 苹果笔记本能装linux系统吗,为什么很多人买了苹果笔记本后,会重新装一个windows系统?...
- 赛扬处理器_英特尔发布11代奔腾、赛扬处理器 均支持AVX指令集