UVA 11261(递推+找规律)

题意:一个n*n的棋盘中放置m个点,每个点会占用所在的两条斜对角线,问最后有多少个格子没有被占用 题解:按从左上往右下(id = n+x-y)对角线pos, 从右上往左下(id = x+y-1) 对角线neg分成两部分,dp[i]表示第i条neg对角线没有被占用的格子数,然后根据pos找规律递推...

2018-03-28 22:47:38

阅读数 64

评论数 0

POJ3761 (组合数学)

组合数学真难啊。。预备知识需要的太多了 东拼西凑来学习 证明网上很多,我也是这么学来的 #include <iostream> #include <algorithm> #include &a...

2018-03-27 19:04:07

阅读数 42

评论数 0

UVA10617 (区间dp)

题意:一个串删除一些字母使得剩下的串是回文串,问有多少种方法 题解:直觉就是区间dp吧,状态也肯定是dp[i][j]表示i−j有多少个回文串dp[i][j]表示i−j有多少个回文串dp[i][j] 表示 i-j有多少个回文串 状态转移真的不好想啊= = **枚举删除s[i] 和 s[j] ...

2018-03-26 23:33:33

阅读数 41

评论数 0

UVA1151 (MST + 剪枝)

主要是剪枝不好想吧 先跑一遍原图的MST,那么二进制枚举所有的套餐,相当于加进去一些长度为0的边,那么之前原图跑出选中的边就相当于往后挪了,(克鲁斯卡尔按边权值排序)那么再选n-1条边的时候一定不会选到之前没选到的边(大大剪枝了)那么久一定是在原图MST中的n-1条边选(再怎么样选这n-1条边也...

2018-03-26 21:15:45

阅读数 113

评论数 0

HDU 6034(模拟)

给出n个只包含小写字母的串,分别给其中出现的字母赋值,以26进制赋值(1-25),不同字母只能是不同的值,且不能出现前导0,问所有串所能获得最大权值和 一个O(26*1e6)的复杂度,按位算贡献,把低位的进到高位,然后按高位排序,出现前导零就与他前面一个字母交换权值 (死于前导0去除单个串...

2018-03-26 14:28:53

阅读数 45

评论数 0

UVA1153 (贪心+优先队列)

给出n个任务的执行时间qiqiq_i,截止时间didid_i,在互不交叉的情况下最多能完成几个任务 题解:想复杂了,题目中暗示按d排序,优先队列每次抛出完成时间最长的就可以了 (我当时想着万一抛出两个怎么办,后来想如果队列中较大的q都可以放进去,并且现在的q还小,那么此时的q一定只会使队列中抛...

2018-03-26 11:33:31

阅读数 144

评论数 0

HDU 6033(数学)

这题还是有必要记录一下的 题意:2m−1<=10k2m−1<=10k2^m-1

2018-03-23 14:51:15

阅读数 52

评论数 0

HDU 4734 (数位dp)

又重新学习了一遍数位dp,真的不太熟练 一个是对这个记忆化不太理解 后来看到就是说 假如现在搜3xxx,之前1xxx往后搜的时候3xxx已经搜过了,所以直接可以返回 dp[i][j]表示搜索到第i位总和不超过j的个数 所以最后求的就是dp[pos(b)][f(a)] #include...

2018-03-22 21:33:04

阅读数 41

评论数 0

POJ 2217 (后缀数组+LCP)

要注意最后的空串也要算进去,所以是<=n #include <cstdio> #include <cstring> #include <algorithm&a...

2018-03-20 22:02:03

阅读数 53

评论数 0

后缀数组模板

白书SA模板 int rank[200005],tmp[200005]; bool cmp(int i,int j){ int ri,rj; if(rank[i]!=rank[j]) return rank[i] < rank[j]; r...

2018-03-20 18:54:58

阅读数 87

评论数 0

POJ 3581(后缀数组)

要是用白书的板子 不用离散 要是蓝书的板子的话,因为m不知道上下线,需要离散 对于找一个字典序,只需要是一个串的子串,而不需要完全是一个串的后缀,但也可以用SA做 #include <cstdio> #include <...

2018-03-20 18:52:54

阅读数 59

评论数 0

天梯赛补题 - 树的同构

我居然连这种递归不太会写了 直接暴力ASCII值作为下标开点233 注意0 0的情况 #include <cstdio> #include <cstring> #include &l...

2018-03-19 23:52:38

阅读数 69

评论数 0

天梯赛补题 - 最小生成树的唯一性

跑出最小生成树后,记录MST中的每条边,然后枚举MST中的每条边,再跑n-1次MST,如果新的MST大小和原来的一样并且 MST边数要为n-1,那么则不唯一 #include <cstdio> #include <cstrin...

2018-03-19 20:59:06

阅读数 72

评论数 0

天梯赛补题 - 周游世界(记录路径的最短路)

硬生生被我写出来了, 这个记录路径我绕了半天= =。 #include <cstdio> #include <cstring> #include <algorithm&amp...

2018-03-19 20:25:38

阅读数 65

评论数 0

天梯赛补题 - 家谱处理

这题之前数据结构作业做过,写的好像挺麻烦的,比赛时也没功夫写,今天静下心来倒是想了个不错的方法,无BUG 1A #include <cstdio> #include <cstring> #include ...

2018-03-19 17:13:41

阅读数 91

评论数 1

Uva11468(AC自动机+概率dp)

坑死我了,其实我还是不太懂为什么一定要补上不存在的边? 但是这题的妙处就是可以由fail跑出所有的后缀来 #include <iostream> #include <algorithm> #include ...

2018-03-15 21:17:23

阅读数 123

评论数 0

AC自动机模板

struct Aho{ struct node{ int next[26]; int fail,cnt; }state[maxn]; queue<int> q; int size; ...

2018-03-15 16:12:39

阅读数 44

评论数 0

KMP再学习之模板

char s[maxn]; char p[maxn]; int NEXT[maxn]; void getNext(){ int m = (int)strlen(s); NEXT[0] = -1; int k = -1; for(int i=1; i&...

2018-03-14 21:42:38

阅读数 42

评论数 0

UVA11732(左兄弟右儿子的Trie/Trie)

裸Trie也能过,卡一下内存 #include <iostream> #include <algorithm> #include <queue> #includ...

2018-03-14 20:09:36

阅读数 74

评论数 0

HDU5692(dfs + 线段树)

题解:是个好题,对于经过某一点的最大值,可以将某一点作为根,他的子树中到0的最大值即为解。那么这样,可以用dfs跑出一个序,即当前点到0的值,每个点维护一个L,R区间,那么这个区间的点就是它的子树。对于单点更新一个值,那么就变成区间更新,更新这个点L,R区间所以点的值,对于查询,就是L,R区间中的...

2018-03-13 17:35:09

阅读数 43

评论数 0

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