[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 ...
随机推荐
- 简明网络I/O模型---同步异步阻塞非阻塞之惑
转自:http://www.jianshu.com/p/55eb83d60ab1 网络I/O模型 人多了,就会有问题.web刚出现的时候,光顾的人很少.近年来网络应用规模逐渐扩大,应用的架构也需要随之 ...
- ASIC 前端功能验证等级与对应年薪划分[个人意见] (2011-07-04 15:33:35
下面的讨论转载自eetop,我选取了一些有意义的讨论,加了我的评注. 楼主zhhzhuawei认为 ===================================== 对于ASIC的前端功能验 ...
- 学习tcl的资源
在这里介绍一些学习tcl的资源,有问题的时候可以尝试从这些资源中获取帮助. 网站: http://www.tcl.tk 官方站点 http://www.scriptics ...
- 关于.NET前后台提示框的那点事
前言 关于提示框,或多或少都用到过,提示框常见方式两种:js原生alert() 和 div模拟弹层:下面以一个常见的需求业务场景来展现提示框的那点事: 正文内容 客户:需求方: 小白:实现方(全权负责 ...
- 20160418javaweb之 Filter过滤器
Servlet规范中 Servlet Listener Filter 1.开发Filter 想要开发一个过滤器需要如下两个步骤: (1)写一个类实现特定的接口Filter 生命周期:当服务器启动时,w ...
- MVC中使用jquery的浏览器缓存问题
jquery在浏览器ajax调用的时候,对缓存提供了很好的支持,POST方式不能被缓存,使用POST的原因,明确了数据不能被缓存,或者避免JSON攻击(JSON返回数据的时候可以被入侵) jquery ...
- MVC3中使用AuthorizeAttribute特性来完成登陆权限的验证
以前判断用户是否登录,判断用户Session是否为空,一般会在这个页面写使用: if (HttpContext.Session.IsNewSession) { //todo Login } 每个需要验 ...
- kafka环境搭建2-broker集群+zookeeper集群(转)
原文地址:http://www.jianshu.com/p/dc4770fc34b6 zookeeper集群搭建 kafka是通过zookeeper来管理集群.kafka软件包内虽然包括了一个简版的z ...
- iOS9 http不能访问网络——在Xcode中将https改成http方式
=====================2016-01-29更新=========================== 最近做demo时,发现将https改成http方式略有小变 1. 没有改成ht ...
- "ERR_GFX_D3D_INIT", GTA5-报错解决办法
GTA5 PC 版,online模式报错“ERR_GFX_D3D_INIT”. 网上搜到一篇文章,可以解决此问题: http://fixcrasheserrorguide.com/fix-grand- ...