Sequence

状压dp大总结1 [洛谷]

守給你的承諾、 提交于 2020-08-13 16:49:51
前言 状态压缩是一种 \(dp\) 里的暴力,但是非常优秀,状态的转移,方程的转移和定义都是状压 \(dp\) 的难点,本人在次总结状压dp的几个题型和例题,便于自己以后理解分析状态和定义方式 状态压缩动态规划,就是我们俗称的状压 \(dp\) ,是利用计算机二进制的性质来描述状态的一种 \(dp\) 方式。 很多棋盘问题都运用到了状压,同时,状压也很经常和BFS及 \(dp\) 连用。 状压 \(dp\) 其实就是将状态压缩成2进制来保存 其特征就是看起来有点像搜索,每个格子的状态只有 \(1\) 或 \(0\) ,是另一类非常典型的动态规划 NO.1 Corn Fields G 题目描述 农场主 \(John\) 新买了一块长方形的新牧场,这块牧场被划分成 \(M\) 行 \(N\) 列 \((1 \le M \le 12; 1 \le N \le 12)\) ,每一格都是一块正方形的土地。 \(John\) 打算在牧场上的某几格里种上美味的草,供他的奶牛们享用。 遗憾的是,有些土地相当贫瘠,不能用来种草。并且,奶牛们喜欢独占一块草地的感觉,于是 \(John\) 不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边。 \(John\) 想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择?(当然,把新牧场完全荒废也是一种方案) 输入格式 第一行:两个整数

Python读取取yaml文件

99封情书 提交于 2020-08-13 16:28:45
yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言。yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文件,看了yaml后,发现这个更直观,更方便,有点类似于json格式。在自动化测试用的相当多所以需要小伙伴们要熟练掌握 2.yaml基本语法规则: 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 #表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样 3.yaml支持的数据结构有三种: 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary) 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list) 纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期 安装yaml 1.使用pip安装pyyaml模块 pip install pyyaml 键值对(dict) 1.yaml里面的键值对,也就是python里面的字典(dict)数据类型,比如python里面的字典,用yaml如何去写 # python3.6 { "user": "码上开始", "psw":

港交所OMD-C对接笔记

ⅰ亾dé卋堺 提交于 2020-08-13 14:41:26
工作中需要对接港交所OMD-C的Standard版行情,现在把一些知识点和踩过的坑记录下来,供大家参考。文中部分图片因为缩小看不清,请【右键-在新窗口/标签打开图片】查看清晰版本。 「香港交易所领航星」巿场数据平台—证券市场( HKEX Orion Market Data Platform – Securities Market , OMD-C), Technical Documents 1. 概述 OMD-C数据服务分为实时服务、重传服务、刷新服务三部分。 实时服务:UDP多播。提供挂单、成交、指数、市场状态等实时数据,以及最高价、最低价、最后成交价、成交量、等统计数据。实时服务以UDP为载体,通过 多播 推给接收端。消息被归类到若干通道(Channel),每个通道包含若干消息类型,比如成交消息和挂单消息都是在通道10。每个Channel的报文有唯一Sequence,Sequence总是从1开始。不同Channel之间的Sequence没有关联。为了减少丢包影响,报文都通过两个独立通道多播,比如Channel 10和Channel 510是一对,接收端根据Sequence做好去重工作。 重传服务:TCP请求应答。缓存每个Channel最近50,000个报文,多播丢包时,接收端指定Sequence区间,向重传服务请求丢失的报文。重传是有限制的: 单Channel缓存最近消息数量

can总线之三——常见负响应含义

那年仲夏 提交于 2020-08-13 13:47:23
0X10 General reject/一般拒绝 0x11 Service not supported/服务不被支持 0x12 Sub Function not Supported/子功能不被支持 0x13 Incorrect message length or invalid format/指令错误(报文长度错误) 0x14 Response too long/响应时间过长 0x21 Busy repeat request/请求太频繁 0x22 Conditions not correct/条件不具备 0x24 Request sequence error/请求顺序错误 0x26 Failure prevents execution of requested action/失败阻止执行请求的操作 0x31 Request out of range/请求超出范围 0x33 Security access denied/安全访问被拒绝 0x35 Key Invalid/无效的密钥 0x36 Exceed number of attempts/尝试次数过多 0x37 Required time delay not expired/要求延时时间未到达 0X38-4F Reserved by Extended Data Link Security Document/ 0X70 Upload

跟着李宏毅老师学习 Autoencoder 的各类变体及应用

十年热恋 提交于 2020-08-13 12:10:51
来自 | medium.com 作者 | Evans Tsai 链接 | https://medium.com/ai-academy-taiwan 编辑 | 机器学习与数学 常常见到 Autoencoder 的变体以及应用,打算花几篇的时间好好研究一下,顺便练习 Tensorflow.keras 的 API 使用。 Overview What is Autoencoder Types of Autoencoder Application of Autoencoder Implementation Great examples Conclusion Difficulty: ★ ★ ☆ ☆ ☆ 1 What is Autoencoder? 首先,什么是 Autoencoder 呢? 不啰唆,先看图吧! 〄 source : Julien Despois Autoencoder 最原始的概念很简单,就是丢入一笔 input data 经过类神经网路后也要得到跟 input data 一模一样的 data。首先,整个 Autoencoder 可以拆解成 Encoder 和 Decoder 两个神经网路。Encoder 先吃进 input data,经过神经网路后压缩成一个维度较小的向量 Z,接着,再将 Z 输入 decoder 中,将 Z 还原成原始大小。听起来很容易,但是我们仔细来瞧瞧

MySQL和Oracle的区别

夙愿已清 提交于 2020-08-13 11:02:51
 由于SQL Server不常用,所以这里只针对MySQL数据库和Oracle数据库的区别 (1) 对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮 (2) 分页查询 MySQL是直接在SQL语句中写"select... from ...where...limit x, y",有limit就可以实现分页;而Oracle则是需要用到伪列ROWNUM和嵌套查询 (3) 事务隔离级别 MySQL是read commited的隔离级别,而Oracle是repeatable read的隔离级别,同时二者都支持serializable串行化事务隔离级别,可以实现最高级别的 读一致性。每个session提交后其他session才能看到提交的更改。Oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session 查询时,如果对应的数据块发生变化,Oracle会在undo表空间中为这个session构造它查询时的旧的数据块 MySQL没有类似Oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但 可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据 (4)

成功解决TypeError: sequence item 0: expected str instance, list found

天涯浪子 提交于 2020-08-13 09:22:36
成功解决TypeError: sequence item 0: expected str instance, list found 目录 解决问题 解决思路 解决方法 解决问题 TypeError: sequence item 0: expected str instance, list found 解决思路 Type Error:序列项0:应为str实例,但找到list 解决方法 根据错误提示,可知list中包含数字,所以,不可以直接转化成字符串,要么直接修改列表内非字符串的元素,要么将列表内的元素循环转为字符串格式,如下转换所示: " ".join('%s' %a for a in lists) 来源: oschina 链接: https://my.oschina.net/u/4383725/blog/4489877

CF407E k-d-sequence

陌路散爱 提交于 2020-08-13 09:20:53
思路 要素察觉:必须要是一个公差为 \(d\) 的等差数列。 特判 首先要特判掉 \(d=0\) 的情况,这样的情况下就是要寻找最长的一段数字相同的区间,找到之后输出左右端点即可(可以 \(O(n)\) 扫一遍)。 其他情况 再来看别的情况,对于一个区间 \([l,r]\) ,如果要满足是一个公差为 \(d\) 的等差序列,那么: 这个等差数列里的所有数 \(\bmod d\) 的结果应该一样. 区间内没有重复的数. 现在考虑如何实现上述条件: 首先将序列分成若干个 \(x \bmod d\) 都一样的子区间。 在从左往右扫的过程中,如果遇到了与前面 \(x\bmod d\) 的值不同的数,就将左边 \(x\bmod d\) 值相同的数作为一个独立的区间来处理,这样就可以把序列分成若干个 \(x \bmod d\) 都一样的区间。 对于一个满足 \(x\bmod d=c\) 的数列,把所有的 \(x\) 变成 \(\dfrac{x-c}{d}\) (因为整形的性质,可以直接除)。 这一步称之为归一化,实现了将一个区间的的公差化为 \(1\) , 问题就转化成了加入 \(k\) 个数,使区间排序后公差为 \(1\) 。 对于一个区间 \([L,R]\) ,算出最少加几个数。 需要满足的条件显然就是不能有重复,那么最少加的数的个数就是 \(\max(L,R)-\min(L,R)+1-

从微信「拍一拍」,我想到了那些神奇的一行代码功能

痞子三分冷 提交于 2020-08-13 08:42:32
最近,微信上线了一个彩蛋小功能「拍一拍」,虽然低调发布,但还是冲上了热搜。 这个功能的操作很简单,双击好友头像,好友头像会震动,并显示一条灰色消息,提醒好友被你“拍了拍”。「拍一拍」不仅能和好友用,还可以在群里拍一拍,甚至是自己拍自己,虽然有人认为这个功能无甚卵用,但用起来莫名欢乐,在网友脑洞大开的发挥下,更是瞬间打开了新玩法。比如更改昵称后,用了「拍一拍」的对话画风变得鬼畜起来: 「拍一拍」仅一行代码实现,微信史上最短功能代码长什么样? 更有意思的是,微信之父张小龙在朋友圈爆料,「拍一拍」这个和 QQ 戳一戳相似的功能只用一行代码即可实现,可以说是微信史上最短一行代码功能。 这引起了很多人对着这一行代码的好奇心,不负众望,目前网络上已经有一个有一个流传甚广的 Lambda 语法 C++ 代码: head.onDoubleClick([&](e){ msgSender.send({.msgType= MSG_TYPE_SYSTEM_TEXT, .contentTemplate = fmt("%s拍了拍%s" , app.getCurrentUser(), e.target)}); }); 这行代码主要是在「拍了拍」前后传递你和好友的微信昵称参数,发送给相应接口后输出为一条小灰色条消息。虽然这行代码的真实性不能保证,但是大致原理应该差不了太多,在微信的框架和已有的积累下

树:二叉树的后序遍历序列

本小妞迷上赌 提交于 2020-08-13 06:56:27
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路: 核心:后序遍历的特点:在顺序遍历数组的时候,如果遇到第一个比最后一个元素大的节点,那么在此之前的都是比最后小的,而之后都是比最后大的。 所以: 当找到分界点后,在后边的数组中遍历,如果有比root小的节点,就返回false。 注意:记得递归左右子树。 代码: public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence==null || sequence.length==0) return false; return find(sequence,0,sequence.length-1); } public boolean find(int[] sequence,int start,int root){ if(start>=root) return true; int key=sequence[root]; //找出左右子树分界点:第一个比root大的节点 int i; for(i=start;i<root;i++){ if(sequence[i]>key){ break; } } //在右子树中遍历