- 博客(595)
- 收藏
- 关注
原创 leetcode 175. Combine Two Tables
题意是选出两个表有相同PersonId的信息。考察SQL LEFT JOIN关键字。 SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。 LEFT JOIN 关键字语法 SELECT column_name(s) FROM table_name1 LEFT J
2017-05-02 09:57:18
608
原创 leetcode 2. Add Two Numbers
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode addT
2017-01-31 14:49:06
503
原创 leetcode 2. Add Two Numbers
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* ad
2017-01-31 14:11:00
457
原创 HDOJ 6012 Lotus and Horticulture
明显温度可以离散化,最多10^6个点,由于只要求最终结果,不需要动态更新,所以用前缀和就可以了。比赛的时候写了线段树,麻烦了。 #include using namespace std; typedef long long LL; map mpp; int n; void work() { mpp.clear(), mpp[0] = 0; scanf("%d", &n); for(i
2017-01-23 13:08:33
467
转载 Bloom Filter
转载自焦萌http://blog.csdn.net/jiaomeng/article/details/1495500 Bloom Filter概念和原理 Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元
2017-01-01 15:39:21
447
原创 BestCoder 2nd Anniversary
1001 Oracle 先记录 0−90-90−9这101010个数字分别有多少个。不难看出,最小的一个存在的数字和其余的数字降序排列的相加就是答案,但是最小的那个数字不能是000,因为题面上说明是正整数。将这两个数加起来时,注意处理进位问题。考虑无解的情况,即一串数字中仅存在111个非000数字或不存在。(PS.这道题目原本的时限是1s1s1s,考虑到题目的难度和评测机的问题,开了4s
2016-07-23 18:55:33
867
原创 【DP】 BZOJ 3437: 小P的牧场
斜率优化一下就行了。。。 #include using namespace std; typedef long long LL; const int maxn = 1000005; LL a[maxn], H[maxn], s[maxn], f[maxn]; int q[maxn], n, m; LL getfz(int j2, int j1) { return f[j1] - f[j
2015-11-09 19:46:02
959
原创 【DP】 BZOJ 3675: [Apio2014]序列分割
推出公式以后就可以斜率dp优化了。。。 #include using namespace std; typedef long long LL; const int maxn = 100005; LL t1[maxn], t2[maxn]; LL s[maxn]; LL *f, *g; int q[maxn]; int n, m; LL getfz(int j2, int j1) { r
2015-11-06 21:28:07
633
原创 【DP】 HDOJ 3507 Print Article
斜率dp水题。。。 #include using namespace std; typedef long long LL; const int maxn = 500005; int f[maxn]; int s[maxn]; int q[maxn]; int n, m; int getfz(int j2, int j1) { return (f[j1] + s[j1] * s[j1])
2015-11-06 20:31:30
628
原创 【DP】 cf 321E
用四边形优化一下dp即可。。。。 #include using namespace std; typedef long long LL; const int maxm = 808; const int maxn = 4004; const int INF = 0x3f3f3f3f; int f[maxm][maxn]; int s[maxm][maxn]; int a[maxn][maxn
2015-11-02 14:18:04
595
原创 【DP】 HDOJ 2974 Counting heaps
推出dp公式然后就可以做了。。 #include #include #include #include #include using namespace std; typedef long long LL; #define mp(x, y) make_pair(x, y) const int maxn = 500005; queue q; int fa[maxn]; int in[
2015-10-30 13:55:51
620
原创 【DP】 cf 487B
用队列转移dp即可。。。 #include using namespace std; typedef long long LL; #define mp(x, y) make_pair(x, y) const int maxn = 100005; int P[maxn]; int a[maxn]; int dp[maxn]; int st1[maxn][20]; int st2[maxn][
2015-10-29 19:51:40
650
原创 【DP】 cf 486D
考虑每个点作为最小的权值点。。。然后dp #include using namespace std; typedef long long LL; const int mod = 1000000007; const int maxn = 2005; const int maxm = 4005; struct Edge { int v; Edge *next; }E[maxm], *H[m
2015-10-29 16:48:02
600
原创 【DP】 cf 590D Top Secret Task
#include using namespace std; typedef long long LL; const int maxn = 155; const int INF = 0x3f3f3f3f; int dp[maxn][maxn * maxn]; void update(int &x, int y) { if(x > y) x = y; } void work() { int
2015-10-28 14:25:33
1164
原创 Codeforces Round #325 (Div. 2) D. Phillip and Trains
水题,bfs一下即可。。。 #include using namespace std; typedef long long LL; #define mp(x, y) make_pair(x, y) const int maxn = 105; queue >q; int vis[5][maxn]; char g[5][maxn]; int n, m; bool check(int x, in
2015-10-13 17:47:24
504
原创 Codeforces Round #325 (Div. 2) E. Alice, Bob, Oranges and Apples
模拟一下发现和gcd一样。。。于是按gcd模拟就好了。。。 #include using namespace std; typedef long long LL; void work() { LL a, b; scanf("%I64d%I64d", &a, &b); if(__gcd(a, b) != 1) { printf("Impossible\n"); return; }
2015-10-13 14:59:49
723
原创 Gym 100726B Common Subexpression Elimination
递归下降建树,然后对每个节点编号....一个节点该节点的hash值和左儿子的编号和右儿子的编号是唯一的....用map查询 #include using namespace std; typedef long long LL; const int maxn = 800000; struct node { int val, id, is; string s; node *ch[2];
2015-10-09 16:54:44
752
原创 线段树 FZU 2201 序列操作
把gcd转化成差值...然后建立两颗线段树.... #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long lon
2015-10-09 15:41:07
724
原创 矩阵快速幂 CodeForces - 582B Once Again...
建出转移矩阵...然后做矩阵快速幂就行了.... #include using namespace std; typedef long long LL; const int maxn = 105; const int INF = 0x3f3f3f3f; int mat[maxn][maxn]; int res[maxn][maxn]; int mid[maxn][maxn]; int a[
2015-10-05 20:34:15
1455
原创 HDOJ 5498 Tree
容斥一下然后生成树计数就行了.... #include using namespace std; typedef long long LL; const int maxn = 105; int a[maxn][maxn]; LL c[maxn][maxn]; int base, n, m, q; int det(int n) { int ans = 1, i, j, k;
2015-10-04 20:06:40
500
原创 线段树 CodeForces 580E
线段树上的hash... #include using namespace std; typedef long long LL; #define lson o << 1, L, mid #define rson o << 1 | 1, mid+1, R #define ls o << 1 #define rs o << 1 | 1 const int mod = 1e9+7; const i
2015-10-03 18:29:06
726
原创 mobius HDOJ 5468 Puzzled Elena
dfs遍历树+莫比乌斯反演.. #include using namespace std; typedef long long LL; const int maxn = 100005; const int maxm = 200005; struct Edge { int v; Edge *next; }E[maxm], *H[maxn], *edges; int not_prime[
2015-10-02 19:37:12
551
原创 树链剖分 JAG Summer 2012 Day 4 D Do use segment tree
树链剖分裸题.... #include using namespace std; typedef long long LL; #define lson o << 1, L, mid #define rson o << 1 | 1, mid+1, R #define ls o << 1 #define rs o << 1 | 1 const int INF = 0x3f3f3f3f * 2;
2015-10-02 18:40:43
485
原创 DP HDOJ 5471 Count the Grid
先转化成了离散网格图,然后状态dp即可.... #include using namespace std; typedef long long LL; #define mp(x, y) make_pair(x, y) const int maxn = 100; const int mod = 1e9+7; struct line { int x1, y1, x2, y2, v; lin
2015-10-01 20:01:21
581
原创 BZOJ 2440: [中山市选2011]完全平方数
二分,然后用莫比乌斯做就行了... #include using namespace std; typedef long long LL; const int maxn = 50005; int not_prime[maxn]; int prime[maxn]; int mu[maxn]; int K, p_cnt; void Init() { mu[1] = 1; p_cnt =
2015-09-30 15:06:24
704
原创 DP HDOJ 5492 Find a path
化简公式然后递推.... #include using namespace std; typedef long long LL; const int INF = 0x3f3f3f3f; int dp[33][33][60 * 33]; int g[33][33], n, m; void update(int &x, int y) { if(x > y) x = y; } void w
2015-09-29 20:00:14
465
原创 HDOJ 5483 Nux Walpurgis
先做出最小生成树,然后对每个点dfs判断树边是否可删..... #include using namespace std; typedef long long LL; const int maxn = 3005; const int maxm = 6005; const int INF = 0x3f3f3f3f; struct Edge { int v; Edge *next; }E[
2015-09-29 14:51:43
497
原创 DP Codeforces Round #322 (Div. 2) F. Zublicanes and Mumocrates
树形dp,记录一下根节点的状态即可... #include using namespace std; typedef long long LL; const int maxn = 5005; const int maxm = 10005; const int INF = 0x3f3f3f3f; struct Edge { int v; Edge *next; }E[maxm], *H[
2015-09-28 21:40:39
715
原创 HDOJ 5487 Difference of Languages
记dp[i][j] 代表走到了第一个dfa的i号节点,走到了第二个自动机的j号节点.....然后就可以转移了...... #include using namespace std; typedef long long LL; const int maxn = 1005; struct node { int s1, s2, pre, tran; node(int s1 = 0, int
2015-09-28 15:17:23
491
原创 HDOJ 5469 Antonidas 树分治
经典的树分治,找字符串用hash找就行了.... #include using namespace std; typedef long long LL; #define mp(x, y) make_pair(x, y) const int maxn = 10005; const int maxm = 20005; const int INF = 0x3f3f3f3f; const int m
2015-09-28 13:12:10
502
原创 [DP] HDOJ 5456 Matches Puzzle Game
数位DP... #include using namespace std; typedef long long LL; LL dp[505][2][2][2]; int cnt[] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6}; int mod; void add(LL& a, LL b) { a += b; if(a > mod) a -= mod; } LL
2015-09-25 13:28:45
465
原创 [半平面交] HDOJ 5462 Manors
很容易就能看出半平面交的公式...但是比赛的时候这题看都来不及看... #include using namespace std; typedef long long LL; const int maxn = 1005; const double eps = 1e-7; struct Point { double x, y; Point(double x = 0, double y =
2015-09-23 20:00:30
602
原创 [网络流] HDOJ 5457 Hold Your Hand
建出字典树,然后做最小割就行了... #include using namespace std; typedef long long LL; const int maxn = 5005; const int maxm = 400005; const int INF = 0x3f3f3f3f; struct Edge { int v, c, next; Edge() {} Edge(i
2015-09-23 18:20:45
570
原创 [线段树] HDOJ Excited Database
把一个矩阵化成3个三角形容斥,然后用等差线段树就可以做了... #include using namespace std; typedef long long LL; #define now o, L, R, tree #define lson o << 1, L, mid, tree #define rson o << 1 | 1, mid+1, R, tree #define ls o
2015-09-21 20:13:26
487
原创 hihocoder #1236 : Scores
高维bitset.... #include using namespace std; typedef long long LL; const int maxn = 50005; struct node { int val, id; node(int val = 0, int id = 0) : val(val), id(id) {} bool operator < (const no
2015-09-21 14:28:32
795
原创 [动态树] HDOJ 5467 Clarke and hunger games
按时间点建树,然后递归实现LCT的可持久化.... #include using namespace std; typedef long long LL; #define mp(x, y) make_pair(x, y) const int maxn = 300005; const int maxm = 300005; const int INF = 0x3f3f3f3f; const in
2015-09-21 10:07:57
604
原创 HDOJ 5458 Stability
由于没有看到图在任意时刻都是连通的..这一条件..于是只好打了动态树.. #include using namespace std; typedef long long LL; const int maxn = 30005; const int maxm = 400005; struct Node *null; struct Node { Node *fa, *ch[2]; int s
2015-09-19 18:44:40
486
原创 【NTT】 ZOJ 3874 Permutation Graph
推出公式以后分治ntt优化即可。。。 #include using namespace std; typedef long long LL; const int maxn = 100005; const int maxm = 300005; const int mod = 786433; LL a[maxm], b[maxm], c[maxm]; LL f[maxn], dp[maxn
2015-09-18 13:06:22
674
原创 【NTT】 HDOJ 5279 YJC plays Minecraft
推出公式以后就可以ntt了。。。 #include using namespace std; typedef long long LL; const int mod = 998244353; const int maxn = 700005; LL dp[100005],dp2[100005]; LL a[maxn], b[maxn], c[maxn], xp[maxn]; LL f[100
2015-09-17 18:21:27
500
原创 【矩阵快速幂】 HDOJ 5434 Peace small elephant
对每一列状态压缩,然后矩阵加速即可。。。 #include using namespace std; typedef long long LL; const int mod = 1e9+7; const int maxn = 130; LL mat[maxn][maxn]; LL mid[maxn][maxn]; LL res[maxn][maxn]; int n, m; void ca
2015-09-16 14:04:13
405
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅