[mock]10月4日
第一次mock,CollabEdit开一个页面,开始做题。
题目是,有方法pow(m,n),m和n都大于1,给出N,有顺序的打印出前N个pow(m,n)的结果。前一个是:4,8,9,16,...
然后在CollabEdit上写写画画,想思路,不得,开始紧张。拿起笔在纸上画,有些想法,但又觉得复杂度太高,不敢。
先想的是,2^2之后,m和n都可以往+1的方向变。然后取其小的,但这样的话递归太多,而且有很多重复计算。
经提示有重复计算后,第一反应DP,被否。后来提示得知是4,8,9之类的已经算过的就可以去掉了。(一开始我以为只要质数,马上遇上6^2==36的反例)
所以用一个boolean数组记录是否可以去掉。此时灵光一现,用int[]数组,比如A[i]来表示i这个数下一个要取的幂是A[i]。
然后从0到L+1遍历(L为sqrt(N)),取pow(m,n)的最小值,并更新。这里有两个问题,一是不能从0开始,因为最小是2,而是上限不止sqrt(N),N倒是保险一点。
让优化,一是pow(m,n)不用一直结算,记录上一次的结果下次直接乘以m就可。二是数组长度,其实不用一开始分配N,因为只有到m^2被取了以后,才有必要遍历到m后面去,所以可以动态增长的。三是,很多数字到后来都valid为false了(比如,4,8,16),可以从动态数组中去掉。
再让我用数据结构优化,我想到堆,但又不觉得可以。结束后被告知,维持一个最小堆,把算过的结果都放进去,然后从堆顶取并把新的加入更新即可。
被指出,代码风格最好写成{后换行,+前后空格,以及++i。
一个经验是现场先努力有个代码,再优化比完全没有要好得多。
下为现场写的核心代码:
int k = 0;
while (k < n)
{
int min = Integer.MAX_VALUE;
int pos = -1;
for (int i = 2; i <= L+1; i++)
{
if (valid[i])
{
int value = pow(i, arr[i]);
if (arr[i] ==2 && value > min) break;
if (value < min)
{
int pos = i;
min = value;
}
}
}
valid[min] = false;
System.out.println(min);
arr[pos] =arr[pos]+1;
k++;
}
/以上
[mock]10月4日的更多相关文章
- [mock]10月11日
第二次mock.出的题是,假设有一个地区不能使用7,都用之后的数字代替,比如8代表7,18代表16(中间有7和17).那么给出一个这个地区的数X,求普通地区的数Y.首先是找规律,发现其实就是找给出的数 ...
- 中国式商业智能报表ActiveReports免费公开课,10月20日开讲
ActiveReports公开课全方位报表解决方案,满足商业报表五大需求 [开课时间]10月20日[主讲老师]葡萄城报表产品经理[开课形式]网络在线公开课[活动费用]前50名免费 适合人群:报表开发人 ...
- JavaScript图表FusionCharts免费在线公开课,由印度原厂技术工程师主讲,10月13日发车
FusionCharts公开课达人还你做 轻松晋升图表大师 [开课时间]10月13日 14:30[主讲老师]印度原厂技术工程师[开课形式]网络在线公开课[活动费用]前50名免费 现在就可以报名哦 报 ...
- 系列文章:老项目的#iPhone6与iPhone6Plus适配#(持续更新中,更新日期2014年10月12日 星期日 )
本文永久地址为http://www.cnblogs.com/ChenYilong/p/4020399.html ,转载请注明出处. ********************************** ...
- [分享] 从定制Win7母盘到封装详细教程 By BILL ( 10月23日补充说明 )
[分享] 从定制Win7母盘到封装详细教程 By BILL ( 10月23日补充说明 ) billcheung 发表于 2011-10-23 00:07:49 https://www.itsk.com ...
- 10月26日 奥威Power-BI基于微软示例库(MSOLAP)快速制作管理驾驶舱 腾讯课堂开课啦
本次课是基于olap数据源的案例实操课,以微软olap示例库Adventure Works为数据基础. AdventureWorks示例数据库为一家虚拟公司的数据,公司背景为大型跨国生产 ...
- 2016年10月31日 星期一 --出埃及记 Exodus 19:16
2016年10月31日 星期一 --出埃及记 Exodus 19:16 On the morning of the third day there was thunder and lightning, ...
- 2016年10月30日 星期日 --出埃及记 Exodus 19:15
2016年10月30日 星期日 --出埃及记 Exodus 19:15 Then he said to the people, "Prepare yourselves for the thi ...
- 2016年10月29日 星期六 --出埃及记 Exodus 19:14
2016年10月29日 星期六 --出埃及记 Exodus 19:14 After Moses had gone down the mountain to the people, he consecr ...
随机推荐
- modelsim打开.wlf文件的方法(原创)
运行vsim -c -l vsim.log -wlf vsim.wlf work.tb work.glbl之后,会在不启动modelsim的情况下完成仿真,并且会把仿真波形记录下来(以.wlf文件格式 ...
- SVN修改已提交版本的日志
在工作中一直是使用svn进行项目的版本控制的,有时候由于提交匆忙,或是忘了添加Log,或是Log内容写的有错误.今日遇到此类情况,想要在查看项目的日志时添加log或是修改log内容,遇到如下错误:Re ...
- Excel操作之 导出生成多个sheet页面
首先需要下载一个NPOI.dll 下载地址:http://download.csdn.net/detail/president810/9503038 using System; using Syste ...
- com.android.builder.packaging.DuplicateFile
解决方法: packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' ...
- Golang在视频直播平台的高性能实践
http://toutiao.com/i6256894054273909249/ 熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量 ...
- 手动修复OneDrive的DNS污染屏蔽的方法
随着云计算的发展和微软云战略的持续推进,使用网盘进行文档存储.协同编辑与共享已成为文档操作的新流程.而Office.Office 365和OneDrive等微软产品是Windows用户的首选.但由于国 ...
- Spring MVC 3.0 返回JSON数据的方法
Spring MVC 3.0 返回JSON数据的方法1. 直接 PrintWriter 输出2. 使用 JSP 视图3. 使用Spring内置的支持// Spring MVC 配置<bean c ...
- ios8地图开发的报错
报错如下:Trying to start MapKit location updates without prompting for location authorization. Must call ...
- OC与Swift的区别二(常量、变量、运算符)
4.常量与变量声明 oc的变量声明使用 类型 变量名 = 变量值的方式,其中类型为系统内置数据类型或自定义类型,变量名需由英文字母开头且不能包含特殊字符 swift变量声明使用 var 变量名 = ...
- CentOS7设置IP地址
root权限下cd到/etc/sysconfig/network-scripts, vi ifcig-em1 TYPE=Ethernet BOOTPROTP=static NAME=em1 UUID= ...