- 博客(30)
- 收藏
- 关注
原创 【HNOI 2002】 营业额统计
【题目链接】 点击打开链接【算法】 观察式子 : 最小波动值 = min{|该天营业额 - 之前某天的营业额|} = min{该天营业额 - 该天营业额的前驱,该天营业额的后继 - 该天营业额} 用Splay维护前驱和后继即可 【代码】 ...
2018-02-28 22:32:54 265
原创 【BZOJ 3224】 普通平衡树
【题目链接】 点击打开链接【算法】 本题是Splay模板题,值得一做!【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 100000int N,opt,x;template <typename T> inline void read(T &a...
2018-02-27 20:52:01 185
原创 【NOIP2014】 联合权值
【题目链接】 点击打开链接【算法】 如果(u,v)的距离为2,那么有两种可能 : 1.u和v为祖孙关系 2.u和v为兄弟关系 树形DP即可,详见代码【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 200000...
2018-02-22 15:38:49 221
原创 【NOIP2016】 组合数问题
【题目链接】 点击打开链接【算法】 杨辉三角 + 二维前缀和 O(1)计算答案【代码】 #include<bits/stdc++.h>using namespace std;#define MAXNM 2010int i,j,n,m,tc,k;int s[MAXNM+10][MAXNM+10],c[MAXNM+...
2018-02-22 12:46:34 193
原创 【扬中集训DAY1T1】 微信群
【题目链接】 点击打开链接【算法】 对问题稍加分析后,发现其实要求的就是 : C(N,K) + C(N,K+1) + C(N,K+2) + ... + C(N,N) 因为N最大10^9,K最大10^5,很显然,我们不可能通过暴力或杨辉三角等来解决此题 我们发现 : C(N,K) + C(N,K+1) ...
2018-02-22 12:31:59 465
原创 【Educational Codeforces Round 38 (Rated for Div. 2)】 Problem A-D 题解
【比赛链接】 点击打开链接【题解】Problem A Word Correction【字符串】不用多说了吧,字符串的基本操作Problem B Run for your prize【贪心】我们可以将这个数轴一分为二,小于等于500000的由第一个人领,否则由第二个人领Problem C Constructing tests【贪心】【数学】首先我们发现 : N^2 - (N /...
2018-02-19 18:37:55 226
原创 【TJOI2013】 单词
【题目链接】 点击打开链接【算法】 AC自动机+递推【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 200const int MAXL = 1e6+5;int i,N;int pos[MAXN+10];char s[MAXN+1][MAXL];temp...
2018-02-19 17:38:19 247
原创 【2017省中集训DAY1T1】 小X的质数
【题目链接】 点击打开链接【算法】 如果一个数是小X喜欢的数,那么有两种可能: 1.这个数是质数 2.这个数除以它的最小质因子是一个质数 所以我们可以用线性筛+前缀和的方式预处理,询问的时候O(1)计算就可以了【代码】 #include<bits/stdc++.h>using namesp...
2018-02-15 15:52:59 303
原创 【NOIP16提高组】换教室
【题目链接】 点击打开链接 【算法】 概率DP 先跑一遍floyed,求出每个教室之间的最短路径,存在数组dist[][]中,时间复杂度O(V^3) 设计状态,f[i][j][k]表示当前选到第i个教室,已经选了j个教室,当前这个教室选不选(0..1) 那么,状态转移方程是什么呢? 假设当...
2018-02-15 14:37:09 451
原创 【扬中集训Day6T1】 白日梦
【题目描述】 白日梦(daydream.c/cpp/pas)时间限制: 1 s 空间限制: 256 MB题目描述 SR需要相当大的睡眠量 某日,他做了一个奇怪的梦,他梦见自己成为了怪物猎人,为了狩猎,他要去一个岛上住N+1天(编号为0到N)。这个岛位于太平洋中心,每天要么是晴天,要么刮台风。他到达岛的第0天是晴天。然后对于第i天,假如是晴天,那么有P(0<p&...
2018-02-14 22:28:19 347
原创 【POJ 1061】 青蛙的约会
【题目链接】 点击打开链接【算法】 列出同余方程,然后用exgcd求解【代码】 #include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>#include ...
2018-02-14 20:58:54 317
原创 【扬中集训DAY5T1】 交换矩阵
【题目链接】 点击打开链接【算法】 链表,对于每个点,存它的上,下,左,右分别是谁【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 1000struct node { int val; node *l,*r,*u,*d; } mat[MAXN+10]...
2018-02-14 16:11:33 387
原创 【USACO】 Balanced Photo
【题目链接】 点击打开链接【算法】 树状数组【代码】 #include<bits/stdc++.h>using namespace std;int i,N,ans,l1,l2;int c[100005],val[100005],id[100005];template <typename T> void read...
2018-02-14 15:58:12 214
原创 【USACO】 Balanced Lineup
【题目链接】 点击打开链接【算法】 这是一道经典的最值查询(RMQ)问题。 我们首先想到线段树。但有没有更快的方法呢?对于这类问题,我们可以用ST表(稀疏表)算法求解。 稀疏表算法。其实也是一种动态规划的算法。是先做一遍预处理,然后O(1)求出答案。 设计状态 : f[i][j] 表示从第i个数开始连续2^j...
2018-02-14 15:54:26 221
原创 【USACO】The Cow Prom
【题目链接】 点击打开链接【算法】 tarjan求强连通分量【代码】 #include<bits/stdc++.h>#define MAXN 20005using namespace std; int i,N,M,u,v,id,cnt;int dfn[MAXN],low[MAXN],vis[MAXN];vector<in...
2018-02-14 15:24:41 281
原创 【USACO】 奶牛政坛
【题目链接】 点击打开链接【算法】 tarjan算法求LCA【代码】 #include<bits/stdc++.h>#define MAXN 200010#pragma GOC optimize("O2")using namespace std;int n,k,i,p,fa,q;int a[MAXN],visit[MAXN],p...
2018-02-14 15:05:23 315
原创 【USACO】 Max Flow
【题目链接】 点击打开链接【算法】 LCA + 树上差分【代码】 #include<bits/stdc++.h>using namespace std;int i,x,y,N,K,l,maxn;int anc[50010][50],d[50010],sum[50010];vector<int> E[50010];v...
2018-02-14 14:59:35 256
原创 【扬中集训DAY2T2】 机智的AmyZhi
【题目链接】 点击打开链接【算法】 据说标算是暴力? 从N-200开始搜 不过我用了搜索+一些奇怪的剪枝,也A了....【代码】 标程 #include<bits/stdc++.h>#define ll long longusing namespace std;ll n,cases;bool ...
2018-02-14 14:20:24 287
原创 【扬中集训 DAY4T3】holiday
【题目链接】 点击打开链接【算法】 建C棵线段树即可,注意要用前缀和优化【代码】 这是标程 #include <bits/stdc++.h>using namespace std;const int MAXR = 50005, MAXC = 17, MAXN = 4 * MAXR + 10;int R, C, Q;i...
2018-02-14 13:12:55 184
原创 【扬中集训 DAY4T1】跳马
【题目链接】 点击打开链接【算法】 数据范围很大,显然暴力是不能通过的 我们可以先打表,发现答案为 : 41 109 205 325 473 649 853 1085 1345 观察数列的差 68 116 120 148 176.... 发现数列的差的差在第5项后每次差28,因此我们推出公式 ...
2018-02-12 18:44:35 201
原创 【USACO 2006 November Gold】Corn Fields
【题目链接】 点击打开链接【算法】 状压DP【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 12#define MOD 100000000int M,N,i,j,k,ans,state;int ST[MAXN+1][(1<<12)+1],f[MAXN...
2018-02-12 18:09:43 396
原创 【ZJOI 2008】树的统计
【题目链接】 点击打开链接【算法】 树链剖分模板题【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 30000struct SegmentTree { int l,r,maxn,sum; } tree[MAXN*3];int i,N,Q,u,v...
2018-02-12 17:37:22 215
原创 【NOI 2015】软件包管理器
【题目链接】 点击打开链接【算法】 树链剖分,子树的DFS序也是连续的一段 要注意细节!【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 100000struct SegmentTree { int l,r,sum[2],opt; } tr...
2018-02-12 17:32:37 268
原创 【hdu 5418】 Victor and world
【题目链接】 点击打开链接【算法】 状压DP f[i][S]表示走的最后一步在i,状态为S 于是我们可以用最短路径 + 状压DP解决此题,由于不存在负边,所以可以用dijkstra+堆优化【代码】 #include<bits/stdc++.h>using namespace std;#define MA...
2018-02-12 11:51:47 224
原创 【hdu 4374】One Hundred Layer
【题目链接】 点击打开链接【算法】 不难看出,这题可以用动态规划来解决 f[i][j]表示第i行第j列能够取得的最大分数 则如果向右走,状态转移方程为f[i][j]=max{f[i-1][k]+a[i][k]+a[i][k+1]+...+a[i][j]}(i-T<=k<=j) 如果向左走,则状态转移方程...
2018-02-12 08:58:53 295
原创 【hdu 2222】Keywords Search
【题目链接】 点击打开链接【算法】 此题是AC自动机模板题 AC自动机是很神奇的算法,简单点来说,就是在一棵字典树上进行KMP,它的应用范围很广,非常实用 这篇博客写得很好,推荐阅读 : http://blog.csdn.net/creatorx/article/details/71100840【代码】 个人觉得我的代码还是写得不错...
2018-02-11 23:13:18 175
原创 线性筛选素数
【题目链接】点击打开链接【算法】线性筛模板【代码】#include<bits/stdc++.h>using namespace std;#define MAXQ 10000#define MAXN 20000010typedef long long ll;ll Q,x;bool NotPrime[MAXN+10];vector<ll> p;inline ...
2018-02-03 14:09:06 256
原创 【SOUTH CENTRAL USA 1998】 eight
【题目链接】点击打开链接【算法】这是经典的八数码问题,据说此题不做人生不完整这里笔者用的是双向广搜,由于细节较多,笔者花了3h才通过此题【代码】#include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>#inc...
2018-02-03 14:03:42 470
原创 【USACO】Dining
【题目链接】【JZXX】点击打开链接【caioj】点击打开链接【算法】拆点+网络流【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1000int i,tot,N,F,D,sf,sd,ans,x;int U[MAXN*5],V[MAXN*5],W[MAXN*5],Head[MAXN*5], Next[M...
2018-02-03 13:57:39 260
原创 【USACO】Optimal Milking
题目链接 : 【POJ】点击打开链接 【caioj】点击打开链接算法 :1:跑一遍弗洛伊德,求出点与点之间的最短路径2:二分答案,二分”最大值最小“3.1:建边,将原点与每头奶牛连边,流量为1,记dist[i][j]为i到j的最短路径,若dist[i][j]<=mid (K+1<=i<=K+C,1<=j<=K),则将i与j连边,流量为M,将每台...
2018-02-02 13:03:27 447
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人