
Codeforces
bestFy
世界上最最最渣的oier.
展开
-
codeforces790A - Bear and Different Names
题面在这里题目大意:就是说有一个长度为n的名字序列,然后告诉你每连续m个里有没有重复的,有重复的就是NO,没有重复就是YES。让你构造一个合法的名字序列。一个简单的贪心思想,前m-1个赋值为1~m-1,每次有重复的就让他等于这m个的第一个,这样就不会对后面有影响。如果没有重复的就再新建一个。/*************************************原创 2017-11-17 20:46:00 · 312 阅读 · 0 评论 -
codeforces786B - Legacy
题面在这里题意:三种操作: 1.给a->b加一条边 2.给a->[b,c]分别加一条权值相同的边 3.给[a,b]->c分别加一条权值相同的边 然后问一个点到其他点的最短路做法:考虑在线段树上加边 一个点对应一个区间,就把那个点和那个区间所对应的线段树节点编号加边 然后线段树上父亲和儿子再分别连一条权值为0的边 然后就可以直接跑最短路了 好妙啊。代码:/***************原创 2018-01-04 08:22:39 · 360 阅读 · 0 评论 -
Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined)
比赛链接qaq这场比赛rating暴涨(小号)A. Perfect Squares题意:求最大的不是完全平方数的数。做法:直接从大到小排序即可。有一个很有趣的东西。。 就是这道题是有负数的,按理来讲是要判一下的因为负数没法sqrt。 但是我没判也可以过。。。 我后来发现cf的评测机好像sqrt一个负数会返回-2147483647,然后-21474836原创 2018-01-22 00:41:49 · 386 阅读 · 0 评论 -
codeforces724G - Xor-matic Number of the Graph
题意:一个无向图,边上有边权。定义一条路的价值为这条路径上边权的异或和,两个点之间的价值为它们所有路径不同价值的和,整个图的价值为所有点对价值的和。 求整个图的价值。做法:首先考虑对于树的做法:记点i到根路径的异或和为f[i],则点对u,v路径的异或和就是f[u]^f[v]. n^2做法就直接枚举任意两点。 考虑“异或”的套路:由于每一位互不干扰,我们可以按位处理。 对原创 2018-01-15 14:03:38 · 328 阅读 · 0 评论 -
Educational Codeforces Round 36
比赛链接小号打了一场E round,被连hack两道= =A. Garden题意:给n个数和一个m,问n个数中能整除m的并且商最小的那个商是多少。做法:傻逼题。代码:#include#include#include#include#include#include#includeusing namespace std;const原创 2018-01-16 12:45:18 · 425 阅读 · 0 评论 -
codeforces3B - Lorry
题面在这里题意:有一些物品,体积为1或2,每个物品有一个价值。 现在总共只能放体积为m的物品,问最大的价值。做法:显然是贪心。 先说两个正常一点的策略。 1.你先能取多少2就取多少2,然后再把一些价值大一些的1两个一组和2换。 2.直接枚举取多少个2计算一下。然后来说我的策略QAQ。 首先按照单位价值排序,即你把体积为1的价值×2,然后按照新的价值排序。 然原创 2018-01-10 11:35:21 · 334 阅读 · 0 评论 -
codeforces730F - Ber Patio
题面在这里题意:你要按顺序买n" role="presentation" style="position: relative;">nnn个物品,每个物品的花费分别为a1...an" role="presentation" style="position: relative;">a1...ana1...ana_1...a_n。初始时有一张价值为b" role="presentation" s原创 2018-02-02 22:01:25 · 358 阅读 · 0 评论 -
Codeforces Round #457 (Div. 2)
比赛链接这次还好unrated掉了qaq。。 否则我不是掉分掉到罗马尼亚去了= =A. Jamie and Alarm Snooze题意:一个时刻表示为ab:cd。(24小时制) 有一个单位时间x,每次可以把时间向前推x分钟。 假如某个时刻的表示ab:cd中abcd有一个=7,就是幸运的。 问最少向前推几个x分钟,可以使时刻变成幸运的。做法:简单模拟。原创 2018-01-20 15:00:22 · 432 阅读 · 0 评论 -
Codeforces Round #471 (Div. 2)
比赛链接QAQ终于补完了这场的题。。感觉后面几题还都挺好的就写个(非常)简略的总结叭。A. Feed the cat简单贪心+模拟。#include<bits/stdc++.h>#define rep(i,x,y) for (int i=(x); i<=(y); i++)#define ll long longusing namespace std;...原创 2018-03-27 23:23:41 · 505 阅读 · 0 评论 -
codeforces865D - Buy Low Sell High
题面在这里题意:有n天,每天有股票,价格不全相同。 现在每天你可以选择买进一只股票,卖出一只股票,或什么也不做。 卖出一定要在有股票的前提下。 问最多可以收益多少。做法:你要卖出肯定是之前买的价钱要小于卖出的价钱。 于是我们可以把价钱都扔到一个小根堆里。每次假如当前的钱大于堆顶,就把堆顶弹出,答案减去堆顶,加上当前的钱数,代表买了之前那天的股票,在今天卖出。 并且,你要把这天的钱数x pu原创 2018-01-03 18:04:36 · 402 阅读 · 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 评论 -
codeforces790B - Bear and Tree Jumps
题面在这里题目大意:有一棵树,在树上每一步 可以跳k条边。设f(s, t)表示从s到t的最小步数。求所有点对的f值之和。先考虑k = 1的情况,那么就是求树上任意两点的距离之和,相当于求每一条边被经过的次数,答案应该就是任意一条边左右两边点数的乘积之和。然后如果k != 1,那么在一条路径长度不被k整除的时候就会出现问题,因为有一个余数,这个余数我们需要再走一步。处理这原创 2017-11-17 21:58:02 · 396 阅读 · 0 评论 -
Codeforces round #446 (div2)
比赛链接(恩。。。noip后第一场cf,被虐地好惨啊。主要是T2打错了一个字母找了1h...居然只降了1分我感到很欣慰。。)言归正传qwq.原创 2017-11-18 10:04:00 · 318 阅读 · 0 评论 -
codeforces841E - On the Bench
题面在这里 题目大意: 给一个长度为n序列,n 做法: 很巧妙的DP+组合计数。 需要将数字分组。我们考虑将所有数字去掉平方因子后的数(相当于一个数开根号化成最简根式后根号里的数)相同的分到一组。 这个其实等价于,将所有数分解质因数后质因子的指数奇偶性相同的分到一组。 还等价于,两两之间相乘会变成平方数的分成一组。(额说到这了才是重点咳咳咳。。之前的帮助理解) 于是将问题转化为,原创 2017-12-06 11:39:22 · 360 阅读 · 0 评论 -
codeforces834D - The Bakery
题面在这里题目大意:给一个长度为n的序列(n DP+线段树。先设方程:f[i][j][k]表示前i个数,分成j个连续子序列,最后一个序列从k开始的最大价值和。两个转移:① 第i个和最后一个序列合并。如果k~i-1之间没有出现a[i],那么f[i][j][k] = f[i-1][j][k]+1.② 第i个作为新的一个序列的开始。在f[i-1][j-1][p]原创 2017-12-02 00:13:18 · 419 阅读 · 0 评论 -
codeforces911F - Tree Destruction
题面在这里题意:给一棵树,执行n次操作,每次操作流程如下: 1. 选两个叶子节点 2. 将答案加上这两个节点的距离 3. 删去任意一个节点要求最后答案最大。 问最大的答案以及构造出操作步骤。做法:一个简单的想法就是找一个深度最深的叶子,去更新别的叶子。 我们来看具体的情况。假设是下面这张图。红色的点就是深度最深的点,绿色是深度次深的点,且他们是处在根的不同儿子所在的子树。 于是对于最右边原创 2017-12-30 02:30:14 · 496 阅读 · 0 评论 -
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 评论 -
Educational Codeforces Round 35
比赛链接呐,这次打得还不错的样子...A. Nearest Minimums题意:给一个序列,要你找出最小的数的最近距离是多少。做法:傻逼题。模拟。代码:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int N =原创 2018-01-01 00:29:16 · 348 阅读 · 0 评论 -
Codeforces Round #454 (Div. 2)
这是一场打得很一般的比赛qwq 但是还是记一下吧。。 顺便膜一下cqz大佬打到rk4….比赛链接A. Masha and Bears题意:给出a,b,c,x,要求A,B,C,满足: a<=A<=2a b<=B<=2b c<=C<=2c x<=C<=2x 2x做法:直接暴力枚举吧。代码:#include<cstdio>#include<cstring>#include<iostrea原创 2017-12-27 13:12:46 · 257 阅读 · 0 评论 -
Codeforces Round #480 (Div. 2)
比赛链接彻底沦为要么过不掉pp要么就FST的智障选手。A. Links and Pearls看余数是否为0即可。#include&lt;bits/stdc++.h&gt;#define rep(i,x,y) for (int i=(x); i&lt;=(y); i++)#define per(i,x,y) for (int i=(x); i&gt;=(y); i--)#d...原创 2018-05-09 21:23:23 · 445 阅读 · 1 评论