
贪心
consult_
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #665 (Div. 2) (A-D)
题目A - Distance and Axis选一点 B ,使得∣OA−AB∣|OA-AB|∣OA−AB∣为 K 时 A 需要挪动多少单位。那么当OA <= k 时,使AB=0,需要挪动k-OA。当OA>k 时 B 点必须在OA内,此时 OA 分解为a、b之和,那么当OA为奇数时k=∣a−b∣k=|a-b|k=∣a−b∣ 为奇数,当OA为偶数时k=∣a−b∣k=|a-b|k=∣a−b∣ 为偶数。所以根据 k 的奇偶性改变OA的奇偶性即可。#include<iostream>u原创 2020-08-22 15:05:27 · 170 阅读 · 0 评论 -
B - Array Walk (Round 92 div2 贪心 枚举)
B - Array Walk 题意: 给定一个长度为 n 的数组,从位置1开始可以向右累加 k 次,且可以向左累加 z 次,但不能连续两次及以上向左累加,求最大累加和。思路: 贪心的考虑,在往右累加的过程中,若需要循环节的存在,则一定只要最大的一个循环节,所以我们在枚举最终停止位置时,同时记录最大的循环节,然后计算停止在每个位置能得到的最大累加和,再取最大即可。Code1:#include<bits/stdc++.h>using namespace std;#define IO原创 2020-08-20 18:36:43 · 223 阅读 · 0 评论 -
D. Boboniu Chats with Du (664 div2 贪心 枚举)
D. Boboniu Chats with Du 题意: 给 n 个快乐值,你可以按任何顺序在群里说出快乐值为 kik_iki 的话,当 m<kim<k_im<ki 时,你会获得 d 天的禁言(不包括当天),n 天后你的快乐值的和最大是多少。思路: 很明显的贪心,但是不是太好想。首先我们把大于 m 的与小于等于 m 的数分开存到 a、ba、ba、b 数组中,然后分别从大到小排序。所以如果我们说快乐值大于 m 的话,那么每次肯定说最大的 ai,当说 num 次 ai 时要耗费t原创 2020-08-13 21:19:37 · 201 阅读 · 0 评论 -
E1. Weights Division (easy version) (div3)(贪心)
E1. Weights Division (easy version) 题意: 给一颗以1为根的树,每次操作可以把一条边的边权除以2下取整,问要使根节点到所有叶子节点的路径长度和小于给定的S,求最小的操作次数。 思路: 由于从根到叶子的路径中有很多的边是重复经过了多次的,所以在贪心的时候要从整体考虑贪心,并且我们每次找的是,把这条边整除2后与之前的边的差值尽量大的边,这个差值除了w - w / 2 之外我们还要乘上这条边经过的次数,才能每次找到最优的边。Code:#include<bits/原创 2020-08-10 16:30:17 · 268 阅读 · 0 评论 -
2020 Multi-University Training Contest 3
1004 Tokitsukaze and Multiple(贪心)题目大意: 给定n个数,相邻的数之间能合并相加,问最多能有几个分段和能被p整除。思路: 显然我们贪心的从前往后遍历,一旦这段和能被p整除就把这段合并,然后往后再找,这样最终获得的p的倍数的数一定是最多的。 如何确定这段和是p的倍数:维护前缀和%p,当出现了两个相同的余数时,那么这两个位置之间(左开右闭)的元素和一定是p的倍数。(老套路了Code1: 对于每个子段区间,利用map记录上一个出现相同余数的位置。当此段结束时清空map#in原创 2020-08-01 23:53:56 · 180 阅读 · 0 评论 -
今年暑假不AC(区间贪心)
今年暑假不AC贪心:“按右端点排序,能选就选,不能就不选。因为如果不能选的话,它的加入一定会导致至少一条线段的退出,并且还使得当前线段集的最右端点右移了,一定不优。”并且不能用左端点贪心。#include<iostream>#include<algorithm>#include<cstring>#include<vector>using namespace std;typedef pair<int,int> PII;const原创 2020-08-01 10:05:01 · 167 阅读 · 0 评论