现在位置: 首页 > 算法 > 文章
2019年04月11日 算法 ⁄ 共 1541字 评论关闭
学长的代码  当模板使了 这个hash是这么算得: 所以字符串第几位到第几位可以通过公式求出来 其中x就是seed 本代码为  13331 代码中的buf就是seed的i次方 #include <cstring> #include <cstdio> #include <algorithm> #include <set> #include <map> #define REP(i,a,b) for(int i=a;i<b;i++) #define RREP(i,a,b) for(int i=a;i>b;i--) #define lson num<<1 #define rson num&...
阅读全文
2019年04月11日 算法 ⁄ 共 1155字 评论关闭
Longest Common Substring 坑死了   p什么的np什么的q什么的nq什么的 -  - 都注意了构造还是写错了TAT 利用后缀自动机的性质:能接受所有子串 也就是说能接受的就一定是该串的子串 失配时要沿父亲走  原理同AC自动机 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int NODE = 250010<<1,CH = 26,root=1; int ch[NODE][CH],val[NODE],par[NODE],sz,last; ...
阅读全文
2019年04月11日 算法 ⁄ 共 1045字 评论关闭
没注意只有一个case   不知道怎么就错了 -  - 带权并查集的"权"表示该节点与爸爸的关系 这题的关系有 0.儿子与爸爸是同类 1.儿子被爸爸是吃   -  - 2.儿子吃爸爸         =  = 为什么权要这样设?待会解释 所以每个节点多一个变量记录权 那两个不是父子关系的点之间的关系怎么表示呢? 为了解决这个问题  我们把每条指向父亲的边都看作向量! eg:假如现在UFS是这样的 (节点,权)  (1,0)->(2,1)->(3,2)->(4,0) 那么可...
阅读全文
2019年04月11日 算法 ⁄ 共 1671字 评论关闭
主席树的应用  若该位置的数出现过就把该版本的之前的位置-1  再把该版本的该位置+1,否则直接+1 查询的时候  有点像zkw线段树那种 -  - (哎呀..遭不住了啊..手真是贱啊..总是写错..花了一个小时debug真是菜啊TAT) #include <cstdio> #include <cstring> #include <algorithm> #define lson st[num].ls #define rson st[num].rs using namespace std; const int MAXN = 30100; struct node { int ls,...
阅读全文
2019年04月09日 算法 ⁄ 共 2249字 评论关闭
粗心了点,就一个强连通缩点,忘了出栈后要标记,找了一天的bug,,, 题意有点难懂,飞鼠想给大家发礼物,收到礼物后大家给飞鼠的满足程度都已数量化。每个人都住一个房间,房间之间的路是单向的,飞鼠可以选任一个点为起点,路可以重复走,房间不能重复访问,但可以经过而不访问。现在问飞鼠得到的满足程度最大会是多少?,有负值,,如果图不形成环,直接求就可以,看了样例可能形成环,所以用Tarjan缩点,,, #inclu...
阅读全文
2019年04月05日 算法 ⁄ 共 1230字 评论关闭
windy数的定义: 相邻两数位之间的差不小于2. 这个定义表明windy数的一部分一也是windy数. 较长的windy数与较短的windy数之间的关系: 当较短的数是windy数时,只要考虑加的那一位和最高位之间的差是否大于1. 最高位. 于是可设计状态: dp[i][j]----有i位的数中,最高位为j的windy数的个数. 状态转移方程: dp[i][j] += dp[i-1][k]( k = 0..9 && |j-k| < 2) 预处理是考虑首位为0的情况的,因为用它的时候它常常不是首位...
阅读全文
2019年04月05日 算法 ⁄ 共 2202字 评论关闭
题意: 给出n个石子,一共m种颜色.问最少去掉几个石子使得同种颜色全连续. 思路见注释. #include <algorithm> #include <cstdio> #include <cstring> using namespace std; const int kMAX=105; /// dp[x][y][z],x指的是[到达第x个石子,包含(意思是参与讨论,并不是说一定留下)第x个石子]的情况下,颜色组合为y(每种颜色占一位), /// 最后一颗石子的颜色为z的最多剩余石子数,因为[第x颗石子去留不一定...
阅读全文
2019年04月02日 算法 ⁄ 共 1479字 评论关闭
题意:在一组数中执行两种操作 "C a b c" means adding c to each of Aa, Aa+1, ... , Ab. -10000 ≤ c ≤ 10000. "Q a b" means querying the sum of Aa, Aa+1, ... , Ab. 思路:很典型的线段树 开始我用普通的线段树做 updata 操作是每一对应的区间都加上w 结果TLE 问了一下zcube 说用什么 线段树遗传(不明白这是个什么??) 上网看了一下别人的解题报告 updata 操作的复杂度太高了(因为我要遍历所有要更新的点 时间复...
阅读全文
2019年04月02日 算法 ⁄ 共 1250字 评论关闭
题意:求一个区间A到B内牛的最大高度差? 思路:又是一道经典的线段树 比前面的两道要简单,没有更新操作 //2416K    1579MS #include <stdio.h> #define M 50005 struct data {     int l,r;     int tall,shor; }line[3*M]; int num[M]; int min (int a,int b) {     return a > b?b:a; } int max (int a,int b) {     return a > b?a:b; } int low,hei; void BuildTree(int left,int right,int u) {     li...
阅读全文
2019年04月02日 算法 ⁄ 共 1891字 评论关闭
题意:bessie 有间旅店有N个房间 每次有一组人来住宿,他们需要连续的房间 。bessie要求你帮他个忙,有以下操作 op a :如果op == 1 表示有a个人要住宿 要求你找出a个连续的房间 起始房间的号数要求最小,如果没有返回0 op a b :op == 2 表示从a号房起有b个人有退房 即 a到a+b-1 的房间将置空。 思路:超经典的线段树 这道题跟上一道Hotel很像,但稍微复杂点。具体见代码说明。 #include <stdio.h> #define M 50050...
阅读全文