
贪心
Conchpeng
贵在坚持。如有错误欢迎指正。
展开
-
Codeforces Round #202 B:Color the Fence
贪心的题做的太少,碰到一点感觉都没有。 也是看了别人的题解才做。 对于此题,位数越长,那么数吧必定最大,那么cnt=v/mmin 就得到了最多的位数,那么最优的答案位数已经确定了。接下来就是相当于,我有cnt个空格,让你填1~9,9个数字,在满足限定条件的情况下,我要求最大值。这样子问题是不是一下变得很简单了呢? 限定条件是: 当前我取的数 对应的 值 不能超过总钱,并且选了这个数后,后面的位数原创 2017-07-07 14:32:10 · 286 阅读 · 0 评论 -
Pasha Maximizes CodeForces - 435B 【字符串处理+贪心思想】
题意:已知一个数n,当前可以执行k次操作,每次操作可以更换相邻两个数字。要求输出k次操作后,所能得到的最大数。思路:字符串处理。 对于当前的 str[i],我们在[i+1,i+index]的范围内取寻找比str[i]要大的数字,然后交换数据分析:1 ≤ n ≤ 1e18; 0 ≤ k ≤ 100 .(别以为1e18就开LONG LONG,不过还是要想到)复杂度分析:设字符串长度为len , 复杂度为原创 2017-08-06 13:59:51 · 326 阅读 · 0 评论 -
Queue on Bus Stop CodeForces - 435A【思维】
题意:有n个团队的人在等车,一个团队的人必须同时坐一辆车,否则等下一辆。已知每个团队的人数a[i],每辆车的载客量m(不包括司机),问至少需要几辆车。思路:定义变量sum。for(i=1~n) 。 如果sum+a[i] > m , 那么sum=a[i] , ans++。 数据分析:1 ≤ n, m ≤ 100 1 ≤ ai[i]≤ m 没什么好担心的复杂度分析:O(n)#include <原创 2017-08-06 13:52:33 · 489 阅读 · 0 评论 -
Codeforce~545C - Woodcutters【贪心】
题意:已知n棵树坐标x及其高度h,现在要求最多能砍多少棵树。要求:砍一棵树后,其所占有的区间是 [x-h,x] or [x,x+h] 要求树倒下后所占的区间不能先前被其他树占领过。思路:对于2棵以上的树,首先左右两棵树必定往左边和右边倒。 对于i=2~n-1的树,对于当前的i,先尝试能不能放左边,左边不行,放右边,右边还不行不放。 理由是:对于两棵树,要么只能放一棵(任意一棵),要么两颗都放,要原创 2017-08-14 09:19:58 · 359 阅读 · 0 评论 -
Codeforces Round #303 (Div. 2) D. Queue 【贪心】
题意:n个人在超市排队买单。每个人花费的时间为a[i]。如果第i个人排队的时间大于买单的时间,那个人就会发火。问,最少可以让几个人不发火。数据分析:1 ≤ n ≤ 105 :: 1 ≤ a[i] ≤ 1e9思路: 1·错误思路:必须要让时间小的先买单,那么sort一下。然后求前缀和,再O(n)for一遍。如果sum[i] > a[i] ans++。2.正确思路:假如第i个人生气了,那么这原创 2017-08-14 15:18:42 · 247 阅读 · 0 评论 -
Removing Columns - CodeForces 496 C 【暴力+贪心】
题意:给定n个长度相同的字符串。求最少的执行操作。要求下一行的字典序不小于上一行的字典序。 操作是:删除任意一列。数据分析:1 ≤ n, m ≤ 100 (n=1时,输出0)思路:比较下一行与上一行的字典序,然后用vis来标记某一列是不是删除过。对于mp[i][j]和mp[i-1][j],如果相等,那么继续查找下一列;如果前者大,break;否则ans++ , vis[j]=true复杂度分析:O原创 2017-08-14 17:35:05 · 281 阅读 · 0 评论 -
Codeforces 798C:Mike and gcd problem【数论+贪心】
题意:已知长度为n的序列a,要求序列gcd a(a1,a2,a3,a4……an)不为1。求最少的操作次数,使得满足条件。每次操作,可以把a[i] a[i+1] 变为 a[i]-a[i+1] a[i]+a[i+1]。思路:求最少的操作次数,那我们要看操作对结果的影响。 假设两个相邻的数为A,B。 那么经过以下操作 A,B→A-B,A+B→ -2B,2A 。如果相邻的数都是偶原创 2017-08-23 14:39:16 · 357 阅读 · 0 评论 -
Partial Teacher CodeForces - 67A 【好一道】
A. Partial Teachertime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputA teacher decides to give toffees to his原创 2018-01-27 23:53:25 · 306 阅读 · 0 评论 -
Codeforces Round #461 (Div. 2) D. Robot Vacuum Cleaner[贪心+sort]
D. Robot Vacuum Cleanertime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputPushok the dog has been chasing Imp原创 2018-03-06 09:15:57 · 238 阅读 · 0 评论 -
Educational Codeforces Round 22 C. The Tag Game【贪心+dfs】 此篇~纪念第一次自己1A图论题
C. The Tag Gametime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputAlice got tired of playing the tag game by t原创 2018-04-22 14:14:26 · 220 阅读 · 0 评论 -
Codeforces Round #419 (Div. 2) C. Karen and Game【思维】
C. Karen and Gametime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputOn the way to school, Karen became fixate原创 2018-04-18 22:44:21 · 164 阅读 · 0 评论 -
Avito Code Challenge 2018 D. Bookshelves [位运算结合贪心/ DPcheck]
题目:D. Bookshelves题意:给定一个长为n的序列,要求划分成k个连续子区间,每个区间的和分别为sum[i],求最大的 sum[1]&sum[2]& ... & sum[k]思路:根据二进制贪心的原则,高位的1选了比后面都选1要更优.那么bit从最高位(60)开始枚举,看看当前的区间,是否能够构成 1LL<<bit , 如果可以那么ans+=1LL&l...原创 2018-05-29 20:07:46 · 247 阅读 · 0 评论 -
Okabe and Banana Trees CodeForces - 821B
题意:告诉你一条直线y , 让你求y上的某一点,使得过该点向x,y轴做垂线后得到的矩形和最大。和的定义是矩阵内每个点的 横坐标+纵坐标 ;思路:穷举#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(void){ ll m,b; cin >> m>>b; ll maxs=-原创 2017-07-28 16:49:02 · 380 阅读 · 0 评论 -
Okabe and Boxes CodeForces - 821C
题意: A,B两人起始分数分别为a,b. 他们每次可以从[-k,k]任意抽取一个数字,累加在a的基础上。问最后a能够赢b的可能性有多少种。思路: 基础的dp,可是我写的好搓。第t轮的和,可以从第t-1轮推过来,那么就是简单的递推了。要注意的地方有 下标位移要注意的地方。 我故意写了一份会TLE的代码(感觉自己太菜,想试试最基础的写法),第一份代码的复杂度为O(t*1e5*2k)≈1e2*1e5原创 2017-07-28 14:37:13 · 291 阅读 · 0 评论 -
Educational Codeforces Round 26 C - Two Seals【略带贪心+思维】好题
题意:已知一个矩形的长和宽分别是 a,b。 现在有n个矩形,让你从中挑出2个矩形,使得这两个矩形可以放进 初始给的矩形中 求最大面积思路: 暴力枚举所有组合C(2,n),对每一组矩形,判断是否可以放。判断的过程是: 先放一个矩形在左下角,然后再各个地方尝试加另外一个矩形。数据分析:1 ≤ n, a, b ≤ 100复杂度:O(n^2)#include <bits/stdc++.h>using n原创 2017-08-04 10:46:03 · 357 阅读 · 0 评论 -
Best Cow Line POJ - 3617 【贪心】
题意: 告诉你一个长度为n的字符串,每次只能从头或者尾抽出一个字母。要你输出字典序(ASCLL码)最小的情况。思路: 贪心,每次取,肯定取头和尾字典序最小的那个,但对于相同的情况,我们就要判断到底先取那个更有优势,那就要头和尾往中间查,查到哪个达到的比较小,那就是哪个了。#include <cstdio>#include <iostream>using namespace std;const原创 2017-07-30 14:17:24 · 306 阅读 · 0 评论 -
Saruman's Army POJ - 3069【模拟+贪心】
题意: 输入n个数字,半径r,每个数字可以上一个标记,影响的范围是[x-r,x+r],问最少需要多少次标记,才可以让所有点都被影响。思路: 先对过程模拟一遍,首先先去找数组里最小的那个数a,在a+r的范围内取找尽可能接近a+r的数组里的数t,然后标记一次,ans++。下一次就从t+r+1的位置循环上面的操作,最后输出ans即可#include <cstdio>#include <iostream>原创 2017-07-30 15:17:42 · 331 阅读 · 0 评论 -
Case of Matryoshkas CodeForces - 556C
题意:俄罗斯套娃娃。你们都懂得。 然后给定n(娃娃个数),m(几组关系),每组关系中第一个数字是num,代表后面有几个娃娃。问最少花多少时间能把娃娃从1~n套好;思路:对于能从1开始连续的,一定可以不用拆,连着就好了。然后后面统统都要拆,这样时间才会最短#include <bits/stdc++.h>using namespace std;const int maxn=1e5+500;int原创 2017-07-23 10:45:29 · 441 阅读 · 0 评论 -
Fox and Card Game CodeForces - 388C
题意:有几堆牌,每一张牌上都有一个数字,两个人抽牌,A只能从牌顶抽,B只能从牌底抽。A先手,问,每个人都采取最优策略的情况下,最后两个人的值分别是多少思路:首先,对于A和B来说,所有的牌都是已知的。对于偶数的牌堆,对于A来说,不管前一半是大于后面一半或者是小于,都没有意义,反正一人一半。对于奇数的,想去取最大的那个。反正我觉得这题说证明过程说不出来,只能说好像是这样,似乎也蛮合乎道理的,看了网上很多原创 2017-07-24 14:36:49 · 376 阅读 · 0 评论 -
Fox and Box Accumulation CodeForces - 388A
题意:有n个箱子,告诉你每个箱子上面可以容纳的箱子个数,问至少可以分成几堆箱子。思路: wa 2了发,一直找不出bug, 我想有没有什么东西没特判的。想了很久,没想出来。 想了一个小时,突然想到一个样例,对于3 3 3 ,输出应该是1,而我输出是3,那么问题来了。sort后,对于数字小的,能放的我们应该尽量去放,尽量放的多,这样就尽可能让堆数少#include <bits/stdc++.h>usi原创 2017-07-24 14:44:37 · 312 阅读 · 0 评论 -
Watching a movie CodeForces - 499A
题意 : 一部电影,起始时间是1, 现在想看n个区间内的内容,有两种操作,第一种快进t 秒, 第二种,1s 1s看。思路: 快进到不能快进为止。 贪心思想,注意下看完某个区间后的时间t=r+1#include <bits/stdc++.h>using namespace std;typedef long long ll;struct node{ int l,r;} movie[60原创 2017-08-02 18:35:54 · 425 阅读 · 0 评论 -
A - Valera and Plates CodeForces - 369A
题意:有m个碗,k个碟子,现在有n天计划,如果计划是1,那么要用一个碗,如果计划是2,用碗或者碟子都可以思路:能用碗的先用碗,然后再用碟子。直到2个都用完。数据分析:1 ≤ n, m, k ≤ 1000复杂度分析: O(n)#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(void){原创 2017-08-03 11:26:47 · 392 阅读 · 0 评论 -
Codeforces Round #410 (Div. 2)-B. Mike and strings【STL+略贪心】
题意:已知n个字符串,问经过多少次操作可以使得所有字符串相等。 每次操作: 对于当前字符串,把s[0]放到s的最后一个思路:首先明确一点,次数最少,我们必须得以某一个字符串s为原型,其他去尽可能靠近s(合理)。以每一个字符串s为基础,对于其他字符串,因为头会到尾部,那么我们把字符串t*2(首尾相连)。 用string find函数在字符串*2中去寻找s,如果没找到那么会返回string::np原创 2017-08-10 14:39:45 · 265 阅读 · 0 评论 -
DZY Loves Modification CodeForces - 447D
题意:有一个n * m的矩阵,你必须执行k次操作,每执行一次操作,你可以获得当前行(列)所有值的和,并且当前行(列)所有值减去p , 求执行k次所能获得的所有值 ,和的最大值;思路:对于确定的对行执行i次,对列执行j次,可以确定所能获得的最大值,枚举i从0~k,求出max,减去 k*(k-i)p 就是最后答案。因为在对行和列单独进行贪心的适合,对答案的贡献少减了k(k-1)*p !#include原创 2017-07-26 14:46:38 · 368 阅读 · 0 评论 -
Codeforces 534B Covered Path【有点奇怪的思维+贪心】
题意:已知一辆车在t1时刻的速度v1,在t2时刻的速度v2,t2-t1==t。每秒车速改变范围在[-d,d]内。问,在t时间内,车子最多经过了多少的距离s?思路:一开始我就想,这tm明显是道物理的v-t图像求面积最值的题,然后分类讨论v1,v2的大小关系去决定面积计算方式。结果发现v最大值好像没法确定。 毫无思路,看了题解,感觉有点奇怪。 题解的意思是:我去求每一秒的最大值,然后累加就是最大的路原创 2017-08-11 09:34:31 · 403 阅读 · 0 评论 -
Codeforces Round #382 (Div. 2) B. Urbanization【数据注意+贪心证明】
题意:已知n个数,分别取n1,n2个数字,使得sum1/n1+sum2/n2的值最大。 思路:贪心,如果n1小,那么n1先取最大的,否则n2先取。证明过程如下数据分析:1 ≤ n, n1, n2 ≤ 100 000, n1 + n2 ≤ n,1 ≤ ai ≤ 100 000复杂度分析:O(n)代码:#include <bits/stdc++.h>using namespace std;type原创 2017-08-10 23:39:42 · 433 阅读 · 0 评论 -
E. Subordinates【贪心】
E. Subordinates题意:已知一张图的总祖先和每个顶点拥有的祖先个数,问至少需要修改几个,使得这张图满足情况思路:模拟一下,大概就知道了吧。#include<bits/stdc++.h>#define PI acos(-1.0)#define pb push_back#define F first#define S secondusing namespace std...原创 2018-07-08 23:51:57 · 295 阅读 · 0 评论