
贪心
winhcc
这个作者很懒,什么都没留下…
展开
-
Codeforces 3B Lorry
很有意思的贪心题。有两种东西,一个消耗2,一个消耗1,各自有自己的属性val,开始有v可以消耗,问怎么消耗val最大。设数组a存放消耗为1的,数组b存放消耗为2的。一开始想的贪心策略是:先对数组a和b从大到小排序,每次比较数组a中的2个(如果有两个的话)和b中的一个哪个大,更新答案,最后特殊处理一下a只剩1个的情况。但是这样有一个问题:比如a中元素是5,3,3,b中元素是7,,v=3。按照最...原创 2018-11-01 20:23:55 · 350 阅读 · 0 评论 -
Codeforces 1118D1
给n个数,选若干组(最多可以选n组),有次序,在每一组中值为val-i+1,i表示在该组中是第i个选。现在要选最少的组,使得各组值之和大于大于m。贪心,可知val越大的越要先选,然后判断一下即可#include<bits/stdc++.h>using namespace std;typedef long long LL;int n,m,a[110],sum,dp[110]...原创 2019-03-20 18:37:31 · 195 阅读 · 0 评论 -
Codeforces1141D
贪心,A和B先是一般的字符进行匹配,然后是A的’?‘和B的普通字符匹配,再然后是B的‘?’和A的普通字符匹配,最后A的‘?’和B的’?'进行匹配。其实不难,考虑清楚就好了#include<bits/stdc++.h>using namespace std;#define forn(i,n) for(int i = 0;i<int(n);i++)typedef long ...原创 2019-03-26 22:01:22 · 364 阅读 · 0 评论 -
Codeforces 1119E
有n种长度的棍子,长度分别为2^0 ,2 ^ 1,…,2 ^ (n-1) ,每种棍子有a[i] 种,问你能组成多少个三角形。三角形两边之和大于第三边,而2 ^ i + 2 ^ i = 2 ^ (i+1),所以两条短的边不能和一条长的边组成三角形,因此要尽量组成2条长边1条短边的情况。一开始是从后往前处理,但是会出现问题:当前剩2个的情况下到底是让比它小的的匹配,还是让其和比它大的匹配。如1,2...原创 2019-04-10 17:23:42 · 205 阅读 · 0 评论 -
Codeforces 1153C
给一个由(、)、?组成的序列,?可以变成(、)中的一种,问能否将原序列转换为一个任意前缀都非法的合法序列。要使得当前的序列非法,可以尽可能多的加一种括号,最后又要合法,那么要尽可能加(先排除一些特殊情况。考虑到整个序列是合法的,则( 的数量和 )的数量都是n/2,可以贪心构造,如果已经确定的(的数量小于 n/2,且当前的字符是?,则?要变成(。#include <bits/stdc++...原创 2019-04-15 17:17:23 · 452 阅读 · 0 评论 -
Codeforces 1151D
有n个人,第i个人站在位置j的情况下会产生一个值ai * (j-1) + bi (n-j ),j = 1,2,…,n,问怎样安排使得n个值之和最小。将式子变形,得 (ai - bi) * j + bi * n - ai ;可知每个人都会产生一个值 为 bi * n - ai,该值与这个人所要站得位置无关。而 ai bi 是已知的,问题就转变为一个非常熟悉的贪心问题了#include<...原创 2019-04-19 17:09:11 · 599 阅读 · 0 评论