首页 > TAG信息列表 > Johnny
1362B - Johnny and His Hobbies
暴力: 依题意暴力枚举即可 #include <iostream> #include <algorithm> using namespace std; const int N = 1030; int n; int a[N],b[N]; int main () { int T; cin >> T; while (T--) { cin >> n; for (int i = 1;i <= n;i++) cin >> a[i];CF1103C Johnny Solving 题解
首先考虑建出 dfs 树,如果一个点的深度 \(\geq \frac{n}{k}\),那么直接输出这个点到根的路径即可。 如果没有点深度 \(\geq \frac{n}{k}\),可以证明这棵树一定有不少于 \(k\) 个叶子(考虑反证法,如果叶子个数少于 \(k\),那么点数最多也不到 \(k\cdot \frac{n}{k}=n\) 不可能)。由于每个点题解 CF1361B Johnny and Grandmaster
目前(洛谷)最优解写法。 首先将 \(k_i\) 降序排列,并将相同的 \(k_i\) 合并。由于每个式子都是形如 \(p^{k_i}\) 的形式,即底数相同,可以考虑变成 \(p\) 进制,发现对于任意 \(c_1,\, \ldots ,\, c_{i+1}\) 和 \(a_0 < a_1 < a_2 \ldots < a_{i+1}\),满足 \(c_{i+1} \times p^{a_{i+1}} \gB. Johnny and Grandmaster(贪心,双模法)
题意: 把 \(p^{k_1},p^{k_2},\cdots p^{k_n}\) 分成两个集合,使两个集合的总和的差的绝对值最小(是原数的差最小而不是取模后最小)。输出差的绝对值取模。 思路: 从大到小考虑每个数,如果 ans 为 0 则把当前数放入集合Ⅰ,即 ans 加上 \(p^i\); 如果 ans 大于 0,说明集合Ⅰ比集合Ⅱ的和大(实CF1103C Johnny Solving(构造题)
洛谷传送门 解题思路 在图上很难做这种构造题,所以一种常用的方法是求出其生成树。 在生成树上做就容易很多。 于是这个题就按照 dfs 序建立一颗生成树,记录下每个节点的返祖边。 于是第一问可以根据树的深度判断是否符合要求,符合的话直接输出。 若没有,则易证第二问一定成立: 因为第B. Johnny and Grandmaster 思维+hash
B. Johnny and Grandmaster 思维+hash 题目大意: 题目意思就是给一个长度为n的序列k , 然后呢要求将这些数分为两个集合A、B,使得两个集合差值的绝对值最小,也就是 \(min|\sum{p^{k_i}}-\sum{p^{k_j}}|\) 题解: 这个想到了就是一个简单的思维题,再加一点点哈希,但是不经过仔细思考,对代码CF1361F Johnny and New Toy 和 BZOJ2212 Tree Rotations 和 PKUWC2018 Minimax
Johnny and New Toy Johnny has a new toy. As you may guess, it is a little bit extraordinary. The toy is a permutation \(P\) of numbers from \(1\) to \(n\), written in one row next to each other. For each \(i\) from \(1\) to \(n - 1\) betweenCodeforces Round #647 (Div. 2) F. Johnny and Megan's Necklace
题意: 给你 \(n\) 条链,第 \(i\) 条链两端代表的点是 \(2i-1\) 和 \(2i\) ,共计 \(2n\) 个点都有权值,现在要把这些链组成一个环,两条链之间的连接值就是相连的两个节点的权值异或结果的lowbit的基于2的对数,即 \(val=log(lowbit(a异或b));\) 如果权值相等则默认连接值为 \(20\),问如何连D. Johnny and Contribution(贪心)
D. Johnny and Contribution(贪心) 思路:贪心,显然可以知道要从小到大涂,首先我们把为期望颜色为111的都涂掉,然后对每个uuu判断一下相邻结点vvv的期望颜色是否也为111,如果是vvv的期望颜色++++++. 依次类推。因为是 从小开始涂的,所以保证当前比uuu颜色小的都涂了。所以就可以直接Johnny and Grandmaster
题意: 给定 \(n\) 个数 \(P={p^{k_i}}\),将这 \(n\) 个数划分到两个集合中,使得这两个集合各自和之间的差值最小,求最小的差值对 \(1e9+7\) 取模。 \(1≤n,p≤10^6,0≤k_i≤10^6)\) 分析: \(p\) 进制,数学归纳法。 首先,确定最优的策略: 将 \(k_i\) 从小到大进行排序,从大的开始取。求E. Johnny and Grandmaster
E. Johnny and Grandmaster 题意: 给定n个数\(P=\{p^{k_i} \}\),将这n个数划分到两个集合中,使得这两个集合的差值最小,求最小的差值对1e9+7取模。 思路: 将n个数划分到两个集合可以转化为指定这n个数的正负性使得这n个数的和最小。 \(p^{k_i}\)可以看成是\(p\)进制表示的第\(E. Johnny and Grandmaster
https://codeforces.com/contest/1362/problem/E 题目意思就是给一个长度为n的序列k , 然后呢要求将这些数分为两个集合A、B,使得两个集合差值的绝对值最小,也就是$$\min|\sum_{i\in A}p^{k[i]} - \sum_{j\in B} p^{k[j]}| $$ 做法就是将这个题目呢看成P进制表示,\(p^{k[i]}\)也就是