关闭

HDU 4421 2-SAT

题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4421 按照题目所示的转移方式,问是否存在一个a数组可以转译成b矩阵。思路:因为都是位运算,b[x][y]只会由两个bool变量影响,其实只要将每个数字按位拆开来进行2-SAT即可。#include using namespace std; const...
阅读(23) 评论(0)

Gym 101201B dp

题意:题目链接:http://codeforces.com/gym/101201/attachments 给出一个迷宫,以及一串上下左右的指令,机器人需要按照指令前进,问最少添加以及删除多少指令可以令机器人顺利从起点走到终点。如果机器人顺着指令遇到障碍或者边界,那么自动忽略这条指令留在原地。思路:好题。 dp[i][x][y]表示在前i个指令完成之后,机器人处于(x,y)的最少增加删除代价。...
阅读(28) 评论(0)

Gym 101201F 2-SAT

题意:题目链接:http://codeforces.com/gym/101201/attachments 给出一个方格,其中若干点上有灯,每盏灯可以选择在一行或者一列照亮以自己为中心长度为2*r+1的区间,但是要让同一行之间以及同一列之间的灯不能有照亮的重叠区域,问是否可行。思路:每盏灯有两种选择,2-SAT裸题。代码:#include using namespac...
阅读(36) 评论(0)

HDU 5361 最短路+并查集优化

题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5361 有n个点,每个点有一个可以到达点的范围[l,r],传送一次距离为c,问从点1到所有点的最短距离是多少。思路:注意到从点1开始,如果利用优先队列选出将要到达的最近的点,那么每个点最多只需要更新一次,如果用传统的最短路,会浪费大量的时间在扫描那些已经更新过的点上,因此需要利用并查集...
阅读(27) 评论(0)

UVA 11987 并查集(虚拟节点)

题意:题目链接:https://vjudge.net/problem/UVA-11987 对集合三种操作,一种合并,一种求集合元素个数和总和,另一种是将其中一个集合的元素移动到另一个集合,输出询问个数和总和。思路:并查集,主要是转移这个操作,如果单纯将pa[x]=Find(y),那么以x为祖先的结点都会被转移,因此这里需要为每个集合设置虚拟节点,所有集合的根一定都是虚拟节点,所有操作也都针对虚拟节...
阅读(34) 评论(0)

Gym 101490K dp

题意:题目链接:https://vjudge.net/problem/Gym-101490K 一个环上有L个点,每个两个相邻的点相距1个单位,现在要在这些点上插旗子,要求长度为S的区间内至少要有一个旗子,问方案数。思路:dp[x]表示长度为x的区间,首尾位置都插旗的合法方案数。 很显然dp[i]=dp[i-1]+dp[i-2]+…+dp[i-s]; 至于环如何处理,首先取一个任意的起点,然后枚...
阅读(24) 评论(0)

HDU 5618 CDQ分治(三维偏序)

题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5618 给出n个有序对(a,,b,c),对于每个(ai,bi,ci)找到满足aj <=ai,bj<=bi,cj<=ci的有序对有多少个。思路:典型的三维偏序问题,可以用CDQ分治来解决。 首先将有序对按照a的大小排序,这样对区间[L,R)进行分治的时候就可以默认左半部分[L,M)的a...
阅读(34) 评论(0)

HDU 5649 线段树+二分

题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5649 n个数的排列,两种操作,一种将[L,R]区间内的数递减排序,另一种将[L,R]中的数递增排序,问最后第k个位置的数字是多少。思路:好题。 因为最后考虑的只是第k个位置的数字,二分答案。 每次将序列中比x大的都标记为1,其余包括x标记为0,每次排序前,先查询区间中有多少个1和...
阅读(41) 评论(0)

HDU 4605 主席树

题意:题目链接:http://acm.split.hdu.edu.cn/submit.php?pid=4605 一棵二叉树,根节点为1,每个节点都有一个权值,给出q个询问,每次询问给出v和x,问数字x从根节点落下,到节点v的概率是多少。 其中数x假如到达一个节点u: 1. 如果x==w[u],则x留在该节点。 2. 如果x>w[u],则x有1/8概率往左子树走,有7/8概率往右子树走。 3...
阅读(54) 评论(0)

HDU 5919 主席树

题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5919 给出n个数字,q个询问,询问在[L,R]区间内,如果有k个不同的数字,那么第(k+1)/2个数字第一次出现的下标是多少。思路:一开始以为和spoj的那题一样,只要主席树计算区间种类数,然后二分即可,但是一直T。 其实不用二分,如果按照计算种类数的方式建立可持久化线段树,那么每...
阅读(183) 评论(0)

SPOJ DQUERY 离线树状数组or主席树

题意:题目链接:http://acm.sdibt.edu.cn:8080/vjudge/problem/viewProblem.action?id=13725 给出n个数,问区间[L,R]中有多少不同的数。思路:经典题。 可以离线+树状数组,离线保存查询,按照r排序,用last数组保存每个数最接近当前询问r的位置。 也可以主席树,从右到左建树,pos保存每个数字的当前最左位置,每次在新版本的线...
阅读(33) 评论(0)

HDU 4417 主席树

题意:题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4417 给出n个数和m个询问,询问区间[L,R]中小于等于k的数有多少。思路:常见的主席树思路; 但是在处理区间[L,R]的离散化时没有考了离散之后L大于R的情况,结果一直莫名其妙MLE了很久。代码:#include using namespace s...
阅读(95) 评论(0)

HDU 3943 二分+数位dp

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3943 在区间[P,Q]中找到第k大的数位上还有x个4以及y个7的数。思路:二分+数位dp。代码:#include using namespace std; typedef long long LL;LL p, q, x, y, k; int a[25]; LL d...
阅读(54) 评论(0)

hihocoder 1259 推公式+数位dp(非dfs写法)

题意:题目链接:http://hihocoder.com/problemset/problem/1259?sid=1199888 给出f(x)的定义,给出n和k,求f(1)~f(n)中模k==(0~k-1)的个数的异或和。思路:首先推公式,可以得到f(2n)=f(n)*3,f(2n+1)=f(2n)+1; 根据公式,写几个例子可以发现,对于一个数,比如5,二进制形式(101),可以发现f(5)=...
阅读(45) 评论(0)

HDU 5896 CDQ分治+NTT

题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5829 求n个点能构成的有环图的数目。思路:母题是HDU 5552:http://blog.csdn.net/Bahuia/article/details/78109301 两题思路一致,只是改变了所求结果,推导发生变化。代码:#include using nam...
阅读(39) 评论(0)
258条 共18页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:34355次
    • 积分:2799
    • 等级:
    • 排名:第13381名
    • 原创:255篇
    • 转载:3篇
    • 译文:0篇
    • 评论:13条
    最新评论