2022.8.14 闲话

《マトリョシカ》

考え过ぎのメッセージ
思虑过剩的 Message
谁に届くかも知らないで
也不知道会不会传达给谁
きっと私はいつでもそう
但是我啊一定是一直都是
継ぎ接ぎ狂ったマトリョシカ
东拼西凑的发狂的 Матрёшка

头痛が歌うパッケージ
头痛歌唱著的 Package
いつまで経っても针は四时
不论过多久时针都指在四点
谁も教えてくれないで
请你不要告诉其他人喔
世界は逆さに回り出す
世界正以反向开始旋转

ああ、割れそうだ
啊啊,像要碎了般
记忆も全部投げ出して
记忆也全都扔在那一边
ああ、知りたいな
啊啊,好想了解呢
深くまで
更深更深

あのね、もっといっぱい舞って顶戴
我说啊,来跳更多更多的舞给我看吧
カリンカ?マリンカ?弦を弾いて
Калинка? Marinca? 弹奏那琴弦
こんな感情どうしようか?
这样的感情该如何是好呢?
ちょっと教えてくれないか?
能不能稍稍向我透露一点呢?
感度良好 524
感应灵敏 524
フロイト?ケロイド?键を叩いて
Freud? Keloid? 叩响那琴弦
全部全部笑っちゃおうぜ
一切一切都如此惹人发笑
さっさと踊れよ马鹿溜まり
别磨蹭快跳舞啦你这群笨蛋

てんで幼稚な手を叩こう
拍起那幼稚到极点的手吧
わざと狂った调子でほら
看吧就这故作狂乱的节拍
きっと私はどうでもいい
而我定是无关紧要的存在
世界の温度が溶けていく
世界的温度在逐渐溶化中

あなたと私でランデブー?
就以你和我来一场约会吧?
ランデブー?ほらランデブー?
Rendezvous?就是 Rendezvous 啦?
あらま飞んでったアバンチュール?
来一场完全未经预想的恋爱冒险吧?
足取り歪んで 1,2,1,2
踩著扭曲脚步 1,2,1,2

ああ、吐きそうだ
啊啊,像要吐了般
私の全部受け止めて
就将我的一切接纳吧
ああ、その両手で
啊啊,以你那双手
受け止めて
纳入怀中吧

あのね、ちょっと闻いてよ大事なこと
我说啊,听我讲一下嘛很重要的事情喔
カリンカ?マリンカ?頬を抓って
Калинка? Marinca? 掐住那脸颊
だってだって我慢できないの
因为你看啦实在是忍不住了嘛
もっと素敌な事をしよう?
来和我做些更精彩的事情吧?
痛い痛いなんて泣かないで
别在那痛啊痛啊的哇哇哭啦
パレイド?マレイド?もっと叩いて
Parade? Mareido? 再多拍一会儿
待ってなんて言って待って待って
说些像是等待的话啊等啊等等啊等
たった一人になる前に
直到变得只剩下一个人

あなたと私でランデブー?
就以你和我来一场约会吧?
ランデブー?ほらランデブー?
Rendezvous?就是 Rendezvous 啦?
あらま飞んでったアバンチュール?
来一场完全未经预想的恋爱冒险吧?
足取り歪んで1,2,1,2
踩著扭曲脚步1,2,1,2
酔い溃せ 歌い出せ
醉生梦死 纵声欢歌
今 日もほら
今 天也仍是
継ぎ接ぎ狂ったマトリョシカ
东拼西凑的发狂的 Матрёшка

もっといっぱい舞って顶戴
来跳更多更多的舞给我看吧
カリンカ?マリンカ?弦を弾いて
Калинка? Marinca? 弹奏那琴弦
こんな感情どうしようか?
这样的感情该如何是好呢?
ちょっと教えてくれないか?
能不能稍稍向我透露一点呢?
感度良好 524
感应灵敏 524
フロイト?ケロイド?键を叩いて
Freud? Keloid? 叩响那琴弦
全部全部笑っちゃおうぜ
一切一切都如此惹人发笑
さっさと踊っていなくなれ
你也差不多该给我停下来啦
チュ チュ...
Chu Chu...


Python in OI

Python 基本语法就不多说了 .

下面写一些平凡的东西 .

类型

查看类型

type(x) .

字典,列表,元组

字典:{...}
列表:[...]
元组:(...)

列表可以 listrange 创建,一般使用数组用的都是列表 .

解包

解包有些时候可以直接解,也可以用 * 运算符 .

IO

Input

input() 可以读一行,默认字符串(Python 弱类型也没啥可说的).

字符串的 split(str, num) 方法将字符串按 str 切片,切 num 次 .

不填 num 默认切完,不填 str 默认为 whitespace(空格,换行,制表符等) .

input(str) 可以先输出一个 str 然后再输入,这个交互式操作 OI 中几乎用不到 .


Python 2 中 raw_input() 可以读取一个字符串 .


UPD. 读入很多整数可以 a, b, c = map(int, input().split()) 的 .

Output

print 里面其实是可以加多个参数的,相当于把 print 分开 .

sep 可以调分隔符,不写默认换行 .

想用 C++ 的 printf 类似功能可以看一下 format 方法 .

高精度运算与表达式求值

高精度运算

Python 2/3 均自带高精度整形运算 .

有人觉得 Python 中没有快速幂,其实 pow(a, n, p) 就实现了一个快速幂求 \(a^n\bmod p\) 的过程 .

注意不要 from math import *,要不然会重 .

P1226 AC 代码:

a, b, c = input().split()
a = int(a); b = int(b); c = int(c)
print(a, '^', b, ' mod ', c, '=', pow(a, b, c), sep = '')

引入 decimal 模块可以获得一个高精浮点数 Decimal,可以通过 getcontext().prec 调精度 .

注意运算要强转 .

P3922 AC 代码:

from decimal import Decimal, getcontext

getcontext().prec = 1000
n, k0 = input().split()
n = Decimal(n)
k0 = Decimal(k0)
if n == Decimal('0'):
    k0 = 10 ** k0
print((k0 * Decimal('1.25').log10() + Decimal('0.999999999')) // Decimal('1'))

表达式求值

Python 2 自带表达式求值(也可以使用 eval),下面放 P1981 AC 代码:

print input() % 10000

淳朴,而平凡 .


Python 3 中有模块 re,可以操作正则表达式 .

匹配操作字符串的 index() 方法可以做到 .

内含 matchsearchfindall .

  • match,从头匹配,匹配不对返回空 .
  • search,匹配最前面的一个,匹配不对返回空 .
  • findall,返回所有匹配的组成的列表 .

返回的东西通过 span() 提取匹配到的字符下标,通过 group() 提取匹配到的内容 .

访问

访问终端

首先引入模块 os,然后 os.system() 里面输 Bash 命令即可 .

访问 Python

exec 可以运行 Python 命令 .

flatten list

一层 flatten

import itertools

a = [[1, 2], [3, 4], [[5,6],[7,8]]]
print(list(itertools.chain(*a)))

# [1, 2, 3, 4, [5, 6], [7, 8]]

全部 flatten

a = [[1, 2], [3, 4], [[5, 6], [7, 8]]]

a = eval('[%s]' % repr(a).replace('[', '').replace(']', ''))
print(a)
# [1, 2, 3, 4, 5, 6, 7, 8]

# -----------------------------------------------------------------------------------------------

a = [[1, 'a', ['cat'], 2], [[[3], 'a', 'm', [1, 2, 3], [1, [1, 2, 3]]]], 'dog']
flatten = lambda L: eval(str(L).replace('[', '*[')[1:])
flatten(a)

zip

Python zip()用法,看这一篇就够了 .

矩阵转置

a = [[1, 2, 3], [4, 5, 6]]
print(list(map(list, zip(*a))))

反转字典

a = dict(a=1, b=2, c=3)
print(dict(zip(a.values(), a.keys())))

n 分列表

print(list(zip(*(iter([1, 2, 3, 4, 5, 6]),) * 3)))
# [(1, 2, 3), (4, 5, 6)]

其他东西

LRUCache

引入模块 functools 就获得一个 LRUCache .

然后放前面修饰一下就可以帮你把递归记忆化了 .

我也不知道 LRUCache 是不是冷门算法,大概就是对要记忆化的东的 Hash 开一个双向链表,然后查询一个东西就把它提到链表头,如果加东西空间不够了就丢掉链表尾 .

此处这个链表尾其实就是 LRU 元素(Least Recently Used,最近最少使用),我们根据实际经验看这个元素的应用次数是比较少的于是丢掉会更优 .

当然如果这个空间很足的话就等价于记忆化搜索 .

看一下 P2609 大概就知道用法了:

import functools

@functools.lru_cache(114514) # 114514 是 Cache 大小
def f(n):
    if n < 2:
        return n
    ans = f(n // 2)
    if n % 2:
        ans = ans + f(n // 2 + 1)
    return ans 

T = int(input()) 

for i in range(0, T):
    n = int(input())
    print(f(n))

deepcopy

引入模块 copy 就可以实现 deepcopy .

排序

sorted(iterable[, cmp[, key[, reverse]]]) # 返回一个排序后的列表
s.sort([cmp[, key[, reverse]]])           # 直接修改原列表,返回为 None

else

if - elsefor - elsewhile - else 都是可行语法 .

swa

Python 基于解包的交换:a, b = b, a .

all & any

all(iterable):如果 iterable 的所有元素不为 0, ''False 或者 iterable 为空,all(iterable) 返回True,否则返回 False .

any(iterable): 如果所有元素中有一个值不是 0''False,那么返回 True ,否则 False .

posted @ 2022-08-14 18:33  Jijidawang  阅读(124)  评论(8编辑  收藏  举报
😅​