- 博客(50)
- 收藏
- 关注
原创 算法课四
算法报告四 Dijkstra算法(最短距离) 16122020 钟顺源一、题目大意给出一张图,并给定起点和终点,问起点到终点的最短距离是多少?有两个特殊要求1)如果从顶点i到顶点j有不止一条最短路径,那么输出路段数最少者;2)如果具有最短路径并且路段数也是...
2018-12-01 20:28:32
453
原创 算法报告六--装载问题
算法报告五 装载问题 16122020 钟顺源一、题目大意将n个体积分别为wi集装箱放置在容量分别为c1,c2的轮船中,问是否能有个合理放置的方案,若有,则输出字典序最大的方案。二、分析题目可以转换为有n个元素,对于某个元素,有取或不取两个操作,取的集装箱...
2018-12-01 20:25:43
487
原创 实验七 棋盘覆盖
算法报告七 棋盘覆盖 16122020 钟顺源一、题目大意设n=2k2^k2k(k≥0)。在一个n×n个方格组成的棋盘中,恰有1个方格与其他方格不同,称该方格为特殊方格。显然,特殊方格在棋盘中可能出现的位置有4k种,因而有n2种不同的棋盘,下图所示是k=2,n=...
2018-12-01 20:25:25
1465
原创 算法报告五--跳马问题
算法报告五 跳马问题 16122020 钟顺源一、题目大意二、分析struct node{ int id; int lid,rid; int val; bool operator<(const node&q)con...
2018-11-04 22:40:18
3596
原创 青岛区域赛备战--模板及复习--简单算法
1、快速幂2、LIS及其变形3、最小生成树快速幂LL Pow(LL a, LL n, LL mod){ LL t = 1; for (; n; n >>= 1, a = (a * a % mod)) if (n & 1) t = (t * a % mod); return t;}LIS...
2018-11-02 16:31:36
312
原创 2017ccpc秦皇岛
#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int seat[N];typedef long long LL;LL idt[N];// 第i次相对参照物品1的不开心值int main(){ int t;scanf("%d",&t); while(t--){ ...
2018-10-31 22:53:21
255
原创 青岛区域赛备战--模板及复习--图论
最短路单源最短路dijO((E+N)logN)O((E+N)logN)O((E+N)logN)const int N=3000;const int M=71000;int n,m;int dis[N];int vis[N];struct edge{ int to,v;};struct qnode{ int id; int v; bool op...
2018-10-31 12:54:22
255
原创 青岛区域赛备战--模板及复习--目录
一、简单算法1、快速幂2、LIS及其变形3、最小生成树4、二、图论1、最短路DIJspfa2-sat差分约束2、网络流dinicsapisap3、LCA三、dp区间dp状压dp数位dp背包单调队列优化dp四、杂...
2018-10-31 12:54:03
152
原创 算法课二
题目要求:求两个字符串a,b的最长公共子序列的长度,并打印出所有成立的子序列这是一道典型的动态规划+路径记录的题。一般解决动态规划的路径打印,都是在动态规划的过程中记录达到这个状态的直接前驱,最后用一个深度搜索从末状态逆推前状态,再此过程中打印出答案。这道题的难点是要把所有的可能序列全打印出来,这该如何解决呢?先不急,先把基础的转移方程写出来两个串分别为a,b。定义状态dpij−−a...
2018-10-30 21:10:58
239
原创 矩阵链乘
算法报告一 矩阵链乘 16122020 钟顺源一、题意给定n个矩阵,问如何加括号使总的计算次数最少?输入给的是长度为n+1的序列a1:(n+1)a_{1:(n+1)}a1:(n+1)。即矩阵AiA_iAi的行数为aia_iai,列数为ai+1a_{i+1}ai+1输出总的计算次数和加...
2018-10-24 21:36:01
366
原创 CodeForces - 372C 单调队列优化dp
第二道 单调dp题 单调队列只是辅助,dp是关键,写出合理的dp方程才知道并用单调队列优化。 大意:1-n 个地点 ,放m次烟花 ,每次可走d的长度 (可以不是必须) 给出m次烟花的参数 a[i] —烟花地点 b[i]–第i次烟花的一个参数,没什么实际意义 t[i]—燃放烟花的时间 每放一次烟花,这个人就会得到 bi - |ai - x| 的权值 x是当时的位置给出状态方程: ...
2018-10-24 11:15:23
332
原创 树分治———点分治
点分治还是很有意思的,不过自己看博客还是比较吃力的,看了好久。基本思想:找一颗树上的重心(所有以此点为根的子树中最大子树最小的那个根结点)分治解决。(这是关键。)详细解释一下:一开始结点数为n,朴素算法O(n2n^2n2),若找重心分治处理就是O(log(n)log(n)log(n))层,每次合并时间是(这里是O(nlog(n)+n) 排序+找最远可行对)不定。那最终就是O(n*log(...
2018-10-18 12:46:36
141
转载 上下界网络流
转载自:https://www.cnblogs.com/mlystdcall/p/6734852.html【教程】上下界网络流建模方法总结前言之前学习上下界网络流的时候,花了很多时间去理解建模的方式和原理,然而今天复习的时候发现忘得差不多了QwQ。于是参考了一下以前的代码,再次做了个总结,放在博客里,省得以后忘掉QwQ。无源汇可行流建模方法:首先建立一个源ss和一个汇tt,一般称为附加...
2018-10-12 13:24:49
137
原创 #include头文件
#include<iostream>#include<stdio.h>#include<string>#include<cstring>#include<vector>#include<stack>#include<algorithm>#include<queue>usi
2018-10-12 12:28:33
786
原创 图论网络流模板
最大流O(n2∗v)O(n^2*\sqrt{v})O(n2∗v)#include &amp;amp;lt;iostream&amp;amp;gt;#include &amp;amp;lt;cstdio&amp;amp;gt;#include &amp;amp;lt;cstring&amp;amp;gt;#include &amp;amp;lt;queue&am
2018-10-11 22:36:35
142
原创 HDU - 3338烦的一比网络流
本来想着要区域赛 就暂时不写题解了。忍不住了,这题踩了太多坑了,状态也不太好,比起做的时间,写题解的时间怎么也不算多。放两张图片 方便自己看本质是一个方格填数的题就这么几个格子黑色不能放值。但他本身可有值左值代表这个点向下直到下个黑点或者边界中的一列白格填的总数为这个左值右值同理这个点向右直到下个黑点或者边界中的一行白格填的总数为这个左值白色被填的格子,其他用这...
2018-10-11 01:01:47
223
原创 HDU - 6386
dij最短路 + 条件限制这道题很有意思,加深了我对Dij的理解。题意很简单,找一条从1到n的最短路,但若是前一条路和后一条路一致,那么就不计算后一条路,不然不一样了就+1,即边权全是1或0,是0是1取决于前一权值是否和当前权值一致。那么关键点在哪里呢?对于dij堆优化的理解。首先,优先队列里存放的到底是什么?是待选答案。vis数组起到什么作用?区分处理完的集合,和待处理数据的集合...
2018-09-28 20:49:27
248
原创 最短路图论模板
单源最短路dij O((E+N)logN)O((E+N)logN)O((E+N)logN)int n,m;int dis[N];int vis[N];struct node{ int to,v; bool operator &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; (const node &amp;amp;amp;amp;amp;amp;amp;amp;a
2018-09-21 16:02:38
187
原创 图论前向星板子
int head[N]; int top; int n,m; struct Edge { int val; int to; int next; }edge[M]; void addedge(int a,int b,int c) { edge[top].to=b; edge[top].val=c; edge[top].next...
2018-09-21 16:02:28
184
原创 图连通性模板
有向图强连通缩点所需数组idx,low[MAXN],dfn[MAXN]idx,low[MAXN],dfn[MAXN]idx,low[MAXN],dfn[MAXN]————时间戳和两个访问标志 sccno,scc[MAXN]sccno,scc[MAXN]sccno ,scc[MAXN] ————点属于哪个连通分支,及连通分量数量 stack&amp;amp;amp;lt;int&amp;amp;amp;gt;st,inst[MAX...
2018-09-21 16:02:21
226
原创 POJ - 1201(差分约束入门)
返回专题https://blog.youkuaiyun.com/wyxxzsy/article/details/82776590废话不说,直接建模套板子x[i] 代表 0~i 里点的个数对于若干个x[i],有若干个约束条件如样例:53 7 38 10 36 8 11 3 110 11 1第一个约束条件“3 7 3”就是x[7]-x[2]&gt;=3最终要求 x[最大]-x[最小]...
2018-09-19 19:55:41
242
原创 差分约束入门+总结
给定一串序列,长度为n。a1,a2,a3......ana_1,a_2,a_3......a_na1,a2,a3......an并给定m的限制条件,条件的格式为ai−aj&amp;amp;amp;amp;amp;amp;amp;lt;=ca_i-a_j&amp;amp;amp;amp;amp;amp;amp;lt;=cai−aj&amp;amp;amp;amp;amp;amp;lt;=c求an−a1a_n-a_1an−a1的最大值
2018-09-19 19:24:53
541
原创 python socket编程
#客户端# -*-coding: utf-8 -*-import socketimport threadingoutString = ''inString = ''nick =''#发送信息def DealOut(sock): global nick,outString while True: outString = input() ...
2018-09-17 18:12:07
205
原创 2-sat总结(慢慢更新)
vector<int> G[N<<1];int n;bool mark[N<<1];int S[N<<1],c;void init(){ for(int i=0;i<2*n;i++) G[i].clear(); clr(mark,0);}bool dfs(int x){ if(mark[x^1]) ret...
2018-09-14 11:49:10
516
原创 2018徐州网络赛
dp[i][1]: 第i个位置与第一个位置相同 dp[i][2]: 第i个位置与第一个位置相斥 dp[i][0]: 第i个位置与第一个位置无关dp[i][1] = dp[i-1][1]+dp[i-1][0] dp[i][2] = dp[i-1][2]+dp[i-1][0] dp[i][0] = dp[i-1][0](k-2)+dp[i-1][1](k-3)+dp[i-1][2]*(k-...
2018-09-13 15:38:21
219
原创 poj 1821 Fence (dp+单调队列优化)
给n个篱笆,k个工人 接着给k行,分别描述工人的 负责区域大小 涂一个篱笆的收益 他所站的位置 解释一下,一个工人如果涂篱笆了,一定是从他所站的位置出发的,即他负责的区域必须包括自己当前位置 求最大的总收益dp[i][j] : 前i个工人 负责前j个篱笆的的最大收益dp[i][j]=max(dp[i][j-1], dp[i-1][j-1], max(dp[i-1][k],))...
2018-09-04 21:20:40
153
原创 HDU - 3530 单调队列入门
伪入门 滑动窗口 两个队列: 单调递减 维护最大值 单调递增 维护最小值 假设目前在处理第i个元素的入队列情况,首先,这个元素肯定是要入队列的,只是直接放在队列尾部和替换掉尾部一些元素的区别。 eg. 1 3 2 5 4两个队列的情况分别为 两个队列 1 3 2 5 4...
2018-09-03 10:30:46
168
原创 HDU - 1693 插头dp 艰难入门
什么是插头dp? 首先我们要先知道它能解决那些问题。一般都是一张方格图里有关连通性的一些问题。 那么对于一个格子而言,他就
2018-09-02 13:37:55
571
原创 轮廓线dp入门题 && POJ - 2411
题目很有意思,就是oj太烂了 刘汝佳的代码太优雅了,看不懂,但意思差不多。 就我做过的状压dp总是以一行(或一列)为一个状态,先理清一行中的关系,后再找行对行的关系 这里不能用行,行之间的关系不够了,因为要考虑不同的放法。 那一行不够,两行够不够?我觉得够,但时间复杂度不够优秀,会包含很多无效转态所以优化一下? dp三个问题: 1.状态的确立 2.状态转移方程 3.初始化1...
2018-08-29 16:53:26
494
原创 HDU - 1565
这道题以为是简单的模板题(确实简单啊。。。),卡了好久 1.内存限制,之前题放的很开,这里要卡一下最多的状态数,但没卡滚动数组(也卡不了吧) 2.注意要统计的是最值还是数量。 3.二进制状态 2n和2n+12n和2n+12^n 和2^{n+1} 是分开的 可以预处理2202202^{20} 再对不同n取前缀,但效果不明显。#include&amp;amp;lt;iostream&amp;amp;gt;#incl...
2018-08-23 19:11:16
160
原创 CodeForces - 11D
有意思 和之前的项链异曲同工,但之前就是入门,半抄半做的。 one more time 再跑一遍吧 环?怎么处理环? 都是通过记录路径,若是首末可相连,那么就是个环,同时,这样也可以用作之后的状态转移,妙啊 dp[i][s]: 路径的最后一个点是i且状态是s,且有隐含条件开头是是状态的第一个1。#include<iostream>#include<stdio.h...
2018-08-23 16:00:26
575
原创 HDU - 4539
纯状压题,dp部分很简单 考虑一行上的限制条件,再去深究列上的限制#include<iostream>#include<stdio.h>#include<string>#include<cstring>#include<vector>#include<stack>#include<algorithm...
2018-08-23 13:29:18
184
原创 hdu—6435
可惜了 这道题还是能做的 首先这道题非常容易想到暴力做,但绝对不能暴力做,这一类的题型,我感觉要挖掘题面中的特有信息。 比如: k<=5,曼哈顿距离(去绝对值) 当然都注意到了也没用,题做的少啊 这一手状压还是很妙的#include <bits/stdc++.h>using namespace std;#define clr(a, x) memset(a, ...
2018-08-23 13:23:53
168
原创 HDU - 3182
一眼看上去有点像变形背包,但完全不是 每种汉堡只能选一种,选一种,且选i种汉堡 需要先作出规定的汉堡 比较难的就是如何判断这个状态是合法的,而对于确定的状态,答案是唯一的 合法表现在两方面:1.val>0 2.所有的汉堡满足依赖 这里的处理很优美:从一个合法状态到另一个合法状态,打标记#include<iostream>#include<stdio.h&g...
2018-08-21 17:48:11
184
原创 HDU - 3091
有一个DP题,意题都看了好久用n个珠子串成一个项链,但是n个珠子两两之间可能不能放在一起,问有几种串珠子的方式? 因为项链可以旋转,所以选择一个起点最终走到这个起点,且每个点只能走一次,问有多少种情况? 类似旅行商问题,但不一样。问题还是对于一个珠子之后,它要选哪个珠子,因为n个珠子都要被选到,这里解决的就是个顺序问题。 如何定义dp状态 dp[state][i] :在state状态下,且...
2018-08-21 16:34:06
209
原创 HDU - 1074
A - Doing Homework HDU - 1074入门题 很有意思 最多十五门课 15位二进制 0代表没选这门课 1代表选了这门课 状态从 0~(2n−1)0~(2n−1)0~(2^n-1)即什么都没选到所有课...
2018-08-21 13:20:00
207
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人