大意: 给定$n$元素序列$a$, 可以任选不超过$k$个$a_i$变换为$a_i!$, 求变换后任选若干元素和为S的方案数. 分成两块暴搜, 复杂度$O(3^{\frac{n}{2}})$ #include <iostream> #include <algorithm> #include <cstdio> #include <unordered_map> #define REP(i,a,n) for(int i=a;i<=n;++i) using n…
双端队列BFS解决的就是路径权值可能为0的图最短路问题,权值为0插入队头,否则插入队尾. 对于这个题,可以看作上下移动的路径的权值为0,左右移动权值为1,而且不能超过规定的步数. 直接广搜求覆盖的点的数目即可. (场上我一般BFS被hack了) 代码: #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<cmath> #include…
Codeforces Round #297 (Div. 2)E. Anya and Cubes Time Limit: 2 Sec  Memory Limit: 512 MBSubmit: xxx  Solved: 2xx 题目连接 http://codeforces.com/contest/525/problem/E Description Anya loves to fold and stick. Today she decided to do just that. Anya has n c…
正统双端队列搜索 回顾:普通队列进行边权为定值的最短路 每次到达都是最优的(意味着不用取min) why? 因为所有状态按照 入队的先后顺序 具有 层次单调性,每次扩展,都往外走一步,满足从起始到该状态的最优性(不用取min/也不用比大小,如果如此失去了意义) 回到正题:双端队列可以进行边权两个定值(我们在此简化成1/0)的最短路 操作:对于一条边u到v,如果此边权值为0,我们将它push_front(v),否则push_back(k),每次取队首 这样我们保证了单调性(即每次优先选择最优的)…
linxu ssh 双端认证 不成功之authorized_keys liunx双端认证可以让我们更简便的在两台服务器之间传输文件,配置暂且不说,网上有大部分的文章可以搜索到,今天我要说的是在不成功的情况下的配置. 问题说明: 双端认证已经配置好(~/.ssh/authorized_keys文件已经存在,并且公钥已经添加进文件),但是两个用户之间传输东西还没有成功. 问题解决: 查看authorized_keys文件权限,如果文件权限中,除owner权限外还有w权限,这时双端认证就会失败,修改文…
双端链表:双端链表与传统链表非常相似.只是新增了一个属性-即对最后一个链结点的引用 如上图所示:由于有着对最后一个链结点的直接引用.所以双端链表比传统链表在某些方面要方便.比如在尾部插入一个链结点.双端链表可以进行直接操作 但传统链表只能通过next节点循环找到最后链结点操作.所以双端链表适合制造队列. 下面的双端链表类.有几个重要方法. insertFirst(插入首链结点) 这个方法与上篇博文的单链表是基本一样的.唯一区别就是,多了个last引用的操作.正常由于last是指向尾链结点的引用,…
class QueueUnderflow(ValueError): """队列为空""" pass class SQueue: def __init__(self, init_len=5): self._len = init_len # 存储区长度 self._elems = [0] * init_len # 元素存储 self._head = 0 # 表头元素下标 self._num = 0 # 元素个数 def is_empty(self):…
栈是元素的有序集合,添加操作与移除操作都发生在其顶端,先进后出栈操作:创建空栈,增删(顶端),查(顶端元素,元素个数,是否为空)应用:将十进制数转换成任意进制数 class Stack: # 用列表创建一个空栈 def __init__(self): self.items = [] # 将一个元素添加到栈的顶端 def push(self, item): self.item.append(item) # 将栈顶端的元素移除 def pop(self): return self.items.pop…
前言: STl是个好东西,虽然他在不开O2的条件下会跑的很慢,但他着实会让你的代码可读性大大提高,令你的代码看起来既简单又整洁. 双端队列: 顾名思义,双端队列是有两个头的,一个队首指针,一个队尾指针,先进先出或是先进后出都可以实现. 基本操作: (1) deque<int> dq 定义一个int类型的双端队列dq (2) deque<int> dq(15) 队列dq具有15个元素单位 (3) deque<int> dq(15,10) 队列dq内15个元素初始值均为10…
队列(Queue)\双端队列(Deque) 队列(Queue) 双端队列(Deque) 算法应用 队列(Queue) 特点: 和栈不同,队列的最大特点是先进先出(FIFO),就好像按顺序排队一样.对于队列的数据,我们只允许在队尾查看和添加数据,在队头查看和删除数据. 实现: 可以借助双端队列来实现队列.双链表的头指针允许在队头查看和删除数据,而双链表的尾指针允许我们在队尾查看和添加数据. 应用场景: 当我们需要按照一定的顺序来处理数据,而该数据的数据量在不断变化的时候,则需要队列来帮助解题.在算…