codechef MAY18 div2 部分题解】的更多相关文章

T1 https://www.codechef.com/MAY18B/problems/RD19 刚开始zz了,其实很简单. 删除一个数不会使gcd变小,于是就只有0/1两种情况 T2 https://www.codechef.com/MAY18B/problems/XORAGN 我们可以把B序列看做一个矩阵 那么$A(i,j)$和$A(j,i)$会抵消掉 因此答案就是$\sum_1^n A(i,i) + A(i,i)$ T3 https://www.codechef.com/MAY18B/pr…
找出一个数组中的三个数,三个数不能组成三角形. 三个数不能组成三角形的条件是:a + b < c 两边和小于第三边. 这个问题属于三个数的组合问题了.暴力法可解,可是时间效率就是O(n*n*n)了,非常慢. 只是既然是组合问题就必然能够使用排序后处理的方法减少时间效率的. 这里减少时间效率的方法是: 选一个最大的数c.然后选两个小数a和b,当中a < b,假设符合条件,那么两个数中间的数必然都能够作为b符合条件a + b < c 这样能够把时间效率降到O(n*n). 这个规律也不好找啊.…
A 水题一道. 题目的大致意思就是:给你两个集合,求集合间有多少数对和是奇数. 题解,开\(4\)个桶后,求一个\(min\)就可以了. #include <bits/stdc++.h> using namespace std; int n, m; int v1[4], v2[4]; int main() { scanf("%d%d", &n, &m); for (int i = 1, x; i <= n; i ++) scanf("%d&q…
codeforces Round #541 abstract: I构造题可能代码简单证明很难 II拓扑排序 III并查集 启发式排序,带链表 IV dp 处理字符串递推问题 V 数据结构巧用:于二叉树同构 VI更新了头文件,将很难敲的东西放到define里面,初始化数组可以a[100]={}; C 题意 给你100个人,让你将它们围成一个圆,使得:"任意相邻的两人身高差的绝对值" 中的最大值 最小 题解 显然的构造方法:先排序,让所有人1 2 报数,报2的出列,排尾变排头接到报 1 的…
传送门 \(CHNUM\) 显然正数一组,负数一组 for(int T=read();T;--T){ n=read(),c=d=0; fp(i,1,n)x=read(),x>0?++c:++d; if(!c)c=d;if(!d)d=c; if(c<d)c^=d^=c^=d; printf("%d %d\n",c,d); } \(CHDIGER\) 从原来的数列中选出字典序最小的上升子序列,往后面加\(d\)就行了 //minamoto #include<bits/st…
A:A. Nuts time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You have a nuts and lots of boxes. The boxes have a wonderful feature: if you put x (x ≥ 0)divisors (the spacial bars that can divi…
Soma is a fashionable girl. She absolutely loves shiny stones that she can put on as jewellery accessories. She has been collecting stones since her childhood - now she has become really good with identifying which ones are fake and which ones are no…
传送门 \(Maximum\ Remaining\) 对于两个数\(a,b\),如果\(a=b\)没贡献,所以不妨假设\(a<b\),有\(a\%b=a\),而\(b\%a<a\).综上,我们可以发现答案就是严格次大值 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b) for(R i…
A题 Description 题目链接: https://codeforces.com/contest/1199/problem/A 题意: 给定长度为n(1≤n≤100000)的一个序列a,以及两个整数x,y(0≤x,y≤7).要求在序列里最靠前的一个索引d满足a[j]>=a[d] (d−x≤j<d,d<j<d+y). 简单说就是找出一天使它的权值小于之前x天和之后y天,超出[1,n]的不考虑 Solution 思路: 模拟从前往后遍历一遍,找到满足条件就输出. #include…
Day 1, Div 2, Prob. B - 吃豆豆 题目大意 wls有一个\(n\)行\(m\)列的棋盘,对于第\(i\)行第\(j\)列的格子,每过\(T[i][j]\)秒会在上面出现一个糖果,糖果只存在一秒,下一秒就会消失. 假如wls第\(k\)秒在第\(i\)行第\(j\)列的格子上,满足\(T[i][j]|k\),则wls会得到一个糖果. wls每一秒只可以上下左右移动一格或停在原地. 请问wls从指定的\(S(xs,ys)​\)出发到达指定的\(T(xt,yt)​\),并且在路上…
A题 给一个由a和b两种类型的字符组成的字符串,每次可以从中选取任意长度的回文子序列(不一定连续)并删除.问最少需要几次能将整个字符串为空. 思路:如果本身是个回文串,那么只需要一次,否则需要两次(第一次选全部的a,第二次全部选b). Accepted Code: def is_palidrome(s): n = len(s); for i in xrange(n / 2): if s[i] != s[n - i - 1]: return False; return True; if __nam…
Contest link A.Specific Tastes of Andre Problem link 题意 构造一个长度为 \(n\) 的序列,使得每个非空子序列的和都被其长度整除. 思路 直接每个数都是 \(1\) 即可. 代码 int main() { int T; scanf( "%d",&T ); while ( T-- ) { int n=read(); for ( int i=1; i<=n; i++ ) printf( "1 " );…
题面 A 可以发现,最远的几个人一定是 \((1, 1), (1, m), (n, 1), (n, m)\) 中的一个,直接计算即可. B 注意到颜色数量很少,直接暴力枚举最终的颜色后模拟即可. C 本质上删除第一个位置就是将初始的 \(p + 1\),于是可以考虑直接枚举会将初始位置往后挪几位,需要的操作一次数就是 \(p\) 之后模 \(k\) 与 \(p\) 同余的位置中 \(0\) 的数量. 直接记录一个模意义下的前缀和,再在枚举 \(p\) 初始位置时维护另一个模意义下的前缀和即可.…
题面: https://www.codechef.com/problems/CBAL 题解: 可以发现,我们关心的仅仅是每个字符出现次数的奇偶性,而且字符集大小仅有 26, 所以我们状态压缩,记 a[i]表示 s[1..i]所有字符的奇偶性状态, 那么子串 s[L..R]是平衡字符串当且仅当a[L-1]=a[R]. 我们对 a 离散化后就可以让其在[1,n]的范围内. 如果没有强制在线,那么我们很容易用莫队算法解决. 记录当前范围所有状态的出现位置下标的 0~2 次方之和, 利用(a-b)2=a…
题面:https://www.codechef.com/problems/FNCS 题解: 我们考虑对 n 个函数进行分块,设块的大小为S. 每个块内我们维护当前其所有函数值的和,以及数组中每个元素对这个块函数值的和的贡献系数. 那么每次修改操作我们就可以对每个块函数值的和 O(1)进行修改. 对于询问,落在完整块内的部分我们维护了它的和,直接 O(1)调用即可. 剩余的部分我们对每个函数依次求值. 那么现在问题就变为单点修改.询问区间和. 如果我们使用树状数组,那么单次询问与单次修改复杂度操作…
题链: https://www.codechef.com/problems/SEAGM题解: 概率dp,博弈论 详细题解:http://www.cnblogs.com/candy99/p/6504340.html 本体的先手胜与不胜(第一问)以及胜的概率(第二问)都是通过dp完成的,记忆化搜索实现. 定义了一个非常妙的dp状态:(第一问) dp[g][c]表示当前选的数的gcd为g,且选了c个数时当前操作的人胜还是不胜. 有了这个状态,配合预处理的cnt[g]数组(表示有cnt[g]个数为g的倍…
something wrong with my new blog! I can't type matrixs so I come back. qwq 题目:https://www.codechef.com/problems/BIKE 题解 是我naive了,二维和一维其实差不多 首先,n很小,t很大,什么算法?矩阵乘法!没跑了 然后矩阵里填什么?一条边是两个值啊,还要一个%n一个%(n - 1),怎么搞 我们设计一个多项式\(x^{a}y^{b}\),x指数(也就是a)代表前轮加上一条边的值后取…
[CodeChef]Palindromeness(回文树) 题面 Vjudge CodeChef 中文版题面 题解 构建回文树,现在的问题就是要求出当前回文串节点的长度的一半的那个回文串所代表的节点 定义\(half\)表示长度最长并且长度小于等于当前节点长度一半的回文串所代表的节点 \(half\)的求法,如果当前点的\(len=1\),\(half\)不存在 否则,从构建回文树时的父亲节点(不是\(fail\)指针)所代表的那个点的\(half\)开始 暴力跳\(fail\),直到找到满足条…
题意 div2 C (x)(o) 在一个平面上, 给一个水平的正方形和一个\(45^.斜\)的正方形 求是否相交(共点也算), 坐标正负\(100\)以内 div2 D (x)(o) \(A,B\)两个人初始分别被给了一个数对, 其中有且仅有一个数相同(\([1,9]\)下同) 接下来\(A,B\)分别展示\(n,m\)个数对(\(\le 10\)个),其中包含他们初始拿到的 现在你作为观察者 若能推出初始数对中相同的是哪个数, 输出他 若\(A,B\)两个人都能推出, 但你不知道, 输出\(0…
题目:https://www.codechef.com/problems/FNCS 题解: 我们知道要求区间和的时候,我们用前缀和去优化.这里也是一样,我们要求第 l 个函数到第 r 个函数 [l, r] 的函数和,那么我们可以用 sum[r] - sum[l-1] 来求得. 由于这个数据量有点大,所以我们将函数分块. 例如样例: 1 3 有5个函数,那么我们分成3块.{ [1 3] , [2 5] }, { [4 5], [3 5] }, { [1 2] }.每一块对应都有一个sum ,这时如…
虽然打的是div1,但最后半小时完全处于挂机状态,不会做1C,只有个 \(O(n^3)\) 的想法,水了水论坛,甚至看了一下div2的AB,所以干脆顺便写个div2的题解吧,内容看上去还丰富一些(X) A Ichihime and Triangle div2的日常构造题,想造个三角形的话,贪的思路就是让三条边长度尽可能接近,那就尽量把三个数都往中间凑一凑,然后发现\((b,c,c)\)是满足要求的,输出即可. 代码: #include<bits/stdc++.h> using namespac…
http://www.codechef.com/NOV13 还在比...我先放一部分题解吧... Uncle Johny 排序一遍 struct node{ int val; int pos; }a[MAXN]; int cmp(node a,node b){ return a.val < b.val; } int main(){ int T,n,m; while(cin>>T){ while(T--){ cin>>n; ; i < n ; i++){ cin>&…
CF Educational Round 78 (Div2)题解报告A~E A:Two Rival Students​ 依题意模拟即可 #include<bits/stdc++.h> using namespace std; int T; int n, x, a, b; int main() { cin >> T; while(T--) { cin >> n >> x >> a >> b; if(a > b) swap(a, b…
CF1169(div2)题解报告 A 不管 B 首先可以证明,如果存在解 其中必定有一个数的出现次数大于等于\(\frac{m}{2}\) 暴力枚举所有出现次数大于等于$\frac{m}{2} $的数 剩下的数看看有没有一个公共数即可 由于出现次数大于等于$\frac{m}{2} $的数不会太多 所以时间复杂度应该是\(O(n)\)的 #include<cstdio> #include<iostream> #include<queue> #include<algo…
CF Round #580(div2)题解报告 T1 T2 水题,不管 T3 构造题,证明大约感性理解一下 我们想既然存在解 \(|a[n + i] - a[i]| = 1\) 这是必须要满足的 既然这样,那么图必须是这样的 \(-\),是相邻的两个数中的较小的一个,\(+\)是相邻的两个数中较大的 这样分配是肯定有解的 但是当n时偶数的时候,手玩一下就会发现,不可能满足+-交替,所以无解 #include<cstdio> #include<iostream> #include&l…
由于本人太蒻了,div1的没有参加,胡乱写了写div2的代码就赶过来了. T1 苏联人 题目背景 题目名称是吸引你点进来的. 这是一道正常的题,和苏联没有任何关系. 题目描述 你在打 EE Round 1,发现第一题非常无聊.于是你不打了,去下国际象棋了. 结果你发现,由于神秘力量的影响,你的棋子只剩下若干黑色的战车,若干黑色的主教和一只白色的国王了. 由于你很无聊,所以你把一些黑色棋子放在了 8×88\times 88×8 的棋盘上. 由于你很无聊,所以你想知道,国王放在哪些格子是安全的.换句…
CF1501 Div2 题解 CF1501A 这道题其实是一道英语阅读题,然后样例解释又不清晰,所以我看了好久,首先它告诉了你每个站点的预期到达时间 \(a_i\) ,以及每个站点的预期出发时间 \(b_i\) . 那么对每个站点来说,从上一个站点的预期出发时间 \(b_{i-1}\) 到当前站点的预期到达时间 \(a_{i}\) ,那么中间差的时间就是你从上一个站点到达这个站点的时间,计算出 \(go_i\) \(=\) \(a_i - b_{i-1}\) 就计算出第 \(i-1\) 个站点到…
比赛链接:https://www.codechef.com/FEB18,题面和提交记录是公开的,这里就不再贴了 Chef And His Characters 模拟题 Chef And The Patents 模拟题 Permutation and Palindrome 模拟题 Car-pal Tunnel 结论比较简单 Broken Clock 求余弦的n倍角,可以用复数的快速幂解决 $cos(a)=x \\ sin(a)=\sqrt{1-x^2} \\ cos(na) = Re((x+\sq…
本来准备比完赛就写题解的, 但是一拖拖了一星期, 唉 最后一题没搞懂怎么做,恳请大神指教 欢迎大家在评论区提问. A Mind the Gap 稳定版题面 https://cn.vjudge.net/problem/CodeForces-967A 水题, 不写题解了, 浪费空间 细节处理见代码 #include<bits/stdc++.h> #define int long long using namespace std; struct tim{ int h, m; }t[1001]; in…
第一次打codechef...不太会用这oj. A: #include <bits/stdc++.h> #define mk(a,b) make_pair(a,b) #define pii pair<int,int> using namespace std; inline int read() { ,w=; char c=getchar(); ; c=getchar(); } )+(X<<)+c-',c=getchar(); return X*w; } typedef…