达美航空

洛谷P4003 [国家集训队2017]无限之环 网络流 最小费用最大流

匿名 (未验证) 提交于 2019-12-02 23:47:01
有一个 \(n\times m\) 棋盘,棋盘上每个格子上有一个水管。水管共有 \(16\) 种,用一个 \(4\) 位二进制数来表示当前水管向上、右、下、左有个接口。你可以旋转除了 \((0101)_2\) 和 \((1010)_2\) 的其他水管,求最少的旋转次数使得水管的每一个接口所在方向都有一个相邻的水管接口与其对应。 这种插头相关的题一般都是网络流, 虽然据说插头dp可以过此题 。这道题里面要求不存在单独的接口,所有的接口一一对应等价于流量平衡,那么最少的旋转次数就应该想到费用流。 首先把整个棋盘染色,黑点连源点,白格连汇点,这些源汇点的节点流量限制为自己的格子内的接头数。那么如果流量网络满流,那就是此题有解,可以构成流量平衡的情况。 对于每个格子,上下左右拆成四个点,表示这个格子的 \(4\) 个方向,他们的节点容量为 \(1\) ,用来象征对应接口的流量平衡。 对于一开始不能到达的方向,从初始方向连边至目标方向,费用为最少旋转次数,这样无论怎么旋转,接口对应关系依然存在。 #include<bits/stdc++.h> using namespace std; #define re register int #define in inline #define ak * #define inf 1e9 #define loc(i,j) ((i-1)*m+j) int

python unittest之断言及示例

匿名 (未验证) 提交于 2019-12-02 22:51:30
# _*_ coding:utf-8 _*_ import unittest import sys reload(sys) sys.setdefaultencoding(“utf-8”) class demoTest(unittest.TestCase): if __name__ == ‘__main__’: python unintest单元测试框架提供了一整套内置的断言方法。 如果断言失败,则抛出一个AssertionError,并标识该测试为失败状态 如果异常,则当做错误来处理 注意:以上两种方式的区别 如果成功,则标识该测试为成功状态 下面我们看下在unittest框架中定义了哪几类断言方法: 基本的Boolean断言,即:要么True,要么False的验证 简单比较断言,例如比较a,b两个变量的值 复杂断言 基本的断言方法提供了测试结果是True还是False。所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回。 序号 断言方法 断言描述 1 assertEqual(arg1, arg2, msg=None) 验证arg1=arg2,不等则fail 2 assertNotEqual(arg1, arg2, msg=None) 验证arg1 != arg2, 相等则fail 3 assertTrue(expr, msg=None)

【BZOJ2324】[ZJOI2011]营救皮卡丘 给定起点最小权K链覆盖

拜拜、爱过 提交于 2019-12-02 17:13:43
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef int JQK; namespace MCMF { const JQK INF = 0x7f7f7f7f; const int MAXN = 505, MAXM = 130000; int Head[MAXN], cur[MAXN], to[MAXM << 1], nxt[MAXM << 1], f[MAXM << 1], ed = 1; int S, T, MAXP, MAXF, pre[MAXN]; JQK lev[MAXN], cost[MAXM << 1]; bool exist[MAXN]; void addedge(int u, int v, int cap, JQK val) { to[++ed] = v; nxt[ed] = Head[u]; Head[u] = ed; f[ed] = cap; cost[ed] = val; to[++ed] = u; nxt[ed] = Head[v]; Head[v] = ed; f[ed] = 0; cost[ed] = -1 * val; return; } bool spfa() { int u; queue<int>q; for (int i = 0; i <= MAXP

HDU 4862 Jump 任意起点最大权K链覆盖

烈酒焚心 提交于 2019-12-02 17:10:29
你可以从任意起点开始起跳最多K次 每次跳你可以选择往右或者往下跳 从(x1,y1)跳到(x2,y2) 消耗的能量是曼哈顿距离-1 但是如果每次跳的起点和终点格子里的数字是相同的为X的话你会得到X能量 问你跳K次能不能把整个图刚好跳完(每个点被经过一次) 如果可以的话输出能量的最大值 解:和最小链覆盖一样先把每个点拆成入点和出点 左边是出点 右边是入点 然后按照题意建好边 重要的是我们怎么限制最多起跳K次这个条件 解决方法是Add(S,S',K,0) 然后S'朝右边每个点连一条容量为1费用为0的边 为什么这样就是最多K条链呢?考虑最小链覆盖=|V|-匹配数 即匹配完后 右边没有被匹配的点(入点)是要被当作一条链的起点的 所以右边有几个没被匹配的点就要有几条链 所以我们限制右边最多只能有K个节点没被匹配到即可 #include<bits/stdc++.h> #define reg register using namespace std; typedef long long ll; typedef int JQK; const int INF = 0x7f7f7f7f; const int MAXN = 505, MAXM = 13000; int Head[MAXN], cur[MAXN], to[MAXM << 1], nxt[MAXM << 1], f[MAXM << 1],

Python实现二分法和黄金分割法

浪尽此生 提交于 2019-12-02 15:09:41
  运筹学课上,首先介绍了非线性规划算法中的无约束规划算法。二分法和黄金分割法是属于无约束规划算法的一维搜索法中的代表。    二分法: $$x_{1}^{(k+1)}=\frac{1}{2}(x_{R}^{(k)}+x_{L}^{(k)}-\Delta)$$ $$x_{2}^{(k+1)}=\frac{1}{2}(x_{R}^{(k)}+x_{L}^{(k)}+\Delta)$$      下面记录下用Python实现二分法和黄金分割法的代码。    来源: https://www.cnblogs.com/chester-cs/p/11751508.html

git远程上传文件至github

与世无争的帅哥 提交于 2019-12-02 14:56:31
首先在github 上创建一个仓库,也可以创建一个组,几个人一个组创建一个仓库,共同去完成 任务并且可以资源共享。 在创建完仓库之后,然后进入终端,下载git 首先把仓库克隆到git上,命令为 :git clone https://github.com/jjuc/developRos.git 在终端输入git 就可以看到很多指令 jjuc代表我自己创的组,developRos 表示我创的仓库。 成功如下 qqtsj@qqtsj-Nitro-AN515-51:~$ git clone https://github.com/jjuc/developRos.git 正克隆到 'developRos'... remote: Enumerating objects: 223, done. remote: Counting objects: 100% (223/223), done. remote: Compressing objects: 100% (173/173), done. remote: Total 223 (delta 92), reused 160 (delta 41), pack-reused 0 接收对象中: 100% (223/223), 38.46 KiB | 307.00 KiB/s, 完成. 处理 delta 中: 100% (92/92), 完成.

「POI2010」Bridges

♀尐吖头ヾ 提交于 2019-12-02 12:53:14
传送门 Luogu团队题链接 解题思路 首先二分答案,然后在所有边权小于二分值的边和所有点组成的图中判欧拉回路。 由于可能出现混合图,所以要用到网络流。 把所有无向边钦定一个方向,那么原图就是一个有向图。 那么存在欧拉回路的充要条件就所有点的入度等于出度且图联通。 我们考虑把点 \(x\) 的入度与出度之差记作 \(\Delta x\) 。 那么对于所有的定向后的无向边 \((u,v)\) ,连一条从 \(u\rightarrow v\) 的容量为 \(1\) 的边。 表示将该条边反向可以使 \(\Delta u += 2,\Delta v -= 2\) 。 然后考虑对于所有度数差小于 \(0\) 的点 \(x\) ,连一条 \(s \rightarrow x\) 的容量为 \(\frac{|\Delta x|}{2}\) 的边。 表示 \(x\) 需要操作这么多次,使得 \(\Delta x\) 达到 \(0\) 。小于零的情况同理。 最后判断是否满流即可。 细节注意事项 细节有点多,要有耐心 参考代码 #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <cctype> #include <cmath> #include

Data Compression Category

回眸只為那壹抹淺笑 提交于 2019-12-02 10:41:51
Data Compression is an approach to compress the origin dataset and save spaces. According to the Economist reports, the amount of digital dat in the world is growing explosively, which increase from 1.2 zettabytes to 1.8 zettabytes in 2010 and 2011. So how to compress data and manage storage cost-effectively is a challenging and important task. Traditionally, we use compression algorithms to achieve data reduction. The main idea of data compression is "use the fewest number of bits to represent an information as accurately as possible". What we want to do is to represent the origin data

git在push的时候出现insufficient permission for adding an object错误

99封情书 提交于 2019-12-02 10:10:02
错误信息: Counting objects: 9 , done. Delta compression using up to 2 threads. Compressing objects: 100 % ( 5 / 5 ), done. Writing objects: 100 % ( 5 / 5 ), 506 bytes, done. Total 5 (delta 2 ), reused 0 (delta 0 ) error: insufficient permission for adding an object to repository database ./objects fatal: failed to write object error: unpack failed: unpack-objects abnormal exit 原因: git库权限的问题 $ ls -la,查看git库的所有者 解决: 在git库目录下: $sudo chown -R git:git git库(mtk6573.git) 来源: CSDN 作者: yujunf 链接: https://blog.csdn.net/yujunf/article/details/7595231