请看下面的代码来解决同一组问题,我不认为提到问题无论如何会帮助目的,这是Josephus问题的又一次迭代:
解决方案1:
import sys
from math import log
cases= int(sys.stdin.readline())
current= 0
while current < cases:
current += 1
n = int(sys.stdin.readline())
print 2*(n - 2**(int(log(n,2))))+1
Run Code Online (Sandbox Code Playgroud)
该解决方案在累计1.0912秒内解决了给定的10个测试用例,并消耗了4360KiB的内存.
解决方案2:
def josephus_2( n ):
from math import log
return 2*(n - 2**(int(log(n,2))))+1
import sys
cases= int(sys.stdin.readline())
current= 0
while current < cases:
current += 1
n = int(sys.stdin.readline())
print josephus_2( n )
Run Code Online (Sandbox Code Playgroud)
该解决方案在总共1.0497秒和640KiB内存中解决了相同的10个测试用例.
作为一个Python n00b,我想知道,虽然根据在线评判,我获得两个相同的积分,但是什么使解决方案2比1更快,更高的内存效率?我知道时间差可以听起来很少,但同时我在最快的解决方案上排名第一,甚至比c/c ++/perl提交更快
我很难弄明白这一点.花了大约4个小时爬网没有SO帖子来救我.
想象一个场景:
我已经编写了一个chrome扩展,它捕获了网页上的一些特定操作(主要是按钮点击).该操作触发一个函数,该函数捕获一些用户信息和按钮信息(页面本身都存在)并显示它
现在我希望插件应该能够将其更新为远程服务器上的数据库设置.
由于我精通PHP(因此MySQL是不错的选择),我正在寻找一种解决方案,以确保只从扩展本身进行更新.
为此,我认为最好的选择是运行一个GET/POST请求,例如http://remoteserver.tld/update-db.php?id = XXXX&action = YYYYY&foo = bar ....等等.但是如果用户打开/传递post vars到插件外的这个url?
数据仍将更新,完整性将丢失!
下一个最好的想法是包含带有请求的密钥,但是扩展程序再次用JS编写,几乎任何人都可以嗅出密钥.
引导我找到更新远程服务器上数据库的最佳方法,并确保操作已通过身份验证.
干杯!
我知道这可以用某种方式处理,但截至目前,这给了我一个真正的困难时期.我正在编写一个脚本,并希望在DOM操作完成时触发一些特定的函数.我无法修改/添加/删除任何其他脚本(因为它可能使用某些框架注入页面).该页面使用ajax请求(未在jQuery中实现)来加载/修改内容.现在我希望在每个DOM修改完成后触发一个事件.我目前的方法是在每个DOMSubtreeModified事件中触发该函数.像这样的东西
$(document).bind('DOMSubtreeModified', doSomeStuff);
Run Code Online (Sandbox Code Playgroud)
但是这种方法的缺点是,假设ajax在调用中加载了10个元素,然后为每个元素触发doSomeStuff.这可以限制为仅在加载第10个元素后触发吗?重置$(document).ready()事件之类的东西?每次DOM准备好时(加载ajax内容后)都会触发$(document).ready()
我在CodeChef编码了此问题,并将其作为Python3解决方案提交:
import sys
n,k = map(int,sys.stdin.readline().split(" "))
nos = map(int,sys.stdin.readlines())
ans = 0
for i in nos:
if i>0 and i%k == 0:
ans += 1
print(ans)
Run Code Online (Sandbox Code Playgroud)
但是,如果我将代码编写为:
import sys
n,k = map(int,sys.stdin.readline().split(" "))
nos = map(int,sys.stdin.readlines())
ans = 0
for i in nos:
if i>0 and i%k == 0:
ans += 1
print ans
Run Code Online (Sandbox Code Playgroud)
并将其提交为Python2解决方案,然后该解决方案将被接受。
我根本不明白这是怎么回事?
==== ###更新### ====
Sebastian的解决方案适用于Python3,但比我的python2.7解决方案慢了10 秒。我仍然没有得到答案,为什么最新版本的语言与以前的版本相比性能会下降?
performance ×2
python ×2
python-2.7 ×2
ajax ×1
dom ×1
html ×1
javascript ×1
josephus ×1
jquery ×1
mysql ×1
php ×1
python-3.x ×1
time ×1