
codeforces
Jiahe Xu
为何要去攀登珠穆朗玛峰,因为她就在那里啊.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
cf678E. Another Sith Tournament
题目大意:有n个选手,给你每个选手战胜另一个选手的概率。赛事为擂台战,选手1很特殊,他可以调换选手的出场顺序,使得自己的胜率最大,求1的胜率。n题解:如果由初始状态往后递推明显是不行的,因为1可以改变出场顺序状态递推太过困难(选手比赛并不是随机的),我们可以从最终状态开始倒着递推,即确定1必胜,其余状态倒着递推,最后得到都是在1必胜的前提下,dp[I][J](i为擂主,选手状态为j)的概率。原创 2016-08-17 10:28:08 · 607 阅读 · 0 评论 -
codeforces 713D 二维ST表维护最大值
题意:给一个01表格 多次询问某矩形范围内全是1的正方形的边长是多少。题解:dp[0][0][i][j]表示以i,j为右下角,最大的正方形的边长。dp[k][t][i][j] 表示以i,j为左下角,x方向上边长为1#include #include #include using namespace std;int n,m,dp[10][10][1010][1010];int原创 2016-10-31 21:20:34 · 925 阅读 · 0 评论 -
706D. Vasiliy's Multiset
题目大意:给一个可以有相同数字的set 可以增减元素,询问每次提供一个x,y为set中的元素。z=max{max{y},max{y^x} } 求z的值。题解:按位枚举,在第i位时得到与x第i位XOR位1的数(0 or 1) 然后查询set中符合条件的元素。由于中途得到的ans一定会#include #include #include #include using namespa原创 2016-08-13 14:46:25 · 404 阅读 · 0 评论 -
codeforces710F AC自动机
题意:维护一个字符串集合,支持插入一个串,删除一个串,询问集合中的串在给出的串中出现多少次,一个串出现多次算多次。并且不会有两次插入的串相同。强制在线。考虑没有删除的情况,将插入串的个数二进制拆分,对于每2k 个串维护一个ac自动机。 这样共有log个ac自动机 。插入时如果当前ac自动机中串的个数和上一个个数相同,那么合并两个自动机。每个字符串只会被合并log 次。有删除原创 2016-11-17 14:06:34 · 462 阅读 · 0 评论 -
codeforces 713C dp+离散
题意:给你一个整数序列,可以给一个数+1或-1 代价都是1 问最少操作多少次使序列严格递增。题解:dp+离散 类似于poj3666 只不过原序列a[i]=a[i]-i然而感觉最终每个数都是原序列中的数,这个结论感觉好魔幻。。。。。。然后YY了一个比较有道理的推论方法:假如当前序列到i都是递增的 在第i~j个数不再递增,那么第i~j最优整合方案就是向i~j的中位数靠拢,由于中位数一定是原原创 2016-10-31 21:13:15 · 1137 阅读 · 0 评论 -
704B - Ant Man
题目大意:给你n个点的横坐标,及其相应的4个相关值。给定起点和终点,可以任意跳跃,要求每个点只能走一次,并且从起点走到终点。求消耗的最小值。由两种消耗|xi - xj| + ci + bj if j i|xi - xj| + di + aj otherwise (j > i)范围:5000个点题解:由于考虑顺序的话复杂度太大而且无法有效地控制终点位置。所以可以把此题原创 2016-08-14 10:03:36 · 686 阅读 · 0 评论 -
706C. Hard problem
题目很明显有无后向性 所以直接dp[i][j] j=0 or 1 代表第i个串翻转没有 字符串比较可以直接用string 由于太简单就不贴码了原创 2016-08-13 15:00:41 · 350 阅读 · 0 评论 -
hdu5862Counting Intersections 扫描线+线段树
题目大意:给你n个平行于坐标轴的线段,求其交点数,n题解:首先将线段离散化。 然后将所有线段按照横坐标的顺序,按照先插入再查找再删除的顺序进行操作。对于横线 如果是左端点,则将其纵坐标加1,右端点则减1,对于竖线直接求和就行了。(线段树点要开多#include #include #include #include #include using namespace std;#原创 2016-08-19 15:17:24 · 457 阅读 · 0 评论 -
CF702E - Analysis of Pathes in Functional Graph
题目大意:给你一个图n个点n个边(有向),每个边长度为1,上面有一个数字。给你一个K 对每个点询问距离为k的路径中 所有数的和,以及所有路径中最小的数。n题解:由于k很大,很明显得倍增,于是直接用RMQ就好了。#include using namespace std;#define sint long longconst int maxn = 1e5+5;int f[maxn][42原创 2016-08-18 11:42:58 · 597 阅读 · 0 评论 -
CF703D. Mishka and Interesting sum
题目大意:给一个长度为n的序列,m次询问,询问为区间中所有出现了偶数次的数的异或和。题解:由于区间的异或和剩下的是出现奇数次的数,每次询问的答案即为 x^y x=区间内所有出现了的数的异或和 y=区间内出现了奇数次的数的异或和.如果在线询问的话x不好维护。所以离线处理,如果这个数出现过就抹去之前出现的点,保证每个数只出现一次。#include #include #include #原创 2016-08-17 15:50:31 · 477 阅读 · 0 评论 -
codeforces 791D 树形dp 所有点对
题意:20w个点的树,边长都为1,每个点可以往距离不超过k题解:树形dp,A#include using namespace std;typedef long long int ll;ll dp[250000][5];vectorg[250000];int k;ll dists[220000],ans,sons[220000];void dfs(int x,int fa){原创 2017-03-24 21:28:15 · 769 阅读 · 0 评论