
构造
bestFy
世界上最最最渣的oier.
展开
-
codeforces487C - Prefix Product Sequence
题面在这里题意:要求构造一个n的排列,使得它的n个前缀积%n刚好是0~n-1的一个排列。做法:若n=1或n=4直接输出构造方案,n=4时是1 3 2 4。 其他时候若n是合数则无解。 否则,我们考虑怎么构造。首先第一个肯定是1,最后一个肯定是n。 然后假如i=2,发现i/(i-1) * (i+1)/i * (i+2)/(i+1) … (i+k)/(i+k-1) = (i+k)/(i-1) =原创 2017-12-26 16:11:58 · 253 阅读 · 0 评论 -
codeforces766E - Mahmoud and a xor trip
题面在这里题意:给一棵树,每个点有点权。 询问任意两点路径上点权的异或和。做法:由于是异或和,可以先枚举每一位,分别DP。 记f[u][0/1]为以u为根的子树中,路径异或值为0/1的点对数量。 ans统计时利用乘法原理。然后要再乘上1<<p1<<p(p是当前的位数)。 推f[]的时候按照当前位的0/1分类讨论一下。代码:/**********************************原创 2018-01-03 15:44:58 · 376 阅读 · 0 评论 -
codeforces865D - Buy Low Sell High
题面在这里题意:有n天,每天有股票,价格不全相同。 现在每天你可以选择买进一只股票,卖出一只股票,或什么也不做。 卖出一定要在有股票的前提下。 问最多可以收益多少。做法:你要卖出肯定是之前买的价钱要小于卖出的价钱。 于是我们可以把价钱都扔到一个小根堆里。每次假如当前的钱大于堆顶,就把堆顶弹出,答案减去堆顶,加上当前的钱数,代表买了之前那天的股票,在今天卖出。 并且,你要把这天的钱数x pu原创 2018-01-03 18:04:36 · 402 阅读 · 0 评论 -
AtCoder Regular Contest 089
比赛链接C - Traveling题意:有一个平面,初始时在(0,0)点。每次可以花一个时间走到上下左右四个方向。 现在给n个询问,每次询问t,x,y,表示在t时刻是否能到达(x,y)这个坐标。可以输出Yes,否则输出No。做法:发现只有两种情况是No:来不及了,时间小于距离。距离与时间的差值是奇数。代码:#include#includ原创 2018-01-22 00:05:34 · 316 阅读 · 0 评论