- 博客(27)
- 收藏
- 关注
原创 奇奇的幸福度 —— dp + 最长路
Problem G: 奇奇的幸福度 Problem G: 奇奇的幸福度Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 15  Solved: 1[Submit][Status]Web Board][Creator:]Description在G国,有N个城市,编号从1到N。奇奇住在城市1,他打算去城市N。问题是他...
2018-11-25 20:26:54 174
原创 舞蹈链 感悟
做了有一个星期的DLX专题了吧,感觉不写点东西就<font color=red>缺</font>了点什么,为什么要做这个专题呢,感觉很多比赛都不会用到这个算法,比较冷门,但它毕竟在kuangbin的专题里排第三,那么肯定也就有学习的理由,并且本人对数据结构的掌握比较差,所以想学习一下这个十字交叉双向循环链表,训练一下自己对链表的能力和运用那么在说具体算法之前呢,先说一下...
2018-11-17 16:50:05 255
原创 HDU-5046___Airport —— 二分 + DLX +剪枝
题目链接:点我啊╭(╯^╰)╮题目大意:     给定 nnn 个城市的坐标,要在这 nnn 个城市里建 kkk 个飞机场,要使任意城市离最近的飞机场距离的最大值最小解题思路:    最大值最小化,很典型的二分,即二分城市与飞机场的距离,若满足 kkk 个以内的飞机场在这个距离内能覆盖所有城市,
2018-11-17 15:35:45 181
原创 HDU-3335___Divisibility —— 二分匹配 | 最小路径覆盖 | DLX
题目链接:点我啊╭(╯^╰)╮题目大意:     求选出两两相除互不为 000 的最大个数解题思路:    做法比较多,本人是在DLX专题里做到所以就用DLX来做了    枚举每两个数,若能
2018-11-16 19:27:09 200
原创 HDU-4069___Squiggly Sudoku —— 锯齿数独 + BFS
题目链接:点我啊╭(╯^╰)╮题目大意:     给你一个锯齿数独的图,每个凹凸形状的宫的上下左右边界以及格子里的数字都给出相应的计算规则,要你求这个数独的唯一解,或者输出 000 解或多解解题思路:    数独模板题,关键在于宫的变换,我们回想之前处理数独的宫的方法,首先要对每个数字所处在的宫
2018-11-16 12:31:17 1330
原创 舞蹈链 —— M × M 数独模板
数独为M × M,则有M × M × M行 、M × M × 4列下面是数独题任意大小模板:#include<bits/stdc++.h>using namespace std;const int M=16;//数独大小const int MN=M*M*M+10;const int MM=M*M*4+10;const int MNN=MN*4+MM; //最大点数,数独...
2018-11-15 23:06:13 291
原创 舞蹈链 —— 16 × 16 数独模板(ZOJ - 3122)
本题出自 ZOJ−3122ZOJ - 3122ZOJ−3122:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int MAXN = 16*16*16+10; const int MAXM = 16*16*4+10; const int MAXNODE = MAXN*4+M...
2018-11-15 22:59:15 1797
原创 舞蹈链 —— 9 × 9 数独模板(POJ - 3074)
用 324324324 列、 729729729 行构造:本题出自 ZOJ−3122ZOJ - 3122ZOJ−3122:PS:PS:PS:这里其实还可以优化,对必选行的列进行处理,可以减少行和列#include<bits/stdc++.h>using namespace std;typedef long long ll;#define N 500010
2018-11-15 22:16:18 447
原创 POJ - 1084___Square Destroyer —— IDA* | DLX重复覆盖
题目链接:点我啊╭(╯^╰)╮题目大意:     给你n∗nn*nn∗n的由火柴组成的正方形图案(n≤5)(n≤5)(n≤5), 并对每个火柴进行编号,已经帮你删除了 kkk 个火柴棒,请问最少还要删除几根火柴棒,使得由火柴组成的图形没有一个完整的正方形,正方形的边长可以为1、2......1、2......1、2......解题思路:&nb
2018-11-15 17:46:45 401 1
原创 HDU-2295___Radar —— 二分 + DLX重复覆盖
题目链接:点我啊╭(╯^╰)╮题目大意:     nnn 个城市、mmm 个雷达,最多可以用k个雷达,然后给出城市和雷达的坐标,要求雷达的最小覆盖半径,使得所有城市都被雷达覆盖???解题思路:  &
2018-11-13 22:33:07 200
原创 舞蹈链 —— 重复覆盖 模板
DancingLinks(重复覆盖模板):Dancing Links(重复覆盖模板):DancingLinks(重复覆盖模板):本模板取自 HDUHDUHDU 349834983498#include<bits/stdc++.h>using namespace std;typedef long long ll;#define N 100010#define M 10...
2018-11-13 22:20:13 238
原创 ZOJ-3209___Treasure Map —— DLX精确覆盖
题目链接:点我啊╭(╯^╰)╮题目大意:    给你一个n∗mn*mn∗m的矩形和 ppp 个小矩形,求最少需要几个小矩形可以精确覆盖这个大矩形???解题思路:    明显是最清晰的舞蹈链,那么问题就在于建图上,很多人接触这一题应该
2018-11-12 20:31:41 194
原创 舞蹈链 —— 精确覆盖 模板
DancingLinks(精确覆盖模板):Dancing Links(精确覆盖模板):DancingLinks(精确覆盖模板):#include<bits/stdc++.h>using namespace std;typedef long long ll;#define N 9*9*9*9*9*4+10#define M 9*9*9+10struct DancingLin...
2018-11-12 17:44:13 252
原创 next_permutation() 全排列函数
    排列(Arrangement),简单讲是从 NNN 个不同元素中取出 MMM 个,按照一定顺序排成一列,通常用A(M,N)A(M,N)A(M,N)表示。当M=NM=NM=N时,称为全排列(Permutation)。    从数学角度讲,全排列的个数A(N,N)=(N)∗(N−1)∗...∗2∗
2018-11-08 21:11:10 1032 1
原创 迷宫问题 —— 最短路径条数
求迷宫的最短路径条数有多少条,一般方法会超时,这里记录一下模板 简要思路:用ansansans记录到每个点的条数,当新到达的点的新距离小于就旧的距离时,更新新点的ansansans;若新距离等于旧距离,也就是可能是最短路径的时候,就ans新+=ans旧ans_{新} += ans_{旧}ans新+=a...
2018-11-08 19:46:07 1299
原创 LCS + 输出最长公共子串
带输出:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1005;char a[N], b[N];int dp[N][N], index, res;void lcs(char a[], char b[]){ int len1 = strlen(a); int ...
2018-11-04 22:05:06 224
原创 LCS + 输出最长公共子序列
#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;typedef long long ll;char a[1005], b[1005];int dp[1005][1005];void lcs(char a[], char b[]){ int len1 = strlen(a); int len2 = strlen(b); memset...
2018-11-04 21:14:09 329
原创 薛猫猫杯程序设计网络赛___球球大作战 —— 二分
题目链接:点我啊╭(╯^╰)╮题目大意:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;给出一个长为 nnn 的序列,相邻的元素可以合并,最多合并 mmm 次,求合并后这个序列中最小值最大为多少???解题思路:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;思路很清晰,每次合并一定是找最小值合并,关键是dp肯定
2018-11-04 20:10:37 860 5
原创 编辑距离问题 —— 递推dp
&nbsp;&nbsp;&nbsp;&nbsp;设AAA和BBB是2个字符串。要用最少的字符操作将字符串AAA转换为字符串BBB。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符&nbsp;&nbsp;&nbsp;&nbsp;将字符串AAA变换为字符串BBB所用的最少字符操作数称为字符串A到 B的编辑距离,记为d(A,B)d(A,
2018-11-04 19:21:54 260
原创 最大子段和___O(n) —— 递推dp
&nbsp;&nbsp;&nbsp;&nbsp;给定 nnn 个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n]a[1],a[2],a[3],…,a[n]a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]a[i]+a[i+1]+…+a[j]a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为 000...
2018-11-04 18:59:47 376
原创 数字三角形 —— 简单递推dp
&nbsp;&nbsp;&nbsp;&nbsp;给定一个由 nnn 行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大输入样例:5 7 3 8 8 1 0 2 7 4 44 5 2 6 5 输出样例:30&nbsp;&nbsp;&nbsp;&nbsp;思路:很
2018-11-04 12:22:57 324
原创 单调递增最长子序列___O(n2) —— 递推dp
设计一个O(n2)O(n2)O(n2)时间的算法,找出由 nnn 个数组成的序列的最长单调递增子序列。输入样例:51 3 5 2 9输出样例:4思路:用f[i]f[i]f[i]表示前 iii 个最长递增子序列的长度,那么遍历一遍 iii,f[i]=f[j]+1(j&amp;lt;i)f[i] = f[j] + 1(j&amp;lt;i)f[i]=f[j]+1(j&lt;i)#in...
2018-11-04 11:43:46 364
原创 寻找两个有序序列的中位数___O(logn) —— 二分
&nbsp;&nbsp;&nbsp;&nbsp;已知有两个等长的非降序序列S1S1S1、S2S2S2,求S1S1S1与S2S2S2并集的中位数输入样例1:51 3 5 7 92 3 4 5 6输出样例1:4输入样例2:6-100 -10 1 1 1 1-50 0 2 3 4 5输出样例2:1&nbsp;&nbsp;&nbsp;&nbsp;思想这里要
2018-11-03 22:19:36 2193 3
原创 二分寻找数组元素 —— 二分模板
给出一个已经排好的数组,和其中一个元素,输出小于 xxx 的最大元素位置 iii 和大于 xxx 的最小元素位置 jjj 总感觉自己的模板里没有二分搜索就少了点什么#include<bits/stdc++.h>using namespace std;typedef long long ...
2018-11-02 21:51:30 168
原创 求逆序对数目___O(nlogn) —— 分治 归并
&nbsp;&nbsp;&nbsp;&nbsp;设计一个平均时间为O(nlogn)O(nlogn)O(nlogn)的算法,在n(1&amp;lt;=n&amp;lt;=1000)n(1&amp;lt;=n&amp;lt;=1000)n(1&lt;=n&lt;=1000)个元素的数组中寻找逆序对数目&nbsp;&nbs
2018-11-02 21:17:17 2650
原创 找第k小的数___O(n) —— 分治 快排
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;设计一个平均时间为O(n)O(n)O(n)的算法,在n(1&amp;amp;lt;=n&amp;amp;lt;=1000)n(1&amp;amp;lt;=n&amp;amp;lt;=1000)n(1&amp;lt;=n&amp;lt;=1000)个无序的整数中找出第k小的
2018-11-02 20:26:54 893
原创 大数模板
大数模板:已重载的运算符运算符类型运算符双目运算符+(加), -(减), *(乘), /(整除), %(取模)关系运算符==(等于), !=(不等于), &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;(小于), &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;(大于), &amp;amp;amp;amp;amp;amp;amp;amp;amp;a
2018-11-01 23:28:59 252
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人