CF R 632 div2 1333F Kate and imperfection】的更多相关文章

赛后看了半天题 才把题目看懂 英语水平极差. 意思:定义一个集合S的权值为max{gcd(a,b)};且\(a\neq b\) 这个集合可以从1~n中选出一些数字 求出当集合大小为k时的最小价值. 无法二分 考虑构造. 考虑一种简单的情况 1~n的中gcd(a,b)最大为多少 可以发现我们只需要枚举i 看一下i/i的最小质因子的最大值即可. 所以是从质因子分解的层面考虑比较简单. 可以发现 当两个数字质因子集合有包含关系的时候 加入小的那个数到集合S之中一定不会比大的数加入集合S结果更差.(显然…
LINK:Challenges in school №41 考试的时候读错题了+代码UB了 所以wa到自闭 然后放弃治疗. 赛后发现UB的原因是 scanf读int类型的时候 宏定义里面是lld的类型导致UB. 读错题的原因是 太急了 而且题目描述不是很清晰 导致按照自己含糊不清的想法+样例的佐证 成为了另外一个题目. 这道题是要求我们进行构造. 对于一个要求我们每轮都要进行一次扭头 且刚好在k轮都进行完. (这类似于冒泡排序 但是我们不考虑冒泡排序的性质也是可以写的. 考虑 会进行多少次这样的…
LINK:Résumé Review 这道题让我眼前一亮没想到二分这么绝. 由于每个\(b_i\)都是局部的 全局只有一个限制\(\sum_{i=1}^nb_i=k\) 所以dp没有什么用 我们只需要满足他们的累和=k即可. 容易想到每次给b加1带来的贡献是 \(\Delta_x=a_i-3{b_i}^2-3b_i-1\) 开一个堆每次取出最大值 这样显然是最优的. 不过复杂度为klogn k足足有1e14这么大. 一个绝妙的想法 每次增加的值是递减的 那么第k次增加的值也是固定的. 可以进行二…
LINK:Xenia and Colorful Gems 考试的时候没想到一个很好的做法. 赛后也有一个想法. 可以考虑答案的样子 x,y,z 可以发现 一共有 x<=y<=z,z<=y<=z,y<=x<=z... 6种情况 考虑 y<=x<=z 观察这个形式 枚举x 发现y在<=x中显然取较大的那个更优 证明的话 x不变 在z不变的情况 y在符合条件的情况下自然 越小越不优 再讨论z越大的问题 再讨论y z一个变小一个变大的情况 综上可以发现 y z…
LINK:Divisor Paths 考试的时候已经想到结论了 可是质因数分解想法错了 导致自闭. 一张图 一共有D个节点 每个节点x会向y连边 当且仅当y|x,x/y是一个质数. 设f(d)表示d的约数个数 那么x->y的无向边的边权为f(x)-f(y); 每次询问两个点x,y之间的最短路径的条数有多少条,保证x|D,y|D. 不妨假设x>y.当y|x时容易发现y只需要每次在保证次数大于x的质因子上不断将自己本身的一个质数因子去掉即可. 不难发现 此时最短路长度为1 因为不管中间去的方式如何…
LINK:Independent Set 题目定义了 独立集和边诱导子图.然而和题目没有多少关系. 给出一棵树 求\(\sum_{E'\neq \varnothing,E'\subset E}w(G(E'))\) \(w(E)\)表示一张E的独立集的个数.E'为边诱导子图. 在这棵树中 边诱导子图的个数为\(2^{n-1}-1\)除掉空集. 还是利用儿子来表示每一条边选了没有 这样可以实现断边的问题. 所以有由于此时独立集的数量只要在知道集合的最大独立集个数时才能O(1)求出 但是个数有很多 还…
CF Round #580(div2)题解报告 T1 T2 水题,不管 T3 构造题,证明大约感性理解一下 我们想既然存在解 \(|a[n + i] - a[i]| = 1\) 这是必须要满足的 既然这样,那么图必须是这样的 \(-\),是相邻的两个数中的较小的一个,\(+\)是相邻的两个数中较大的 这样分配是肯定有解的 但是当n时偶数的时候,手玩一下就会发现,不可能满足+-交替,所以无解 #include<cstdio> #include<iostream> #include&l…
CF Round 622 div2 A.简单模拟 B.数学 题意: 某人A参加一个比赛,共n人参加,有两轮,给定这两轮的名次x,y,总排名记为两轮排名和x+y,此值越小名次越前,并且对于与A同分者而言,A名次在最末,求A最好名次和最坏名字. 分析: 我们先考虑最坏怎么来 最劣的时候就是尽可能多的人总分与A相同 那么对于和为x+y的有序数对组合有x+y-1个,除去自己就是x+y-2个,而第一名位置是1,所以最劣位置是x+y-1,取min(x+y-1,n)即使最劣位置 而对于最优位置,x+y<=n,…
F. Kate and imperfection 假设一个一个的往集合里面放元素,显然在放某个元素之前,我们不想让它的倍数已经在集合里面.因为在这之前,我们不如先把这个数放进去,再把它的倍数放进去更优(因为它的倍数更容易和别的数字产生更大的gcd). 所以在放元素时,这个元素的所有因数应该已经都在集合中了,对于一个集合,如果对于集合中的所有数字,他们的因数都在该集合中,那么这个集合中某两个数字的最大gcd即为某个数的最大真因子(非本身). 设 \(d[x]\) 为 x 的最大真因数,按照\(d[…
LINK:Kaavi and Magic Spell 一打CF才知道自己原来这么菜 这题完全没想到. 可以发现 如果dp f[i][j]表示前i个字符匹配T的前j个字符的方案数 此时转移变得异常麻烦 状态转移一次变成了O(n). 会超时 而且这个状态的转移也是不正确的 可能当前的S字符串后面放了一些不能匹配的东西 但是此时却体现不出来. 那我们如何描述每次增加一个字符且和T匹配多少这种状态呢. 一个思路 先对于S串的某个i暴力枚举 其对应在T中的位置 这样的话dp就变成了 f[i][j][k]表…
脑洞太大,简单东西就是想复杂,活该一直DIV2; A:水,基本判断A[I]<=A[I-1],ANS++; B:不知道别人怎么做的,我的是100*N*N;没办法想的太多了,忘记是连续的数列 我们枚举公差,找到能有多少就可以了. C:想到MAP,但是前面太脑掺,只有几分钟写.. 不过还真不一定写的出来.. 进来DP感觉良好.. 我们可以发现其实这些的乘积其实比较少.. 然后就像普通数组进行加法一样. #include <cstdlib> #include <cctype> #in…
挺有意思的一道题目.考虑长度为n的数组,重复n次,可以得到n*n的最长上升子序列.同理,也可以得到n*n的最长下降子序列.因此,把t分成prefix(上升子序列) + cycle(one integer repeating) + sufix(下降子序列).当t<=2*n时,暴力解.注意数据范围. /* 583D */ #include <iostream> #include <string> #include <map> #include <queue>…
树形结构,挺有意思的题目.不难. /* 219D */ #include <iostream> #include <string> #include <map> #include <queue> #include <set> #include <stack> #include <vector> #include <deque> #include <algorithm> #include <cs…
我蓝了!蓝了!!!蒟蒻的蓝色.日常点开friend发现竟然没几个人打??然后去div1看了一下果然学长全都去打div1了呜呜呜. 看到了久违的黄大仙,以为他今晚要上grandmaster,结果打完发现他取消注册了... 题外话,div2半小时过完abc,d题推了一个多小时无果,div一千五百人同时在推D题,海上生明月,天涯共此时!(还好我手速快...) 上午考完英语三十个单选一百多个选项单词不认识...后天高数军理大后天大物,这几天暂时不打了.(好像也只有一场div3 A:我感觉我是瞎做的 al…
本来打完就想写的,,奈何舍友要睡了,我开个台灯感觉怪怪的,就没写. A题竟然一开始wa了...后来发现对于c和a还有c和b的关系没有判断,,丢掉了很多罚时. B题我的方法是    计算 sum,然后 分别统计 2.3.4的个数,一个一个试,具体看代码(前面快速io有点长见谅 package R491; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter…
任意门:http://codeforces.com/contest/1114/problem/B B. Yet Another Array Partitioning Task time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output An array bb is called to be a subarray of aa if it f…
https://codeforces.com/contest/1114/problem/D 题目 给一串数字,首先选择一个位置,类似于画图,然后每一轮按照以下步骤: 可以将这个位置所在的连通块改成其他数字 问最少几步可以把所有数字变成一样的 题解 设dp[l][r][0/1]为把[l,r)范围变成和最左侧或最右侧数字一样需要的最少步数, 可以通过数学归纳证明 选择什么数字不重要,即使选择是中间的数字,步数一样不会变小 要注意的是有8种转移 $2\times2+2\times2$ 其中有4种转移肯…
LINK:Not So Simple Polygon Embedding 搞了好久终于搞会了. 错误原因 没找到合适算边长的方法 要么就是边长算的时候算错了. 几何学的太差了 最后虽然把十边形的和六边形的给解出来了 但是还是没有找到一个公式. 一个简单的方法:构建出外接圆 利用余弦定理等等来解三角形即可. 最后容易推出 答案. const db Pi=acos(-1.0); int n,T; int main() { //freopen("1.in","r",std…
LINK:Multiset 主要点一下 二分和树状数组找第k大的做法. 线段树的做法是平凡的 开一个数组实现就能卡过. 考虑如树状数组何找第k大 二分+查询来判定是不优秀的. 考虑树状数组上倍增来做. 考虑从0开始跳 定义跳到的节点为前缀和. 那么不断跳累加权值即可. 第三种做法是二分 (其实我最先想到的是类似的做法. 观察到答案最终只要一个数字 受到第三个样例的启发 考虑维护最大值/最小值. 直接开堆乱搞是不正确的 无法衡量之前是否删除当前的最大值了. 考虑二分这个最大值/最小值 这里以最小值…
LINK:Permutation 休闲一下 开了一道构造题. 看起来毫无头绪 其实仔细观察第二个条件 0<=2k<=n. 容易想到当n是奇数的时候 k的范围更小 再手玩一下第一个条件 容易发现 想要价值 必须使得 后面的式子 正值和负值抵消掉. 这样每次差是偶数倍 所以只需要凑出来k就行了 而后面的式子想刚好抵消掉k如果直接使用两个数字的话构造会略显繁杂. 考虑多个数字抵消 那么容易想到 两个相邻的数字带来的贡献为1 这样使用两个相邻的数字不断构造正数和负数抵消k即可. 刚好这样做 k还是在合…
LINK:Perfect Triples 初看这道题 一脸懵逼.. 完全没有思路 最多就只是发现一点小规律 即. a<b<c. 且b的最大的二进制位一定严格大于a b的最大二进制位一定等于c. 但是这对解题没有任何用处. 考虑打个表看看有什么规律没有. 通过这道题 我承认 打表找规律也是一个技术活. 虽然能看出来到了第二排 a的数值是递增的 考虑特判前面几个我们就能快速找到a了. 但是b 和 c还是难找.那继续观察后面几项的规律. 我的败笔也是出自这里 规律一般也是符合较小的数据的 没道理不符…
题目链接:C. DNA Alignment 题目大意就不写了,因为叙述会比较麻烦..还是直接看英文题面吧. 题目分析 经过观察与思考,可以发现,构造的串 T 的每一个字符都与给定串 S 的每一个字符匹配了 L 次,那么 令 S 中 A,C,G,T 的数量分别为 A1, B1, C1, D1, T 中 A,C,G,T 的数量分别为 A2, B2, C2, D2. p(S, T) = L * (A1A2 + B1B2 + C1C2 + D1D2) 也就是说,T中的一个字符A,可以对p(S, T)产生…
题目链接:E. A and B and Lecture Rooms 题目大意 给定一颗节点数10^5的树,有10^5个询问,每次询问树上到xi, yi这两个点距离相等的点有多少个. 题目分析 若 x==y 直接返回 n. 先求出 x, y 两个点的中点. 先求出 LCA(x, y) = z,假设 Depth[x] >= Depth[y] ,若Depth[x] == Depth[y] ,那么 z 就是它们的中点. 答案就是,n - Size[fx] - Size[fy],fx 是从x向上跳,一直跳…
题目链接:D. A and B and Interesting Substrings 题目大意 给定26个小写字母的权值,一共26个整数(有正有负). 给定一个小写字母组成的字符串(长度10^5),求有多少长度大于1的子串满足: 1)首尾字符相同. 2)除了首尾字符外,其他字符的权值和为0. 题目分析 使用STL Map.开26个Map,给每个字母开一个. 先求出权值的前缀和 Sum[] . 然后1到l枚举每一位字符,如果是a,那么 Ans += Map[a][Sum[i - 1]]; 然后 +…
A. Grasshopper And the String time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output One day, the Grasshopper was jumping on the lawn and found a piece of paper with a string. Grasshopper became i…
A. Alyona and Numbers time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output After finishing eating her bun, Alyona came up with two integers n and m. She decided to write down two columns of inte…
额,这次的题目其实挺智障的.所以通过这次比赛,我也发现了自己是一个智障.... 不说太多,说多是泪... A. Fair Game 题意:给你一个数组,看你能否把它均分为两个所有元素均相同的子数组. 模拟即可.... #include<bits/stdc++.h> using namespace std; #define MAXN 100+10 ,b=; int main(){ scanf("%d",&n); ;i<=n;i++){ int x; scanf(…
比赛链接:http://codeforces.com/contest/1180 Problem A 题意:给出n,问方块数.看图理解... Solution: 找一找规律就可以了,发现方块数为2n*(n-1)+1 Code: #include<bits/stdc++.h> using namespace std; int read(){ int x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar()…
                                   A. Little Artem   Young boy Artem tries to paint a picture, and he asks his mother Medina to help him. Medina is very busy, that's why she asked for your help. Artem wants to paint an n×mn×m board. Each cell of the…
题面 A 可以发现,最远的几个人一定是 \((1, 1), (1, m), (n, 1), (n, m)\) 中的一个,直接计算即可. B 注意到颜色数量很少,直接暴力枚举最终的颜色后模拟即可. C 本质上删除第一个位置就是将初始的 \(p + 1\),于是可以考虑直接枚举会将初始位置往后挪几位,需要的操作一次数就是 \(p\) 之后模 \(k\) 与 \(p\) 同余的位置中 \(0\) 的数量. 直接记录一个模意义下的前缀和,再在枚举 \(p\) 初始位置时维护另一个模意义下的前缀和即可.…