自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (3)
  • 收藏
  • 关注

原创 数学问题总结(题目合集)

现在主要攻数据结构。把一些简单的很好的数学问题收集一下,之后再补回来。1、2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)K. King's Colors题意:给出一个含有n个节点的树,以及k个颜色,询问有多少种方式正好用k个颜色给树染色,并且任意两个相邻的节点颜色不同。分析:二项式反演,参考htt...

2019-08-27 23:13:20 363

原创 概率期望总结(题目合集)

1、2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018) E - Explosion Exploit(dfs+概率)题意:我方n人,血量已知,对方m人,血量已知。现在有d点伤害,一点一点扣,每次伤害对所有活着的人的概率相同。问d次伤害后对面全死的概率。分析:好题,把概率和dfs结合在了一起,概率题做的少,不...

2019-08-27 20:21:30 535

原创 2019 年百度之星·程序设计大赛 - 初赛四 1006 Totori's Switching Game

题意:判断在一个图(可能有重边,但是没有自环)中是否存在k个生成树,且它们的边互不相同。分析:水题,统计一下每个节点的度,k就是所有节点的最小度。代码:#include<bits/stdc++.h>using namespace std;#define ll long longconst int N = 3e2+5;int t,n,m,k;vector<...

2019-08-25 17:58:45 391

原创 杂好题汇总

1、hdu 6705 path题意:有向图求第k大路径(权值和),每条边可以走无数次。分析:因为k很小,所以应该是预处理出前k大路径,首先想到的是贪心,大致想法是用一个优先队列弹出前k个,无奈后面没想明白,看了题解才恍然大悟。首先把每个点出边按权值排序,每个点权值最小的出边最有可能是前k大,n个点中出边最小的一定是最小的,确定完之后还要考虑这个点和其他点组成路径,要保证最小,只能和这条边的...

2019-08-25 13:48:21 280

原创 后缀数组总结(题目合集)

1、hdu6704 K-th occurrence(主席树+后缀树组)题意:给定串s,q个询问(l,r,k),求子串s[l,r]的第k次出现位置。分析:好题。考虑后缀树组sa的含义,sa数组将后缀排序之后,前缀最相似的必然放在了一起(相邻),如果sa[x]前后能找到和后缀x的最长公共前缀大于等于区间长度的后缀,那么说明有子串重复,我们在sa数组找到满足情况(lcp(i,x)>=le...

2019-08-25 10:36:08 333

原创 codeforces1027D Number Of Permutations(容斥)

题意:n个二维数对(ai,bi),求将n个数对排列之后,ai,bi都不是单调不减的。这样的排列有多少个。分析:简单容斥。答案为总的排列数-(ai单调不减或者bi单调不减的排列数)+(ai,bi都单调不减的排列数)。ai单调不减或者bi单调不减的方案分别排序记录相邻位置相同树的个数就行。考虑如何计算ai、bi都单调不减的排列数。我们就在按a排序的基础上在按b排序,注意要判断整个序列是否满足b不降...

2019-08-24 08:32:51 385 2

原创 Gym .102021 .German Collegiate Programming Contest (GCPC 18)

C .Coolest Ski Route题意:给定带边权有向图,让你找一个最长的链,满足买个点最多遍历一次。分析:记忆化搜索即可。代码(by 胡):#include<bits/stdc++.h>#define ll long long#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#def...

2019-08-22 15:59:57 436

原创 博弈论总结(题目合集)

题意:两个人玩游戏,有 n 块石头,初始坐标为(x,y),一次操作可以将一块石头移动到(x - u,y),(x,y - u)或者(x - u,y - u),坐标为(0,0)的石子不能移动,问先手赢还是输。分析:不是把所有数都变成(0,0)才赢,所以不是nim博弈,转化一下,如果我把一对数变成了(x, x)或(x,0)或(0, x)那我必输,那么我就假设这三种情况不能存在,谁最后无法操作谁输,这...

2019-08-21 14:55:19 2151

原创 最短路总结(题目合集)

1、HDU 6670 Mindis(建图+最短路)题意:Description平面上有 n 个矩形,矩形的边平行于坐标轴,现在度度熊需要操控一名角色从 A 点走到 B 点。该角色可以上下左右移动,在恰被 k 个矩形覆盖的区域,该角色的速率为 k+1 个距离/秒(矩形覆盖区域包括边界)。请求出 A 移动到 B 最快需要多少秒。Input第一行一个整数 T (1≤T≤5) 表示...

2019-08-21 12:37:26 953

原创 线段树总结(题目合集)

1、POJ 3321题意:给出一个苹果树,每个节点一开始都有苹果。C X,如果X点有苹果,则拿掉,如果没有,则新长出一个。Q X,查询X点与它的所有后代分支一共有几个苹果。分析:利用dfs序将子树节点变成连续区间,然后利用线段树进行单点修改、区间求和就好了。注意vector<int> g[N]会超时,改成vector<vector<int> > g就好了...

2019-08-19 10:19:07 1239

原创 Codeforces Round #580 (Div. 2) D Shortest Cycle(最小环)

题意:给你n个数,如果每两个数且(and)不为0,可以连无向边,求最小环。分析:最小环可以利用Floyd来搞,n太大,如果n很小就可以直接搞了,考虑把n缩小,因为最小环是3,所有只要某一位的个数大于等于3,那么肯定结果就是3,由容斥原理(鸽巢定理)可知,当非0的个数大于63*2时,肯定会有一个位的个数大于2,或者直接统计每一位的个数也行,这样就可以把n缩小到100多了,直接跑Floyd就好了。...

2019-08-19 10:11:22 186

原创 2019百度之星初赛第二场 度度熊与运算式1

题意:分析:异或把式子分成了很多块,我们把每一块先贪心相加,如果每一块多一个异或运算,总和-2,也就是说多任意个异或,减少的值都是2的倍数。我们可以从高到低贪心确认每一位能不能为1,能放就打标记,下次就不放了,最后考虑相异或的1的个数的奇偶情况。代码:#include<bits/stdc++.h>using namespace std;#define ll lon...

2019-08-19 10:02:04 375

原创 HDU 6669 Game(模拟)

题意:给出n个区间,初始位置可选,依次到达相应的区间,每次可以移动一格或两格,求最小步数。分析:依次将所有区间取交集,然后就变成了一些不重合的区间,第一次可以选择区间的左端点或者右端点,取最大值,贪心模拟就好了,注意如果连续三个区间递增或者递减、间隔步数为奇数并且区间长度大于0,就可以多走一步,代码细节要注意。代码:#include<bits/stdc++.h>usin...

2019-08-19 09:39:16 398 1

原创 CodeForces 482B. Interesting Array(线段树)

题意:构造出一个序列,满足下面m个要求:每一个要求的组成是l,r,q三个数,表示从a[l]&a[l+1]....&a[r]的值为q,问能不能构造出这样的序列。分析:刚开始还想着建对每一位建立线段树,后面发现直接用异或运算维护一颗线段树就好了。s[i]表示该区间的&的值,先满足所有要求,s[i]|q来满足。最后判断每个s[i]的值是否还为原值,若不是,则无法构造。否则叶子...

2019-08-15 19:14:26 145

原创 Codeforces 61D. Eternal Victory(树的性质)

题意:从起点开始访问所有的节点,要求边权和最小。分析:可以贪心找到规律,除了从起点到终点一条路径,剩余每条边都访问了两次,所以问题变成了寻找从起点开始的最长路径,答案就是边权和*2-最长路径。代码:#include<bits/stdc++.h>using namespace std;#define ll long longconst int N = 1e6+5;i...

2019-08-15 16:22:33 352

原创 Codeforces 864D - Make a Permutation! (贪心)

题意:给一个n,然后给出n个范围在1到n之间的数,问最少改变几个数字才能得到一个完整的从1到n的序列,然后输出这个序列并保证这个序列的字典序最小。分析:改变个数就是1~n没有出现的数的个数。我们记录每个数出现了几次。把没有出现过的数从小到大放到队列里。一个数出现多次,就把它替换掉。同一个数出现有多个位置,则保留一个位置不变化。若这个数没有被保留过,如果小于队列里最顶端的数,这个数就被保留。如...

2019-08-15 16:14:52 154

原创 Codeforces 897C Nephren gives a riddle(递归模拟)

题意:给你一些字符串:A: [What are you doing at the end of the world? Are you busy? Will you save us?]B: [What are you doing while sending "]C: ["? Are you busy? Will you send "]D: ["?](中括号内为给出的字符串,问...

2019-08-15 15:52:12 220

原创 URAL 1486(二维字符串HASH)

题意:给定一个n*m的字符矩阵,问你是否存在两个不重合(可以有交集)的正方形矩阵完全一致, 存在输出正方形的最大边长和两个正方形的左上角坐标,不存在则输出0。分析:二维字符串Hash板子题,二分正方形的长度,然后Hash判断即可。注意进制P和模数M的选择,按照《算法竞赛进阶指南》上的来说,P一般可以选择131或者13331,推荐论文:《Hash在信息学竞赛中的一类应用》。代码:#in...

2019-08-13 16:47:55 163

原创 bzoj2351 Matrix(二维哈希)

题意:Description给定一个M行N列的01矩阵,以及Q个A行B列的01矩阵,你需要求出这Q个矩阵哪些在原矩阵中出现过。所谓01矩阵,就是矩阵中所有元素不是0就是1。Input输入文件的第一行为M、N、A、B,参见题目描述。接下来M行,每行N个字符,非0即1,描述原矩阵。接下来一行为你要处理的询问数Q。接下来Q个矩阵,一共Q*A行,每行B个字符,描述Q个01矩...

2019-08-12 16:06:05 261

原创 poj2893 M*N puzzle (n*m数码问题)

题意:8数码问题的升级,就是通过移动空格(用0代替)使得原来状态变成有序的1234......0,不过,这题是N*M数码。分析:考虑终态,实际就是逆序数为0的状态,然后四种操作方式分为:左右移动,对原序列的逆序数不影响;上下移动,如下:-------------0**********************x-------------x是任意数,现在要把x移上去,那么*******...

2019-08-11 19:36:01 141

原创 CH0503 奇数码问题(数学结论+逆序对)

题意:你一定玩过八数码游戏,它实际上是在一个3*3的网格中进行的,1个空格和1~8这8个数字恰好不重不漏地分布在这3*3的网格中。例如:5 2 81 3 _4 6 7在游戏过程中,可以把空格与其上、下、左、右四个方向之一的数字交换(如果存在)。例如在上例中,空格可与左、上、下面的数字交换,分别变成:5 2 85 2 _5 2 81 _ 3...

2019-08-11 18:51:28 285

原创 poj3784(对顶堆or链表+hash)

题意:给出n个数,求出前i个数的中位数(i<n并且i是奇数)。分析:对顶堆板子题,也可以用链表+hash做,不过比较复杂,详见《算法竞赛进阶指南》P36。代码:#include<stdio.h>#include<queue>using namespace std;int t,n,m,u,mid,cas;/*用最大堆维护比当前中位数小的,用最小...

2019-08-11 18:36:03 264

原创 hdu 6625 three arrays(字典树+贪心)

题意:给你两个长度为n的序列a,b,你可以对a,b任意排序,然后构造一个序列c:ci = ai^bi,使得序列c字典序最小。分析:异或最值问题,立马想到01字典树。这个题和两个数异或最值模板问题差不多,只不过答案由一个数变成了一个序列。依然是采用贪心的策略。分别对a,b数组建两颗字典树,取最长相同前缀即可,每个序列每次取完一个数后在对应的字典树上删除这个数的影响,计个数就行。题解的做法比较复杂...

2019-08-11 10:49:52 173

原创 Z-algorithm(Z-Box)字符串匹配 算法小结

传送门

2019-08-11 08:23:01 201

原创 Codeforces 149E Martian Strings(Z-Box or kmp)

题意:给定一个文本串和多个模式串,问有多少个串能被拆分成恰好两段被匹配到。分析:比较容易想到的一个题,就当练一下Z-Box。对于每一个模式串,将文本串接在模式串后面,处理出新串的z数组。数组pos[i]表示模式串长度为i的前缀最小被匹配到的位置。然后把模式串和文本串分别反过来,再次匹配,匹配到长度为len-i时判断是否合法即可。参考https://blog.csdn.net/szh_0808/a...

2019-08-11 08:21:16 189

原创 Codeforces 631D Messenger(Z-Box or kmp)

题意:给出两个分别为n,m项的字符串,求第二个字符串在第一个中出现几次,字符串按照(li,ci)的形式给出。(如2-a 2-b 1-c 表示aabbc),n,m<=2e5l<=1e6。分析:字符串总长度过长,直接匹配比较困难,可以把一个字符串(li,ci)看成一个字母。容易发现,去掉头尾两个二元组的话,中间那些部分必须完全相等才能匹配。采用如下方式构造新串:将文本串(大串)接在去...

2019-08-11 08:09:48 119

原创 Codeforces 535D Tavas and Malekas(Z-Box or kmp)

题意:给你一个模式串和原串的长度,并且告诉你模式串再原串中出现的位置,求原串有几种可能。分析:预处理出z数组。对于有限制的每一个位置,先判断答案是否可行。有两种可能:这个串和前一个串有重合或没有重合。没有重合我们就默认他可以放在这里。如果有重合怎么办呢?前面的z数组就可以派上用场了。计算出重合的长度吗,如果这段长度的后缀和前缀是完全匹配的,那么就可以,否则就是不合法的。如何找出没有限制的位置来...

2019-08-11 07:32:07 113

原创 Codeforces 126B Password(Z-Box or kmp)

题意:你要在一个串中找到“密码”,密码定义为既是前缀,也是后缀,同时在串中间出现过的子串。分析:字符串匹配经典题,用kmp肯定是可以的,但是最近学了一下Z-Box算法,就练一下,感觉比kmp更好理解,更实用。先预处理处z数组,如何保证前缀也是后缀呢?z[i]==n-i。直观理解上就是以这一位为开始的串有n-i位与前缀相同。就是后缀和前缀相等。那如何保证这一个串在中间也出现过呢?遍历的过程中记录...

2019-08-11 07:07:49 153

原创 Codeforces 432D 完美子串(kmp+dp or 后缀树组)

题意:给出一个字符串,求所有既是前缀串又是后缀串的字符串出现了几次。分析:考察对next数组的理解。参考https://blog.csdn.net/huanghongxun/article/details/53209004、https://blog.csdn.net/hfl030/article/details/79858464、https://www.cnblogs.com/dabai5...

2019-08-11 00:32:43 306

原创 CodeForces 455C

题意:给定N,M和Q,N表示有N个城市,M条已经修好的路,修好的路是不能改变的,然后是Q次操作,操作分为两种,一种是查询城市x所在的联通集合中,最长的路为多长。二是连接两个联通集合,采用联通之后最长路最短的方案。分析:两树合并时,设直径分别为len1,len2,新树直径为max(len1,len2,(len1/2)+(len2/2)+(len1%2)+(len2%2)+1),即两颗旧树的直径,...

2019-08-11 00:21:20 226

原创 CodeForces 926E Merge Equal Elements(思维模拟)

题意:开始有 n个数,然后如果最左边有相同的连续的数x我们要合并,合并之后之前两个数删除然后插入x+1,然后直到不能再合并,下标是左边那个的下标,输出最后结果。分析:暴力模拟就好了,想清楚了,代码贼短,自己写的太sb了。代码:#include <bits/stdc++.h>using namespace std;const int N = 1e6+5;int n,k...

2019-08-11 00:17:43 187

原创 Codeforces 749D Leaving Auction(set+二分)

题意:有几个人在拍卖场竞价,一共有n次喊价,有q个询问,每一个询问有一个num,接下来num个人从这次拍卖中除去,问对于每一个询问减掉num个人后是谁赢了拍卖,最小的价格是多少。分析:完了,水题都做不动了。。。对于每个人用 set(S) 装起来其每次喊价的下标,然后用一个数组order按价格从大到小的顺序将每个人装起来,对于每一个询问,把这num个人丢到另一个 set(s)里面,然后在orde...

2019-08-11 00:11:53 117

原创 2019牛客暑期多校训练营(第二场)H:Second Large Rectangle(dp or 单调栈)

题意:给定一个包含0和1的矩阵,输出矩形内都是1的第二大的矩形的大小。分析:经典题变形而来,详见https://www.cnblogs.com/linkstar/p/6139668.html,dp和单调栈两种解法,对着代码跑一遍更好理解。dp更好理解,复杂度略高。注意第二大不一定是用求最大的方法找到的第二大,也可能是最大的减去一行或者一列的大小。dp代码:#include<bi...

2019-08-10 23:59:21 118

原创 2019牛客暑期多校训练营(第八场)A All-one Matrices

题意:问有多少个全1的子矩形,且该矩形不会被另外一个全1子矩形覆盖。分析:预处理每个1的高度以及每一行的前缀和,枚举每一行 i,单调栈求出每个点 j 以h[i][j](1的高度)为高度的矩形左边界L[j]和右边界R[j],然后枚举每个点,如果sum[i + 1][R[j]] - sum[i + 1][L[j] - 1] != R[j] - L[j] + 1,说明这个矩形下面一排不全是1,不会被覆...

2019-08-10 21:59:44 458

原创 HDU 6567 Cotree 树的重心(树的重心)

题意:给定n的点,n-2条边,也就是给出了两棵树,要求加一条边连接两棵树并使得连接好的这棵树上任意两点距离和最小。分析:树的重心一个很重要的性质就是所有点到当前点的距离和最小。容易(猜)想到连接两棵树的重心就是最优方案。再统计任意点距离和,树形dp就可以解决。开始还想着树的直径的中点,仔细一想发现不对,树的直径的中点和重心的都弄混了。。。代码:待补。...

2019-08-10 20:23:22 183

原创 Codeforces 849 B Tell Your World

题意:告诉你一个长度为n的序列,每位的值代表的就是(i,num[i])这个点,问这些点能不能连成两条平行的直线。分析:通过暴力枚举num[1]-num[0], num[2] - num[1],num[2] - num[0])/2这3种情况,如果能有两个平行的直线那这里面一定是至少有一个是斜率的,然后通过得的斜率求枚举每一个值,看是不是有两个起点。或者考虑每个点和第1个点的斜率,相同的用并查集弄...

2019-08-07 08:17:08 115

原创 HDU 6630 permutation 2(找规律or推公式)

题意:给你n个数 1-n,给你其中两个做第一和最后一个数,相邻两个数的绝对值之差不超过2,将其他数填到序列里面,问有多少种填法。分析:找规律过的,可以抽象成一条链,每次可以往左/右跳一格或者两格,每个点只能跳一次,求x到y的路径数。画一画可以发现如果x左边有数字,那么x把左边访问完再回到x+1的路线只能有一条。访问y右边也同理。如果x左边要访问,访问完以后一定会回x+1,如果y右边有数,要访问...

2019-08-06 14:23:03 225

原创 HDU 6629 string matching(扩展kmp)

题意:给你一个字符串 问从第2位 每一位和字符串相等前缀多长。 (比较多少次 直到完全匹配 或 失败)分析:扩展kmp板子题,注意完全匹配时不需要加一次失败匹配,很久不摸都忘了。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e6 + 10;char...

2019-08-06 14:13:55 155

原创 HDU 6628 permutation 1(暴力)

题意:给你n个数 1到n,问你全排列相邻差字典序第k大的是哪个。分析:数据很小,纯暴力就行。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e6+5;int n,m,t;struct p{ int num[11]; char str[...

2019-08-06 14:08:06 280

原创 HDU 6627 equation(模拟,分类讨论)

题意:给你n个ai和bi,给你C,求解方程:分析:初中数学,分类讨论破除绝对值符号。每两个零点之间的区域都对应一个一元一次方程,把这些零点排序之后可以很容易得到每个区间的方程,每个区间都解一个一元一次方程,然后判断解是否在这个区间内。要特判a=0的情况,注意代码细节(写的很搓代码:#include<bits/stdc++.h>using namespace std;co...

2019-08-06 14:05:16 23213

acm训练体系

acm训练方案,从入门到精通,包括每个阶段该学的知识和对应知识点的题目,题目都是精心筛选过的,质量绝对有保证。

2019-05-07

acm知识思维导图

acm知识图谱,包括了acm竞赛设计的所有数据结构与算法,还有一些技巧和方法。

2019-05-07

音乐播放器

项目功能点: 1.从本地导入歌曲(单个文件导入或者文件夹批量导入)。 2.播放歌曲、暂停、停止、上一首、下一首、删除歌曲。 3.音量调节。 4.音乐进度调节。 5.歌词的展示,可以同步进度条的变化,呈现对应时间的歌词。 6.网上爬取歌词,如果本地存在歌词文件,直接使用本地文件,不存在则从网上爬取。 7.播放MV。 8.音乐分享。 9.音乐评论。 10.音乐收藏。 11.用户歌单。(保存到mysql) 12.后台播放。(隐藏到任务栏) 13.最近播放。 14.任意选择播放模式。(单曲循环、随机播放、列表循环) 15.登录注册。(正则验证)

2017-12-14

空空如也

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

TA关注的人

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