ZOJ-3504 P-norm(py大法好)

昨天下午训练选用的是ZOJ月赛watashi大神出的题目(记得第一次接触watashi的时候是学习怎么写oj提交机器人,虽然看不懂,但是最后用py大法完美解决了。)

题目Link : http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3504

这题目,用c++我觉得写起来很费劲,说到底就是计算p范数。

有3行输入,比如

(1,0) (0,1) (-1,0) (0,-1)
(1,0) (0,-1) (-1,0) (0,1)
1

我们计算:

1.第一二行对应两个括号形成的向量的模,比如(a,b)对应(c,d),其模为sqrt( (a-c)^2+(b-d)^2)

2.将每个模求其p次方(对应的是第三行的整数),求和

3.对总和开p次根

现在最麻烦的是处理这些括号,因为不确定个数,用c/c++,大概就是用(%lf,%lf)作为读入标志比较好。

但是,zoj是支持py的,真高兴啊,而py则可以用非常简单第代码完成这个步骤,只需要读取三行,对一二行进行正则,十分简单,最后只需要用20行多点就完成题目。

from re import compile
from math import pow,sqrt
import sys
pt=compile(r'\((.*?),(.*?)\)')
while 1:
    line=sys.stdin.readline()
    if len(line)>1:
        line2=sys.stdin.readline()
        p=float(sys.stdin.readline())
        res1=pt.findall(line)
        res2=pt.findall(line2)
        x=[]
        y=[]
        ans=0.0
        for i in range(len(res1)):
            x.append(float(res1[i][0])-float(res2[i][0]))
            y.append(float(res1[i][1])-float(res2[i][1]))
        for i in range(len(x)):
            ans+=pow(sqrt(x[i]**2+y[i]**2),p)
        print '%.08f'%pow(ans,1.0/p)
    else:
        break

人生苦短,我用py.

时间: 2024-10-23 16:47:40

ZOJ-3504 P-norm(py大法好)的相关文章

【Py大法系列--01】20多行代码生成你的微信聊天机器人

前言 近期Stack Overflow公布了一项调查显示,Python已经成了发展最快的主流编程语言,Python搭乘着数据科学和机器学习以及人工智能的浪潮,席卷了整个技术圈.越来越多的人想了解.想学Python,从程序猿到数据分析师,从已退休的耄耋老者到乳臭未干的小学生,是的,你没听错,有图有真相:到底Python的魅力在于哪?到底它有着什么神奇的力量?尼克决定以一个较为轻松的专题,带大家认识Python. 今天干什么 有天刚好发现了一个好玩的Python库(活跃的开源社区,各种第三方库也是P

省赛总结——尴尬现实主义写实大作

想了想,还是总结一下吧. 积贫积弱.大三上遇到了很难过的事情,一直都没有缓过来,现在也一样. 期末的时候狠狠心,忍着难过和学霸们一起复习,最后考得还算勉勉强强.发现考得好点并不难.后悔... 寒假的时候决定接下来的一年不管怎么样,忍一忍赌一把. 报名 学期开始的时候听说今年省赛可以有10个队于是想去水一水,毕竟大学还没有参加过想体验一下. 所以这是我第一次也是最后一次参加省赛. 组队的时候和男神站长(网站开发+App开发大神)和py大佬(网络信息安全大神)三个基本没有学过算法的人组成了奇葩业余队

【笔记篇】(理论向)快速傅里叶变换(FFT)学习笔记w

现在真是一碰电脑就很颓废啊... 于是早晨把电脑锁上然后在旁边啃了一节课多的算导, 把FFT的基本原理整明白了.. 但是我并不觉得自己能讲明白... Fast Fourier Transformation, 快速傅里叶变换, 是DFT(Discrete Fourier Transform, 离散傅里叶变换)的快速实现版本. 据说在信号处理领域广泛的应用, 而且在OI中也有广泛的应用(比如SDOI2017 R2至少考了两道), 所以有必要学习一波.. 划重点: 其实学习FFT最好的教材是<算法导论

numpy_basic3

矩陣 矩阵是numpy.matrix类类型的对象,该类继承自numpy.ndarray,任何针对多维数组的操作,对矩阵同样有效,但是作为子类矩阵又结合其自身的特点,做了必要的扩充,比如:乘法计算.求逆等. 矩阵对象的创建可以通过以下三种方式: numpy.matrix(任何可被解释为矩阵的二维容器,copy=是否复制数据(缺省值为True,即复制数据)) 如果copy的值为True(缺省),所得到的矩阵对象与参数中的源容器共享同一份数据,否则,各自拥有独立的数据拷贝. numpy.mat(任何可

poj 1543 &amp; HDU 1334 &amp; ZOJ 1331 Perfect Cubes(数学 暴力大法好)

题目链接:http://poj.org/problem?id=1543 Description For hundreds of years Fermat's Last Theorem, which stated simply that for n > 2 there exist no integers a, b, c > 1 such that a^n = b^n + c^n, has remained elusively unproven. (A recent proof is believ

ZOJ 3674 Search in the Wiki 【C++STL大法尽情地模拟】

欢迎关注__Xiong的博客: http://blog.csdn.net/acmore_xiong?viewmode=list Search in the Wiki Time Limit: 2 Seconds      Memory Limit: 65536 KB 链接:Just Click Me! As we known, Searching in Wiki is an useful way for everyone who wants to get information. Wiki, a

word2vec_basic.py

ssh://[email protected]:22/usr/bin/python3 -u /home/win_pymine_clean/feature_wifi/word2vec_basic.py Found and verified text8.zip Data size 17005207 Most common words (+UNK) [['UNK', 418391], ('the', 1061396), ('of', 593677), ('and', 416629), ('one',

ZOJ 1516 Uncle Tom&#39;s Inherited Land

题目大意: 除去那些作为荷塘的土地块,将剩余的土地希望每次将两块相邻的地一起卖出,最多能卖出多少种这样的由相邻土地 合成的长方形土地块 很明显的二分图问题,但是要考虑如何建模 一个长方形土地总是由相邻的两块地组成,那么我们就将相邻的两块地一块放在X集合,一块放在Y集合 所有放在X集合中的土地互不影响(也就是任意两个在X中的土地不形成长方形) 那么我们可以看作土地上 0101010 1010101 0101010 1010101 比如这样标注的,那么0所对应的空地就放入集合X,并不断添加一个X的标

ZOJ 1649 &amp;&amp; HDU 1242 Rescue (BFS + 优先队列)

Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M <= 200) matrix. There are WALLs, ROADs, and GUARDs in the prison. Angel's friends want to save Angel. Their task is: approach Angel. We assume