- 博客(33)
- 收藏
- 关注
原创 LeetCode 3. 无重复字符的最长子串
https://leetcodechina.com/problems/longest-substring-without-repeating-characters/description/ 有点dp的意思 dp[i]:末尾为i位置的不含有重复字符的 最长子串 的长度 dp[i]=max(vis[s[i]]+1,i+1-dp[i-1])~~~i t代表i-1时不含有重复字符的 最长子串的最左...
2018-02-27 22:42:34 518
原创 LeetCode 2. 两数相加
https://leetcodechina.com/problems/add-two-numbers/description/ 链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(...
2018-02-27 22:38:20 1226
原创 LeetCode 1. 两数之和
https://leetcodechina.com/problems/two-sum/description/ mapclass Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> ans; ma...
2018-02-27 22:37:05 744
原创 PAT 1011. Cut Rectangles (35)
暴力求解 矩形被切一刀分为 1.矩形+矩形 2.非平行四边形+非平行四边形 3.三角形+五边形 4.三角形+四边形 5.三角形+三角形#pragma warning(disable:4996)#include<iostream>#include<algorithm>#include<vector>using namespace std;int N, k, a, b;struc
2018-02-27 14:42:06 284
原创 PAT 1010. Lehmer Code (35)
map容器+树状数组#pragma warning(disable:4996)#include<iostream>#include<algorithm>#include<map>using namespace std;typedef int LL;const int maxn = 100005;//树状数组map<int, int> ID;LL A[maxn], N, ans[ma
2018-02-27 13:06:48 315
原创 PAT 1009. Triple Inversions (35)
树状数组 A[0]数组用来求大于k的个数 A[1]数组用来求大于x的二维逆序对个数 没遍历一个数x,ans都加上到当前位置前方大于x的二维逆序对个数#pragma warning(disable:4996)#include<iostream>using namespace std;typedef long long LL;const int maxn = 100005;//树状数组
2018-02-27 12:47:35 144
原创 PAT 1008. Airline Routes (35)
用tarjan把所有的环都指向各自环中的最先访问的节点 题目询问即问两个点是否在同一个环中#pragma warning(disable:4996)#include<iostream>#include<vector>#define min(x,y) (x<y? x:y)using namespace std;const int maxn = 10005;int Vt[maxn], R[
2018-02-27 12:17:51 240
原创 PAT 1007. Red-black Tree (35)
动态规划,转移方程已在代码中注释#pragma warning(disable:4996)#include<iostream>using namespace std;typedef long long LL;const int maxn = 505, mod = 1000000007;LL B[maxn][maxn], R[maxn][maxn], ans;int N;//R[h][i
2018-02-27 10:13:40 378
原创 PAT 1006. Tree Traversals - Hard Version (35)
参考博客:http://blog.csdn.net/guojiaqi007/article/details/59155604 暴力穷举root在中序的位置,递归建树#pragma warning(disable:4996)#include<iostream>#include<string>#include<algorithm>#include<queue>using namespace
2018-02-26 14:46:42 1272
原创 PAT 1004. To Buy or Not to Buy - Hard Version (35)
先判断Yes/No,然后暴力深搜,要注意遍历时先遍历选中此字符串的情况,再不选中,否则最后两个会超时#pragma warning(disable:4996)#include<string>#include<iostream>#include<cstring>using namespace std;int ID(char x) { if (x >= '0' && x <= '9')
2018-02-24 18:30:52 237
原创 PAT 1003. Universal Travel Sites (35)
最大流问题#pragma warning(disable:4996)#include<iostream>#include<cstring>#include<algorithm>#include<queue>#include<vector>#include<string>#include<map>
2018-02-24 16:42:12 889
原创 PAT 1002. Business (35)
动态规划dp[i][j]代表j样东西时,到i天可得最大利润,路径压缩#include<iostream>#include<algorithm>#include<vector>using namespace std;#pragma warning(disable:4996)int N;const int maxn = 999;struct node { int P, L, D;
2018-02-22 16:32:19 268
原创 PAT 1013. Image Segmentation (35)
注意D是大于任意一个H,而非两个H 把边从小到大排序,判断理由代码注释#include<iostream>#include<algorithm>#include<vector>using namespace std;#pragma warning(disable:4996)int fa[1005], Nv, Ne, A, B, C, maxedge[1005], num[1005];d
2018-02-22 14:08:26 1161
原创 PAT 1012. Greedy Snake (35)
暴力出#include<iostream>#include<cstring>#pragma warning(disable:4996)using namespace std;int N, K, a, b;const int inf = 0x3f3f3f3f;int dr[4] = { 0,0,1,-1 };int dl[4] = { 1,-1,0,0 };int T[20][20];
2018-02-21 21:58:01 307
原创 PAT 1014. Circles of Friends (35)
并查集求圈的个数,bfs求最大距离#include<iostream>#include<algorithm>#include<queue>#include<vector>#pragma warning(disable:4996)using namespace std;const int inf = 0x3f3f3f3f;int P[1005];//祖先int findroot(int
2018-02-19 15:53:51 294
原创 PAT 1015. Letter-moving Game (35)
动态规划#include<string>#include<iostream>#include<algorithm>using namespace std;int dp[1005][1005];int main() { string S, T; cin >> S >> T; int L = S.size(),_max=-1; for (int i = 1; i
2018-02-19 14:14:50 317
原创 PAT 1019. Separate the Animals (35)
参考博客 https://www.wxzuir.moe/pat-%E9%A1%B6%E7%BA%A71019-separate-the-animals-%E9%A2%98%E8%A7%A3/主要就是状态可以用long long 保存,这样才不超时,开始用set表示状态中有两个点超时#include<iostream>#include<cstring>#include<queue>#inc
2018-02-18 21:58:58 662
原创 PAT 1020. Delete At Most Two Characters (35)
动态规划 删去一个字符的话,dp[i][1] = s[i] == s[i - 1] ? dp[i - 1][1] : dp[i - 1][0] + dp[i - 1][1]; 删去两个字符的时候,分三种情况讨论,分析dp[i][2]的s[i]、s[i-1]、s[i-2]的字符abc是abb、bab、abc的那一类模式 Pabb:Pab删1【s[i]删除】+Pab删2【s[i]不删除】-重复加的
2018-02-16 15:17:52 459
原创 PAT 1021. Safe Fruit (35)
用到了最大独立集的算法#include<iostream>#include<map>#include<algorithm>#include<vector>using namespace std;const int SIZE = 105;int mat[SIZE][SIZE]; /*图矩阵*/int dp[SIZE],P[SIZE];int mx,N,M,a,b,ans_sum;i
2018-02-15 18:26:01 1347
原创 图 欧拉回路
欧拉道路:即一笔画,从图的一个结点出发走出一条道路,每条边恰好经过一次 欧拉回路:从任意点出发,最终回到该点的欧拉道路 1.前提:忽略边的方向后,图是连通的【dfs、bfs、并查集】 2.条件: 有向图:最多只有两个点的入度不等于出度,且相差的绝对值是1 无向图:最多只有两个点的度是奇数 3.若有特殊点,则特殊的点为起点,若无任意点都可为起点 寻找路径方法:DFS构造一般的版本void
2018-02-14 15:40:40 416
原创 树堆Treap、伸展树Splay Tree
//Treap树堆struct Treap { struct Node { Node *ch[2]; int prio, val; int cmp(int x) { if (x == val) return -1; return val < x; } //...
2018-02-12 15:29:50 360
原创 后缀数组
#include<iostream>#include<string>using namespace std;const int maxn = 1048576+10;const int maxm = 127;string s;int sa[maxn], rak[maxn], heigh[maxn], vis[maxm], second[maxn], n, N;v...
2018-02-11 16:59:10 177
原创 BigInteger大整数类的加、减、乘、输入、输出
#include<iostream>#include<vector>#include<string>#define max(x,y) (x>y? x:y)using namespace std;const int BASE = 1e4;const int WIDTH = 4;#pragma warning(disable:4996)stru...
2018-02-10 18:28:30 3872 1
原创 串算法1 Trie+KMP+Aho-Corasick自动机(AC自动机)
#include&lt;iostream&gt;#include&lt;string&gt;#include&lt;queue&gt;#define cti(x) (x-'a')#define itc(x) (x+'a')using namespace std;const int maxn = 1005;const int maxsz = 1005;const int sigma_...
2018-02-10 11:48:46 269
原创 线段树
#include<iostream>using namespace std;const int maxn = 100005;const int inf = 0x3f3f3f3f;//线段树#define lc(o) (o<<1)#define rc(o) (o<<1|1)#define num(L,R) (R-L+1)#define max(a,...
2018-02-09 15:25:21 135
原创 树状数组、RMQ
树状数组#include<iostream>using namespace std;const int maxn = 1e5 + 5;//树状数组int A[maxn] = {};int lowbit(int n) { return n & -n;}int Get_sum(int index) {//1~index的和 int sum = 0;...
2018-02-08 20:46:02 270
原创 最大流 增广路算法+最小费用最大流
cap>flow代表连通,cap==flow代表不连通 最大流 不停的寻找s连通至t的路径,更新..直到找不到路径 注:p[u] ^ 1和p[u]互为方向边#include#include#include#include#includeusing namespace std;const int maxn = 1005;const int inf = 0x3f3f3f3f;
2018-02-07 20:37:17 604
原创 最短路径 Dijkstra+priority_queue优化+bellman_ford+Floyd
#include#include#include#include#includeusing namespace std;const int maxn = 1005;const int inf = 0x3f3f3f3f;struct HeapNode { int d, u; HeapNode() = default; HeapNode(int a, int b
2018-02-07 19:31:04 311
原创 计数_欧拉 phi 函数
int eluer_phi(int n) { int m = (int)sqrt(n + 0.5); int ans = n; for (int i = 2; i <= m; ++i) if (n%i == 0) { ans = ans / i * (i - 1); while (n%i == 0) n /=
2018-02-07 13:03:46 457
原创 欧几里德、扩展欧几里德、乘法逆
int gcd(int a, int b) {//最大公约数 return b ? gcd(b, a%b) : a;}int lcm(int a, int b) {//最小公倍数 return a / gcd(a, b)*b;}//扩展欧几里德算法,求ax+by=gcd(a,b)=g一组解//设a%b=r=a-[a/b]b-->g=bx1+ry1=ay1+b(x1-[a/
2018-02-06 20:37:40 256
原创 暴力求解摘
下一个序列next_permutation 123下一个是132…#include#include#includeusing namespace std;int main() { string s; cin >> s; do { cout << s<<endl; } while (next_permutation(s.begin()
2018-02-05 16:39:17 162
原创 PAT 1018. Subnumbers (35)
https://www.patest.cn/contests/pat-t-practise/1018#include#includeusing namespace std;const int mod = 1e9 + 7;long long int A[100005];int main() { string s; cin >> s; int Len = s.si
2018-02-03 20:34:39 271
原创 算法竞赛入门经典第六章例题6-20 Ideal Path UVA - 1599
https://vjudge.net/problem/UVA-1599#include#include#include#include#pragma warning(disable:4996)using namespace std;const int maxn = 100006;struct node { int v, color; node() = defaul
2018-02-01 20:31:57 241
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人