![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
解题报告
文章平均质量分 78
zjunzhao
这个作者很懒,什么都没留下…
展开
-
【题解】codeforces766D Mahmoud and a Dictionary
题目链接题意:有n个单词,给定m个关系,每个关系要么表示单词a与单词b相同,要么表示单词a与单词b相反。并且“相同”与“相反”有性质:若a与b相同,b与c相同,则a与c相同(从而单词的相同关系是等价关系);若a与b相反,b与c相反,则a与c相同。按顺序判断这m个关系是否可以成立,若可以成立,则加上这个关系,否则忽略。再给定q个询问,每个询问 查询单词a与单词b的关系(相同、相反或未知)。分原创 2017-02-08 16:41:45 · 982 阅读 · 0 评论 -
【题解】codeforces765F Souvenirs
题目链接题意:给定一个长度为n的数组与m个查询。第i个查询要求输出数组下标区间[li,ri]内的数之间的距离(差的绝对值)的最小值。分析:离线处理查询。将查询区间按右端点从小到大排序,维护一个数据结构,使得将数组元素a1,a2,...,ai插入到数据结构之后能够快速查询以ai为右端点的查询区间的答案。考虑ai对查询区间的贡献,设d=|ai-aj|(j 若暴力处理ai对查询原创 2017-02-27 11:40:53 · 626 阅读 · 0 评论 -
【题解】dutoj1082 埃蒙的时空航道
题目链接题意:略(原题的描述已经很简练了)。分析:可以想到这样一个网络流模型:对星球i,源点s连边至点i,容量为pi,点i连边至汇点t,容量为si,点i连边至点i+1、...、点n,容量均为c。则最大流即为答案。由于n的规模比较大,所以直接求解这个网络流模型是不现实的。考虑该最大流模型的最小割模型,由于问题比较特殊,所以可以贪心求解。每个st-割都会将点集分成2个不相交的集合,一个集合含源原创 2017-03-09 20:29:23 · 513 阅读 · 0 评论 -
【题解】dutoj1081 Prufer 序列
题目链接题意:略(原题的描述已经很简练了)。分析:首先需要知道的是一个prufer序列和一棵标号树是一一对应的,所以不会有S=0的情况。一个标号在prufer序列中没出现,当且仅当该标号对应的点在prufer序列对应的树中为叶结点。对图G,设其不同的生成树有cnt棵,令ans=cnt*n*(n+1)/2。考虑点u对ans的负贡献,即计算以u为叶结点的生成树的个数,设为cntu,则ans=a原创 2017-03-09 20:58:38 · 557 阅读 · 0 评论 -
【题解】codeforces778C Peterson Polyglot
题目链接题意:给定一棵trie树,可以删除一层边,再将父边被删且父亲相同的结点对应的子树合并得到一棵新trie树,求新trie树的最小结点数。分析:启发式合并。在合并结点u的子树时,选择将小子树合并到大子树里,这样总的合并的时间复杂度是O(nlgn)的。 证明:合并的耗时来自于对小子树的遍历。设全体小子树的遍历总量为T,考虑每个结点u对T的贡献。设结点u可以作为小子树的第原创 2017-03-06 22:36:13 · 996 阅读 · 0 评论 -
【题解】codeforces741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
题目链接题意:给定一棵有根树,结点编号为1~n,根结点为结点1。每条边上有一个字母,求各子树内最长的满足“路径上的字母经过重排后可以构成回文串”的简单路径。分析:对结点u,用2进制数vec[u]表示结点u到根结点的路径上各字母的数目的奇偶性。若第i个字母数目为奇数则vec[u]的第i位为1,否则为0。子树u内满足要求的路径可以分成两类,一类经过结点u,一类不经过结点u。由于不经过结点u的路原创 2017-03-29 18:53:31 · 1312 阅读 · 0 评论 -
【题解】codeforces786A Berzerk
题目链接题意:n个点围成一个圈,按顺时针编号为1~n。在某个点上会有一个物品C,初始位置范围是2~n。2个人A、B进行博弈,每个人都有一个数集,数集内的数x满足1≤x≤n-1。A、B轮流进行操作,每轮的操作者可以从自己的数集中选出一个数x,然后把物品C顺时针向后移动x个点。先把物品C移动到点1的人获胜。A、B都采取最优策略使得自己胜利,若无法胜利就采取最优策略使自己不败(即平局)。问A、B分别原创 2017-03-30 18:12:27 · 909 阅读 · 0 评论 -
【题解】codeforces786B Legacy
题目链接题意:给定一个n个点m条带权值的“边”的有向图,其中“边”分为3类。第1类“边”是点u到点v的边,第2类“边”是点u到区间[l,r]中的点的边(即r-l+1条边),第3类“边”是区间[l,r]中的点到点u的边。求以点s为源点的最短路。分析:和atcoder2336类似。考虑给图加一些辅助点和边。对第2类“边”按如下方式处理:对点集[1,n]建立一棵线段树,线段[l,r]维护dis[原创 2017-03-31 22:04:28 · 1193 阅读 · 0 评论 -
【题解】codeforces786C Till I Collapse
题目链接题意:给定一个长度为n的数组(数组元素∈{1,2,...,n}),对k∈{1,2,…,n},求最小的ans[k],使得数组可以分为连续的ans[k]段,每段内不相同的元素个数都不超过k。分析:为了使ans[k]最小,我们可以贪心地来分段,即对起点l,取最大的r,使得a[l],...,a[r]中不相同的元素个数不超过k。可以来估计一下总段数(即ans[1]+...+ans[n])的上原创 2017-04-01 21:37:04 · 928 阅读 · 0 评论 -
【题解】codeforces792E Colored Balls
题目链接题意:给定n个正整数a[1],...,a[n],现在要将每个正整数拆成若干个小正整数的和,使得任意2个小正整数的差不超过1(即取一个正整数k,将a[1],...,a[n]拆成若干个k 与 若干个k+1)。求使得小正整数总数最少的方案,输出该方案下的小正整数总数。分析:假如我们知道最优的情况下小正整数的值应为k和k+1,那么我们很容易在O(n)的时间复杂度内求出这种情况下拆分得到的最原创 2017-04-03 18:08:49 · 616 阅读 · 0 评论 -
【题解】codeforces776E The Holmes Children
题目链接题意:定义函数f(n),f(1)=1,f(n)=|{(x,y)|x+y=n,x≥1,y≥1,gcd(x,y)=1}|(n>1)。定义函数g(n),g(n)=Σf(n/d)(求和对n的全体约数d进行)。递归地定义函数F_k(n),F_1(n)=f(g(n)),F_k(n)=g(F_k-1(n))(k>1且k为偶数),F_k(n)=f(F_k-1(n))(k>1且k为奇数)。求F_k(n)原创 2017-02-24 22:50:00 · 394 阅读 · 0 评论 -
【题解】codeforces776D The Door Problem
题目链接题意:有n扇门,每扇门的状态为开(0)或闭(1)。有m种操作,每种操作可以改变若干扇门的状态。每扇门恰好可以被两种不同的操作改变状态。给出n扇门的初始状态,问是否可以经过操作把所有的门的状态都改为闭?分析:设可改变第i扇门的2个操作为ai和bi。若第i扇门的状态为开,则ai和bi操作恰好只能执行一个;若第i扇门的状态为闭,则ai和bi操作要么都不执行要么都执行。由此原问题转化为2-原创 2017-02-24 22:39:39 · 556 阅读 · 0 评论 -
【题解】atcoder2303 Boxes
题目链接题意:给定n个非负整数a1,a2,...,an,进行操作。每次操作可以选定一个位置i,然后将a(i+j)减去j(当i+j>n时将a(i+j-n)减去j)。问能否经过有限次操作把所有数都变成0。分析:设对位置i操作了xi次,则可以得到如下方程组 n*x1+(n-1)*x2+(n-2)*x3+...+1*xn=a1 1*x1+n*x2+(n-1)*x原创 2017-02-09 09:26:18 · 775 阅读 · 0 评论 -
【题解】玲珑学院oj1092 Fate Dog
题目链接题意:给定n个元素,第i个元素有属性a[i],b[i],c[i],p[i]。求满足(a[i]+b[j]+c[k])(1+p[i]/100)≥H的有序点对(i,j,k)(i、j、k互不相等)的数目。分析:不等式(a[i]+b[j]+c[k])(1+p[i]/100)≥H可变形为b[j]+c[k]≥100*H/(100+p[i])-a[i],故可枚举i,对每个i求满足b[j]+c[k]原创 2017-02-18 15:36:03 · 804 阅读 · 0 评论 -
【题解】atcoder2234 Menagerie
题目链接题意:有n只动物围成一个圈,每只动物要么是羊要么是狼,羊总说真话,狼总说假话。给定一个字符串P,字符串的第i个字符为'o'代表第i只动物认为与它相邻的2只动物是同类,字符串的第i个字符为'x'代表第i只动物认为与它相邻的2只动物是异类。问是否存在一种动物的排列方案使得以上假设成立(羊总说真话,狼总说假话),若存在,给出一种方案。分析:可以发现,当第1只与第2只动物的类别确定之后,就原创 2017-02-18 22:27:57 · 559 阅读 · 0 评论 -
【题解】atcoder2336 Flags
题目链接题意:给定n个数对(xi,yi),从每个数对中选出一个数,使得得到的n个数之间的最小距离最大。求最大的最小距离。分析:二分最大的最小距离mid。当选出某个数x后,对于数对(xi,yi),若|x-xi|代码#includeusing namespace std;const int maxn=4e5;struct node{ int x,i; bool operat原创 2017-02-19 23:31:41 · 556 阅读 · 0 评论 -
【题解】codeforces766E Mahmoud and a xor trip
题目链接题意:给定一棵树,树的每个点有点权,定义2个点u和v之间的距离为u到v的路径上的点的点权的异或和。求全体点对(u,v):1分析:考虑按位处理距离和。设有ans[i]个点对的距离的第i位为1,则距离和=ans[0]*2^0+ans[1]*2^1+...+ans[20]*2^20。从而问题转化为点权为0或1的情况。对于转化后的问题,我是用树分治处理的:对于子树u的所有点对路径,要么原创 2017-02-08 13:46:36 · 736 阅读 · 0 评论 -
【题解】codeforces441E Valera and Number
题目链接题意:给定整数x、k和概率值p,对x进行k次随机操作,每次操作有p概率对x乘2,有1-p概率对x加1。求操作结束后,得到的数的二进制表示末尾的连续的0的数目的期望。分析:设f[i][S][k]为第i次操作后得到的数的二进制0~8位为S且第8位起向后与第8位相等的数位数为k的概率。转移枚举第i次状态为(S,k)时的操作,计算对第i+1次状态为(newS,newk)的贡献即可。代码原创 2017-02-10 16:35:17 · 589 阅读 · 0 评论 -
【题解】玲珑学院oj1089 Place the Tiles
题目链接题意:用1×2的骨牌来铺带障碍格的矩形网格,使得每个网格至多被一张骨牌覆盖且无法再加入骨牌(即没有相邻的未覆盖无障碍网格)。求需要的最少骨牌数。分析:轮廓线dp。每个格子的状态用一个4进制数来表示,0代表未覆盖,1代表已覆盖且由骨牌右端或下端覆盖,2代表已覆盖且由骨牌左端覆盖,3代表已覆盖且由骨牌上端覆盖。转移按如下分类进行: 1.障碍格:将当前格状态改成1原创 2017-02-13 18:57:25 · 324 阅读 · 0 评论 -
【题解】玲珑学院oj1088 Red Packets
题目链接题意:给定n个元素,每个元素有费用a和价值b两个属性。可以从n个元素中选取连续的若干个,满足这连续的若干个元素中除去至多m个元素之外的其他元素的费用和不超过k, 这么做可以获得的价值定义为这连续的若干个元素的价值和。求能够获得的最大价值。分析:滑动窗口。设选取的元素下标集为区间[l,r],只需对每个l求出最大的满足条件的r即可。用两个堆维护判断,一个小根堆用于存储不需要付费的元素,原创 2017-02-13 22:28:17 · 437 阅读 · 0 评论 -
【题解】玲珑学院oj1087 Alice and Bob
题目链接题意:给定一棵满二叉树,每个点有一个权值。两人轮流操作,每次操作可以选一个点u,将点u的权值减小x,0分析:将叶子节点所在的层定义为第1层,向上层数递增。 记sg为奇数层节点权值的异或和。则先手必胜当且仅当sg≠0。 证明思路:1.sg≠0的状态可经过一次操作到达sg=0的状态。 2.sg原创 2017-02-14 21:36:18 · 509 阅读 · 0 评论 -
【题解】AtCoder Grand Contest 016
A:Shrinking题意:规定一种对字符串的操作:设字符串长度为N,一次操作之后可以得到一个长度为N-1的字符串,新字符串的第i个字符等于旧字符串的第i个字符或第i+1个字符。给定一个长度为n的字符串,问最少进行几次操作可以得到一个只含有一种字符的字符串。分析:假如我们要将字符串最终变为"aa...a",首先原字符串中必须得有字符a。设原字符串中字符a的位置从小到大依次为x1,x2,..原创 2017-06-20 13:57:20 · 972 阅读 · 0 评论