首页 > 其他分享 >#0033. Educational Codeforces Round 3

#0033. Educational Codeforces Round 3

时间:2023-02-13 12:33:33浏览次数:43  
标签:Educational 数列 可以 mst 蚊子 Codeforces 0033 考虑 我们

609A

贪心 优先选大的USB flash drive

609B

先处理每个genre的书有多少本,然后直接枚举每次购买的是哪两种genre然后乘法原理即刻

609C

手下考虑balanced的长啥样。假设这n个数字的和为sum,那么应该有sum%n个数是sum/n上取整,其余是sum/n下取整。接着考虑把原数列改成这样的形式。可以发现如果我们把原数列和新数列都进行排序,这两个数列每位的差(绝对值)的和/2就是答案(这也算一个比较常用的贪心结论)

609D

很有趣的一道题!首先想到二分答案,因为显然天数越多越容易买到足够多的东西。接着就是怎么进行check。这里有两个需要考虑的问题:(1)哪几天买东西?(2)买哪些东西?
首先考虑(1),我们可以想到对于一种特定种类的物品,我们只在汇率最低的那天买。这个贪心显然是对的。
接着考虑(2),既然我们已经选择了固定的一天,那么汇率就是一个常数了,因此我们只要尽量选便宜的东西就好了。
同时我们注意到可以留给check的复杂度是O(N)左右,因次我们可以直接枚举k个物品的来源。对于(1)和(2)我们都可以预处理前缀和然后在check时直接调用

609E

也是一道个人很喜欢的题。考虑暴力做法,对于每条边跑mst。直觉上我们可以感觉到这样很浪费时间,因为这些mst应该都很像。因此我们想到,有没有可能只跑一遍没有任何限制的mst,然后对于每条边在这个mst上进行修改?思考如果我们想硬塞一条边(u,v)到一个树,我们需要先使u,v不连通。考虑到树的性质,两点之间的路径是唯一的,因此这等价于从u到v的路径之间删掉一条边。因为我们想要最小生成树,所以显然删权值最大的边最优。这样对于每条边(u,v)的查询就被转化成了在原图mst上找连接u,v的路径上最大的权值。这个值可以在倍增找lca的同时维护。

609F

哈哈哈哈这是一道我19年做的时候TLE 61然后这次theory solve了懒得写了就直接在源代码上debug了。居然是因为对set用lower_bound时候不能写lower_bound(s.begin(),s.end(),key),必须要写成s.lower_bound(key),不然会TLE。
搞一个线段树,对于每个蚊子可能出现的位置维护会吃它的青蛙是哪个。这样每有一个蚊子来可以直接单点查询。青蛙的舌头长度的更新也可以用线段树维护。首先我们用一个set存现有的蚊子,这样每个蚊子最多被放进去一次,被拿出去一次,这样吃蚊子的操作不会导致TLE。每当一个青蛙吃了一个蚊子,我们就继续往右找,直到没有更多的蚊子可以被吃掉。这时候根据青蛙新的舌头长度我们就可以在线段树上进行一个区间更新

标签:Educational,数列,可以,mst,蚊子,Codeforces,0033,考虑,我们
From: https://www.cnblogs.com/myrcella/p/17115898.html

相关文章

  • #0032. Educational Codeforces Round 2
    600A简单题但有个坑点在于会有空字符串600B一道可以用来实验upper_bound的题600C挺有趣的一道题。首先考虑怎样的字符串可以通过permutation变成palindrome:条件是至......
  • Codeforces Round #852 (Div. 2)
    A.YetAnotherPromotion题意:买土豆,一种卖a元一公斤,买m公斤送一公斤;一种卖b元一公斤。求买n公斤土豆最少花多少钱。解:完全没有思考,把a*n,b*n,买尽可能多m倍数的土豆剩......
  • Codeforces Round #851 (Div. 2)-F. XOR, Tree, and Queries-树、异或、并查集
    题目:https://codeforces.com/contest/1788/problem/F题解:(首先他和线性基没什么瓜系)想这个问题大概可以分成几个部分:1、很自然地考虑记\(p_x\)表示从根节点走到x路径......
  • Codeforces Round #851 (Div. 2) D
    链接:https://codeforces.com/contest/1788/problem/D题意:数轴上有n个点,每个点会以相同的v向最近的点移动(若左右距离相等则向左),两点相遇则暂停,问最终数轴上剩下的点数即为......
  • Codeforces Round #547 (Div. 3) F2. Same Sum Blocks (贪心——最多不重叠区间数量
    题目https://codeforces.com/problemset/problem/1141/F2题意忽略;给出一个数组,求和相等的,不重叠子串的最大数量,并输出(题目有点绕)思路先求出数组前缀和,然后找出......
  • Codeforces Round #851 (Div. 2) A-E
    比赛链接A题意给一串只包含\(1,2\)的数,找到最小的\(k\)使得\(\prod_{i=1}^ka_i=\prod_{i=k+1}^na_i\)。题解知识点:枚举。因为只有\(1,2\),所以考虑左右两......
  • Codeforces Round #541 (Div. 2) D - Gourmet choice 差分约束
    观察到n+m最多才2000个点,正解也不是差分约束但是它能跑:)建图比较平凡不记述难得的是用链式前向星T了,改vector过了  T9的话是加了随机化优化,cin读入,链式前向星存边......
  • Codeforces Round #851 (Div. 2)
    A.OneandTwo比较两边\(2\)的个数即可。#include<bits/stdc++.h>usingnamespacestd;intn,T,prefix[1111],suffix[1111],ans,a[1111];intmain(){sc......
  • Codeforces Round #472 D - Riverside Curio 差分约束
    正解据说是贪心+dp可惜我这个人没什么脑子:)(遇到了能用差分约束也能用dp+贪心的第二题了,真是神奇假设有一组合法的sum就能逆推出di,因为ai+di+1=sumi最小化Σdi就是最小......
  • 2.10 Codeforces Round #851 (Div. 2)
    A-OneandTwo题意给出长度为n的序列a,a中元素是1或2找到一个k使a1*a2*a3*....*ak=ak+1*ak+2*ak+3*...*an思路统计序列中有多少个2,若是奇数个2,则......