自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Pengwill's Blog

一百年太短,只争朝夕

  • 博客(501)
  • 资源 (2)
  • 收藏
  • 关注

原创 【滚动训练】BZOJ.1003 [ZJOI2006]物流运输(最短路+区间DP)

题意物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够按时到达目的地。但是修改路线是—件十分麻烦的事情,会带来额外的成本。因此物流公司希望能够订一个n天的运输计划,使得...

2018-07-06 13:54:10 179

原创 【滚动训练】Vijos1514 天才的记忆 (分块/RMQ)

题意询问区间最大值题解RMQ问题,使用ST表或者分块。 分块居然比ST表跑的还快你敢信。代码ST表#include <cstdio>#include <algorithm>#define rep(i,a,b) for (int i = a; i<=b; ++i)using namespace std;const int n...

2018-07-05 13:31:24 284

原创 【滚动训练】LOJ 6280. 数列分块入门 4(分块)

题意给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法,区间求和。题解维护两个标记,一个是区间和,一个是tag表示该区间总共打了多少加法。代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int nmax = 5e4 + 100;const int I...

2018-07-05 12:14:05 247

原创 POJ2104 K-th Number(主席树)

题意给出n个数字的数组,和m个询问,每次询问区间[l,r][l,r][l,r]中第KKK大的数是多少。题解主席树经典的例题,详解参见主席树快速入门。 注意需要离散化就好了。代码#include<cstdio>#include<algorithm>#include<vector>#include<cstring>u...

2018-07-05 00:24:03 178

原创 【算法学习】主席树入门

主席树入门原理主席树入门主席树,也叫做可持久化线段树,准确来说,应该叫做可持久化权值线段树,因为其中的每一颗树都是一颗权值线段树。所谓权值线段树,就是指线段树的叶子节点保存的是当前值的个数。这样说起来比较抽象,下面用具体例子来简单阐述。如有数列:2 1 2 5 1 1 1 3,不难统计出,数列中数字1出现了4次,数字2出现了2次,数字3、数字5都出现了1次,对于这...

2018-07-04 23:30:03 20619 9

原创 【滚动训练】LOJ6279. 数列分块入门 3 (分块)

题意给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法,询问区间内小于某个值 x 的前驱(比其小的最大元素)。题解这道题和数列分块入门2很类似,因为要询问区间小于x的前驱,暴力查找肯定是不行的。自然想到如果区间内是有序的话,就可以在块内二分了。维护有序可以套用上一题的方案,即块内暴力更新的时候sort,或者是使用set自动维护有序。方案一 块内sort每次对暴力更新的...

2018-07-04 21:30:47 346

原创 【算法学习】字符串Hash进阶

这回主要看看出题人卡Hash的心机,图片均转载自Hash更进一步(Hash字符串——BDKRHash)。

2018-07-03 21:42:27 342

原创 【滚动训练】JOYOI 1068 STR (基于Hash+二分的LCP求法)

题意给你两个串A,B,可以得到从A的任意位开始的子串和B匹配的长度。 给定K个询问,对于每个询问给定一个x,求出匹配长度恰为x的位置有多少个。 N,M,K<=200000 题解KMP是正解,这里就用Hash+二分水一下,复杂度nlognnlognnlogn。 具体做法如下: 首先将A、B两个串全部用同一种Hash方法进行Hash,然后需要统计匹配iii个字符有多少种情况。...

2018-07-03 21:37:49 365

原创 【算法学习】分块算法入门

分块算法入门如何写分块(一)维护内容每一块的个数块的总数目块的左右端点位置每个元素所属于的块号完整代码如何写分块(二)思维的转换如何训练分块算法入门所谓分块算法,就是讲一个序列分成若干块,维护块内的信息。为了保证一定的时间复杂度,所以对于一个nnn个元素组成的数组,将其分为n−−√n\sqrt{n}块,每块也有n−−√n\sqrt{n}个元素...

2018-07-03 16:45:33 7562 3

原创 【滚动训练】 LOJ 6278. 数列分块入门 2 (分块)

题意给出一个长为 n 的数列,以及 n 个操作,操作涉及区间加法,询问区间内小于某个值 x 的元素个数。题解分块由于每块内有n−−√n\sqrt{n}个元素,在暴力的程度上保证了复杂度。于是我们主要考虑的是如何维护块内信息。 根据分块入门 1的经验,需要一个tag来标记对整个块进行的操作和为多少。由于这道题要进行计数,于是问题就转换成如何快速统计区间的数目问题。方案一...

2018-07-03 14:38:25 559

原创 LOJ 6277. 数列分块入门 1 (分块)

题意给出一个长为 nnn 的数列,以及 nnn 个操作,操作涉及区间加法,单点查值。题解分块,每次更新的话对块两侧不完整的地方暴力更新,对完整的块内部分打标记,查询时直接返回数据值和标记部分的值即可。代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int nma...

2018-07-03 01:35:35 228

原创 HDU - 4300 Clairewd’s message (字符串Hash)

题解给定两个字符串,第一个字符串为字符串的转换规则,(如第二个例子,当第二个字符串中出现q字符后,就要把它变为a字符,即q对应a,w对应b)。第二个字符串,前一部分为密文,就是需要你按照转换规则,转换的字符串,后一部分为原文。但是原文的长度不知道,也可能原文给的不全,但是密文是完整的。需要你补全第二个字符串。求出最短的字符串。易知如果存在密文和明文对应,密文长度一定大于等于明文长度,并...

2018-07-02 18:41:59 224

原创 HDU - 4821 String (字符串Hash)

题解给出M和L,和一个字符串S。要求找出S的子串中长度为L*M,并且可以分成M段,每段长L,并且M段都不相同的子串个数。 用字符串Hash来做,但是也不能太暴力。 如果我们枚举每个可能的子串,然后检查,这样复杂度近似于|s|2|s|2|s|^2,肯定是会T的。要想办法进行优化。 易知,每个子串的长度一定是L∗ML∗ML*M的,按照朴素的方法,从SSS开始,依次向右移动1个单位,成为新的子...

2018-07-02 17:15:02 271

原创 HDU - 1880 魔咒词典 (字符串Hash)

题解对前半部分和后半部分分别Hash,然后查询即可,用map保存hash值及其对应关系。 注意这题直接map < string,string > 会MLE。在尝试过程中,可以用到的Hash值有,unsigned int 自然溢出,或者是 201326611、100663319,1e9+7,1e9+9代码unsigned int 自然溢出#include<...

2018-07-02 15:09:03 318

原创 【算法学习】字符串Hash入门

字符串Hash入门Hash方法自然溢出方法Hash公式单Hash方法Hash公式举例双Hash方法Hash公式获取子串的Hash例子公式字符串Hash的应用字符串Hash入门字符串Hash可以通俗的理解为,把一个字符串转换为一个整数。如果我们通过某种方法,将字符串转换为一个整数,就可以便的确定某个字符串是否重复出现过,这是最简单...

2018-07-02 01:41:35 23151 18

原创 2018分组赛Round2 (To be continue)

A CodeForces-618C题解按照点坐标排序,选取两个点,枚举另一个点就可以。需要判断是否3点共线,用到向量的叉积。代码#include<bits/stdc++.h>using namespace std;const int nmax = 1e5 + 100;const int INF = 0x3f3f3f3f;typedef long lon...

2018-07-01 18:19:30 155

原创 2018分组赛Round1 (To be continue)

A AtCoder 3952题解计算前缀和,然后搞一下就出来了。代码#include<bits/stdc++.h>using namespace std;const int nmax = 2e5+10;const int INF = 0x3f3f3f3f;typedef long long ll;typedef double db;map<...

2018-07-01 18:01:55 429

原创 Educational Codeforces Round 45

A Commentary Boxes算一下两个数,取最小的#include<bits/stdc++.h>using namespace std;const int nmax = 1e6 ;const int INF = 0x3f3f3f3f;typedef long long ll;typedef double db;ll n,m;ll a,b;int ma...

2018-06-11 20:32:39 190

原创 解决CodeBlocks无法自动补全的问题

在Deepin下安装的CB,输入printf、scanf的时候不会自动补全,这样就很难受。 解决办法是在Setting -> Editor -> Syntax highlighting -> Key Words ,找一个空的集合,比如集合4,把下面的内容复制进去STANDARD_LIBRARY_NAMES abort ios_base accumulate isalph...

2018-06-09 18:12:30 7436 2

原创 AtCoder Regular Contest 098 D Xor Sum2

AtCoder Regular Contest 098 D Xor Sum2题意分析给出一个序列A1…AnA1…AnA_1 \dots A_n求其中有多少对<l,r><l,r> 满足Al xorAl+1 …xorAr=∑rlAiAl xorAl+1 …xorAr=∑lrAiA_l \ xor A_{l+1} \ \do...

2018-06-06 21:39:44 227 4

原创 HDU1251 统计难题(字典树)

题意分析用字典树,保存前缀个数,每次插入的时候加一。查询时直接查询到待查询前缀的最后一个字母,如果为前缀,那么一定保存过,否则肯定没保存过,答案就为0.每次查询是可以认为每次插入和查询都是O(len(str))的,因为每次查询只需要沿着字典树走下来就好了。需要注意的是内存开销。 题目没说总共有多少个待查询子串,一开始一直超时,我以为是写挂了。 假设要插入nnn个串,串最长为lenmax...

2018-05-24 13:06:53 184

原创 Uva 11911 Easy Problem from Rujia Liu? (unordered_map)

据说unordered_map跑得快,就试了试。 可能数据比较水,没展示出来#include <bits/stdc++.h>#define rep(i, a, b) for (int i = a; i <= b; ++i)using namespace std;const int nmax = 1e6 + 10;const int INF = 0x3f3f3f3...

2018-05-23 23:45:04 169

原创 LA4329 PingPong (树状数组)

题意分析用树状数组写了一遍哈 常数小不少,线段树400ms,树状数组100ms代码总览#include <bits/stdc++.h>#define mem(x,y) memset (x,y,sizeof x)#define rep(i,a,b) for (int i = a; i<=b; ++i)using namespace std;const ...

2018-05-23 22:50:44 149

原创 LA4329 PingPong (线段树)

题意分析Fenwick Tree 就是树状数组,名字花里胡哨的。 我用的线段树,常数大一点。这道题和逆序对的思路很相似。 首先可以想到的是,如果枚举两个人,然后算中间有几个裁判,不行。枚举两个人也要O(n2)O(n2)O(n^2),自然想到要枚举裁判。 如果要枚举裁判的话,其实就是求左边比裁判小,右边比裁判大,或者左边比裁判大,右边比裁判小的人数。 然后算个乘法求和即可。 自然就会...

2018-05-23 22:27:48 173

原创 POJ3264 Balanced Lineup (RMQST)

题意分析给出一个序列,询问区间[L,R]中最大值减最小值的差。 ST表代码总览#include <cstdio>#include <algorithm>#define rep(i,a,b) for (int i = a; i<=b; ++i)using namespace std;const int nmax = 5e4 + 100;con...

2018-05-23 18:09:11 109

原创 【算法学习】RMQST算法入门

RMQRMQ问题是区间最值问题(Range Maximum / Minimum Query),即给出一个数组A1…AnA1…AnA_1 \dots A_n,给出一个询问区间l,rl,rl,r,求出[Al,Ar][Al,Ar][A_l,A_r]的区间最值。 最暴力的做法肯定是循环,这样显然不够优秀,求解区间最值的问题,可以借助线段树。在询问只是询问时复杂度多一个log。对于没有修改操作的区间最...

2018-05-23 16:39:01 260

原创 Uva 11235 Frequent Values (RMQ ST)

代码总览#include <bits/stdc++.h>#define rep(i,a,b) for (int i = a; i<=b; ++i)using namespace std;const int nmax = 1e5 + 10;const int INF = 0x3f3f3f3f;typedef long long ll;typedef double...

2018-05-23 16:06:52 114

原创 JoyOI1027 木瓜地 (贪心)

代码#include <bits/stdc++.h>#define rep(i,a,b) for (int i = a; i<=b; ++i)using namespace std;const int nmax = 50;const int INF = 0x3f3f3f3f;typedef long long ll;typedef double db;int...

2018-05-23 13:08:04 502

原创 UVA1218 Perfect Service (树形dp)

题意分析状态设计dp[rt][0]dp[rt][0]dp[rt][0] 表示本节点是服务器 dp[rt][1]dp[rt][1]dp[rt][1] 表示本节点不是服务器,其父亲节点时服务器 dp[rt][2]dp[rt][2]dp[rt][2] 表示本节点不是,其父节点也不是,而其子节点有一个是服务器状态转移方程dp[rt][0]=∑min(dp[v][0],dp[v][1...

2018-05-23 09:52:00 155

原创 UVA12186 Another Crisis (树形dp)

题意分析对于每个儿子计算一个比例,然后依次向上合并答案 注意比例是直接下属的比例代码总览#include <bits/stdc++.h>#define rep(i, a, b) for (int i = a; i <= b; ++i)using namespace std;const int nmax = 1e6 + 10;const int INF = 0...

2018-05-23 09:45:52 171

原创 BZOJ 1192 [HNOI2006]鬼谷子的钱袋 (数学)

题意分析上去直接考虑一个数的二进制表示 答案 为 log2n + 1#include <bits/stdc++.h>#define rep(i,a,b) for (int i = a; i<=b; ++i)using namespace std;const int nmax = 1e6 + 10;const int INF = 0x3f3f3f3f;typed...

2018-05-22 12:36:08 233

原创 BZOJ 1303 [CQOI2009]中位数图 (数学)

题意分析比kkk小权值为-1,比kkk大权值为1。 以kkk为中心,向左向右算个前缀和,统计一下个数,统计时别忘了shift。 然后从左查询,右区间查询为0的即可。代码总览#include <bits/stdc++.h>#define rep(i,a,b) for (int i = a; i<=b; ++i)using namespace std;con...

2018-05-22 11:39:37 133

原创 AtCoder Beginner Contest 097

A#include "bits/stdc++.h"using namespace std;const int nmax = 1e6 + 10;const int INF = 0x3f3f3f3f;typedef long long ll;typedef double db;int a,b,c,d;int main() { scanf("%d %d %d %d",&am...

2018-05-21 18:27:19 243

原创 BZOJ [ZJOI2007]矩阵游戏 (二分图匹配)

#include <bits/stdc++.h>using namespace std;const int nmax = 250;const int INF = 0x3f3f3f3f;typedef long long ll;typedef double db;int t, n, cy[nmax];bool mp[nmax][nmax];bool visit[nmax]...

2018-05-20 23:27:17 126

原创 洛谷P2015 苹果二叉树(树形dp)

题意分析给出一个N个点的二叉树,树上有边权,求留下Q个树枝能够获得的最大收益为多少。dp[i][j]dp[i][j]dp[i][j]表示在以iii为根的节点,留下jjj个分支,的最大收益值。设uuu为当前遍历到的根节点,vvv为访问的子节点,e[i].we[i].we[i].w当前边的边权。则状态转移方程如下: dp[u][j]=max(dp[u][j],dp[u][j−k]+dp[...

2018-05-18 23:01:56 421

原创 BZOJ1191 超级英雄Hero 二分图匹配

题意分析直接二分图匹配就好了代码总览#include<bits/stdc++.h>using namespace std;const int nmax = 1000 + 10;const int INF = 0x3f3f3f3f;bool mp[nmax][nmax];bool visit[nmax];int cx[nmax], cy[nmax];in...

2018-05-04 22:31:41 175

原创 Codevs 4093 EZ的间谍网络 (Tarjan求强连通分量)

题意分析首先分析,题目中可能出现一群间谍处于一个强连通分量中。也就是说,间谍了解到的信息成一个强连通分量,我们只要掌握其中的一个间谍,就可以在知道这个强连通分量中的所有间谍信息。这样的话,获得这个强连通分量的最小代价,就是其中最小的间谍了。所以,为了处理这样的强连通分量,首先用tarjan进行缩点。 然后我们考虑不能获得全部间谍信息的情况。 也就是说存在一个间谍的信息不能被获取。 什么...

2018-05-03 22:10:49 182

原创 BZOJ1051 [HAOI2006]受欢迎的牛(Tarjan求强连通分量)

题意分析首先我们用Tarjan算法对强连通分量进行缩点,缩点其实就是对每个强连通分量进行染色,求得他们每个节点的染色编号。 这道题其实不用重新建图,原因在于,对于缩完点后的图,题目要求统计,其实就是所有的点都能够走到的点其对应强连通分量中点的个数。 然而关键就在于如何算出所有点都能走到呢,答案也很简单,这个点的出度一定为0。 那么是否有可能多个点出度为0呢,也是有可能的,但是这就不符合题...

2018-05-02 22:44:14 138

原创 Vijos1022 Victoria的舞会2 (Tarjan强连通分量)

题意分析裸题,输出scc的个数代码总览#include <bits/stdc++.h>using namespace std;const int nmax = 1e5 +10;const int INF = 0x3f3f3f3f;int low[nmax];int dfn[nmax];int sstack[nmax];int head[nmax];i...

2018-05-02 22:36:28 173

原创 Helvetic Coding Contest 2018 (EAZY)

A1 Death Stars (easy)旋转、水平垂直翻转,枚举之后判断一下就可以了#include<iostream>using namespace std;int n;bool match(int ma[10][10], int mb[10][10]){ bool t= true; for (int i=0;i<n;++i) ...

2018-05-01 13:57:04 210

algebra_2005_2006.zip

algebra_2005_2006数据集,常作为知识追踪的使用数据。KDD Cup 2010: Educational Data Mining Challenge使用的数据集之一。

2020-04-11

Dynamic Graph Algorithms

Dynamic Graph Algorithms Methodology & State of the Art Algorithmic Techniques & Experimen Conclusions

2018-08-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除