自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 HDU - 5792 树状数组 + 离散化

题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5792 对于给出的数组A,求有多少个四元组< a,b,c,d >,满足a < b,c < d且A[a] < A[b]&&A[c] > A[d],其中a,b,c,d要两两不同。思路:离散化,然后树状数组统计正序对和逆序对,相乘的总和减掉其中有重复的即可。代码:#include <bits

2017-04-26 15:10:00 336

原创 HDU - 5791 dp

题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5791 求两个序列有多少对公共子序列。思路:dp[I][j]表示序列a第I个之前以及序列b第j个之前的有多少对公共子序列。状态转移的时候要减去重复的。代码:#include <bits/stdc++.h>using namespace std;typedef long long L

2017-04-24 21:17:13 319

原创 The 2016 ACM-ICPC Asia China-Final Contest H题 数学 + 思维

题意:题目链接:http://codeforces.com/gym/101194/attachments 给出一个n*m的格子的棋盘,要求在其中每个格子填上一个范围是[1,k]的数,若一个格子里的数比所在行和所在列的其他数都要大,那么这个格子就是个特殊格子,现在要求如下表达式的值: 其中Ag表示能在棋盘中构造出恰好g个特殊格子的方案数。思路:其实就是算贡献,题目没有说要求Ag,就不要钻牛角尖

2017-04-22 11:00:58 1232

原创 51Nod - 1522 区间dp

题意:题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1522思路:很好的区间dp。 从1开始填起,两个1能存在的位置分别是1和2,1和2*n,2*n-1和2*n。根据每种不同的填法,就可以得到不同区间,这时候问题就变成了在下一个区间从2开始填起。 可以发现对于一个区间[l,r],当前要填x,我们有三种填当前

2017-04-19 19:31:07 397

原创 CF - 749D 二分 + 思维

题意:给出一串拍卖的出价序列(a,b),其中a是出价人的id,b是出的价格,保证没有任意两个a相同,b也按照从小到大的顺序排列。现在有q个询问,每个询问给出k个id,求在这k个id不存在的情况下,出价最高的id和价格是多少?另外要注意,如果去掉了部分出价之后,如果出现相邻两个出价的a相同,取前一个作为最后结果。思路:最关键的一点是,要想清楚,去掉了一部分人之后,最后出价最高的人就是剩下的人中一开始出

2017-04-18 16:56:01 372

原创 CF 754D 贪心 + 优先队列

题意:给出n个区间,要从中选出k个区间,要满足这k个区间的交区间尽可能的大,输出最大的交区间以及k个所选择的区间。思路:贪心,优先队列,还是想不到。 首先可以确定,如果k个区间有一个公共部分,那么这个公共部分区间的左端点一定是这个k个区间里最靠右的,右端点一定是这k个区间里面最靠左的。如果当前得到的右端点 < 左端点,说明区间不存在。 这样可以利用优先队列,先把区间按照左端点排序,保证后访问的左

2017-04-17 09:52:00 494

原创 HDU - 4912 LCA + 贪心

题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4912 一棵树上有m条链,要求取得最多的链,保证链与链之间的节点没有重复。思路:又get到新套路 对于树上任意两点之间的路径,一定会经过他们之间的LCA。 贪心的思路,很关键的一点要意识到,对于两条链,如果存在重复,应该选择LCA深度较大的,也就是里根越远的。因为深度越小灵活度越小

2017-04-11 16:22:38 651

原创 LCA离线算法学习笔记

算法思想:LCA离线,采用的是递归的tarjan算法,利用了树深度优先遍历的性质可以在一次遍历过程中巧妙的求解出查询的最接近公共祖先,时间复杂度是O(n+q),但前提是需要离线保存所有询问。 算法思路如下: 当前dfs遍历到节点u,先将vis[u]标记成true,然后处理以u为根节点的子树,子树处理完成后,将这棵子树中的所有点的祖先都设成u,这时候处理跟u相关的所有询问(u,v),如果vis[v

2017-04-11 15:11:33 904

原创 HDU - 5145 莫队算法

题意:有n个女生,每个女生都属于一个教室,现在要访问这些女生,就要进入教室,每次进入一个教室只能访问该教室的一个女生,现在要问对于[L,R]之间的女生全部访问,一共有多少种不同的访问教室的方式?思路:仔细想一下,因为最后的方案按照教室的不同来划分,那就与教室内部的女生访问顺序没有关系,那么只要拿所有女生的访问的排列数除以每个教室女生的排列数即可。 区间查询问题,不涉及修改操作,而且区间改变一个单位

2017-04-10 19:44:38 443

原创 UVA - 11475 字符串哈希

题意:给出一个字符串,在末尾补充最少的字母,使其整个成为一个回文串。思路:字符串哈希的巧妙运用,很显然如果是回文串,那么正着哈希和倒着哈希得到的值是一样的。 而通过哈希的数值来进行拼接组合可以节省大量时间。只要枚举位置x, 将[1,x]这段哈希值与求出的总的哈希值拼接,比较正哈希值与倒哈希值是否相同即可 ps:131进制是个好东西。代码:#include <bits/stdc++.h>usi

2017-04-09 16:33:48 405

原创 HDU - 1800 字符串哈希

题意:从n个数中,最少能分出几个单调递增序列。思路:水题。就是找到n个数中出现次数最多的次数。 只是n个数范围有30个十进制位,需要当成字符串处理,这就用到了字符串哈希。代码:#include <bits/stdc++.h>using namespace std;const int MAXN = 3005;const int MOD = 100007;struct Node { No

2017-04-09 15:18:05 736

原创 HDU - 1880 字符串哈希

题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1880 通过咒语查找功能,通过功能查找咒语。思路:字符串哈希模板题代码:#include <bits/stdc++.h>using namespace std;const int MAXN = 210000;const int MOD = 100007;struct Node {

2017-04-09 11:08:47 741

原创 EOJ - 12 2-SAT

题意:题目链接:http://123.57.161.63:8001/problem/12/ 给出一个无向图,每次选择一个点u,将与u相连的边都删去,然后在原先互不相连的u和v之间加上边(u,v)。问最后是否可以构成一个完全图。思路:可以发现每个点最多只会被选择一次,因为选择两次和不选没有区别。 如果将图表示成邻接矩阵,每次选择点x,其实就是将第x行和第x列01反转。那对于矩阵的上的每个点(x,y

2017-04-08 15:34:57 370

原创 EOJ - 13 dfs

题意:经典的数独游戏,6*6的方格中填数字1~9,要保证每行梅列以及2*3的范围内不能存在重复的数,这道题特殊在于有些格子内要填两个数,而且要保证左边的数小于右边的数,任意输出一种方案即可。 方格示意图: 思路:直接dfs爆搜,每次填一个格子就判断是否符合要求,直到填满格子。代码:#include <bits/stdc++.h>using namespace std;int g[10][10]

2017-04-08 12:21:54 271

原创 51Nod - 1559 线段树 + 扫描线

题意:题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1559 波雷卡普有一个n×m大小的棋盘,上面有k个车。他又放了q个矩形在上面。每一个矩形要受到保护。矩形受到保护的意思是对于该矩形内部所有的格子能够被这个矩形内的某个车攻击到或者被占据,和矩形外面的车无关,即矩形外面的车不能攻击到矩形里面。车的位置是固定的

2017-04-07 15:04:15 609 1

原创 51Nod - 1765 期望推导

题意:题目链接:https://www.51nod.com/onlineJudge/submitDetail.html#!judgeId=223971 每次生成一个[0,n)的随机数,如果这个随机数和给出的m个数字中的其中一个数字相等,那么就停止生成随机数,否则继续生成,求出所有生成的数的和的期望。思路:求期望的一种套路,可以列出一个关于期望E的方程,然后求解方程得出E的表达式。 对这道题来说,

2017-04-06 20:00:57 794

原创 hihocoder - 1489 (微软2017笔试A题)概率 + 模拟

题意:题目链接:http://hihocoder.com/problemset/problem/1489?sid=1046718 一个人玩游戏取传奇物品,一开始能取到物品的概率为P%,如果某次取到了物品,取下一个物品时,取到的概率就是[P/2](向下取整),如果某次没有取到,下一次取到的概率就要加上Q%,如果当前概率超过了100%那就算100%,问取得n个物品的期望步数是多少?思路:“没思路”系列

2017-04-01 11:30:02 1323

空空如也

空空如也

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

TA关注的人

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