贪心
_kikyou-
这个作者很懒,什么都没留下…
展开
-
D. Expression Evaluation Error (贪心)
传送门 题意:求n个正整数,和为S,且被看成是11进制的情况下,和最大. (1<=n<=100,1<=s<=1e9) #include<bits/stdc++.h> using namespace std; //#pragma GCC optimize(2) #define ull unsigned long long #define ll long long #define pii pair<int, int> #define pdd pair<dou原创 2021-09-20 16:13:39 · 173 阅读 · 0 评论 -
Codeforces Round #720 (Div. 2)C. Nastia and a Hidden Permutation(交互)
传送门 题意:有一个隐藏的排列p,每次可以询问ask(t,i,j,x)。反馈规则如下: 在不超过⌊(3⋅n)/2⌋+30次询问下,输出这个排列。 分析: 首先我们观察t == 1的询问,我们可以令x=n-1,如果回答是n , 那么说明pj就是n 。所以我们可以通过枚举,在n次询问下求出n的位置。(当然后面会提到这里可以优化到n/2次) 知道了n的位置就好办了,我们可以通过t == 2的查询,令x=1,pj=n,那么回答的就是pi 。总共n次询问将排列每个数求出 。 优化:可以看到上述过程查询是2n次的,原创 2021-05-13 00:11:51 · 171 阅读 · 0 评论 -
Codeforces Round #577 (Div. 2) D. Treasure Hunting (贪心+dp)
题目链接 题意:给定n*m的格子图 , 某些格子有宝藏 。出发点在最下角(1,1), 移动规则为:不可以向下走。只有位于某些特殊列的时候能往上走, 否则只能左右移动。 数据范围是2e5 。 分析:首先每一行的宝藏中,我们只需关心最左端和最右端的2个就行, 取完这一行的宝藏后,停的位置要么是在最左端宝藏 记为L,要么是在最右端宝藏 记为R。 要向上走的时候,L/R每种情况又有2种选择,记L右边最近的特殊列为Lr,左边最近的特殊列为Ll,停在L位置的时候,要么从Lr上去,要么从Ll上去,上去之后停的位置又有最左原创 2021-05-06 19:31:46 · 95 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3) F. Removing Leaves
题目链接 题意:给定一棵无根树,一次操作只能删去k个有相同邻接点的叶子节点。问最多可以有多少次这样的操作。 分析:这题不用想太复杂,对于一个连了>=k个叶子的节点来说,删去k个叶子,不会对其他的节点造成影响,所以满足局部最优,可以直接贪心选取。 具体的做法是 记录每个顶点的度,相邻的被删的叶子数。 用一个队列存叶子节点,挨个删去,同时记录删去当前叶节点对周围节点产生的影响,如果当前删除使得某个节点相邻的被删的叶子成为了k的倍数,则答案+1。 如果此时度变成了1,那么说明他成为了新的叶节点(即:该节点原创 2021-04-26 20:38:41 · 103 阅读 · 0 评论 -
Codeforces Round #712 (Div. 2) C. Balance the Bits (贪心+构造)
题目链接 题意:给定01串,要求构造2个合法的括号串,同时满足01串中1对应的位置括号相同,0对应的位置括号不同。 (2<=n<=2e5,n为偶数) 分析:如果把左括号看出1,右括号看出-1,那么合法的括号串必须满足: 任意一个前缀和不小于0 整体前缀和等于0 第一个括号是(最后一个括号是) 题目要构造两个符合关联的括号串,我们可以先考虑一个合法的括号串。 然后根据0的位置进行整体的修改得到另一个: 首先串的开头和结尾必须是1 (因为合法串的第一个括号是(最后一个括号是)) 除开头结尾外的原创 2021-04-15 13:23:02 · 106 阅读 · 0 评论 -
What Is It? CodeForces - 1474E (逆向思维+构造)
目录题目链接一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 题目链接 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnin.原创 2021-03-29 23:55:02 · 155 阅读 · 0 评论 -
Three Bags CodeForces - 1467C (贪心)
题目链接 题意:给定三个背包,各自装有n1 n2 n3个数,每次操作从任意两个背包A B分别选出任意一个数a b,然后丢掉b ,把a替换成a-b 。 问重复操作下去最后剩下的数最大可以是多少。 (1<=n<=3e5) 分析:我们用A B C表示3个背包,min(B)<min(A) 且 min(C)<min(A) 假设最终的数是在A中。 一个数从初始背包转移出去,当且仅当它转移次数为偶数的时候才能对答案有正贡献。比如B中的某个数b[i],要产生正贡献比如和C中某个数结合,然后转移进A原创 2021-03-27 12:37:31 · 127 阅读 · 0 评论