贪心
最菜的acmer
这个作者很懒,什么都没留下…
展开
-
hdu-3183(贪心+RMQ)
题目大意:给你n数字然后删除m个数字都要使得这个数的数值最小 题解思路:如果你第钱面1-a-1个数字中已经选好了a个数字开始选然后要删除b个那么你至少从a+b里面选一个数字出来所以每次选择都记录一些删除了多少个数字和选到哪里了当然如果有多个一样小的数字优先选最前面的一个 注意可能m>=n这个时候等于0 题目链接#include<cstdio>#include<cstring>#includ原创 2017-05-31 16:35:17 · 334 阅读 · 0 评论 -
ZOJ - 4004(贪心)
直接排序然后从i = 0开始选择i,i+m选m组相乘相加即可#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>using namespace std;typedef long long int ll;const int mx = 1e5+5;int...原创 2018-03-13 23:07:37 · 322 阅读 · 0 评论 -
CodeForces - 527B(贪心)
题解:用vis[]a[i][b[i]]记录一下a和b两个错误的字母的位置判断是否有没有vis[b[i]][a[i]]]存在如果有就换过去汉明距离-2肯定是最优的如果没有就查看b串上面是否有位置不与a匹配并且等于a[i]即可#include#include#include#include#include#include#include#include#includeusing原创 2017-12-25 00:12:11 · 282 阅读 · 1 评论 -
CodeForces - 805D
题解:从后往前扫你会发现每个a后面有多少个b就要变多少次,接着b的个数就会翻倍#include#include#include#include#include#include#include#include#includeusing namespace std;#define rep(a,b) for(int i = a; i <= b; i++)#define dec(原创 2017-12-24 23:56:09 · 231 阅读 · 0 评论 -
hdu6178Monkeys-(贪心+读入优化)
题解:直接求最大匹配多少然后如果匹配点数大于k那么就是(k+1)/2,如果不是那么就是k-匹配点数/2,由于数比较大用HK求最大匹配即可;PS:这题如果不用fread读入挂读数据不管怎么写都会超时所以要用fread读入挂#include#include#include#include#include#includeusing namespace std;inline原创 2017-08-24 18:06:27 · 802 阅读 · 2 评论 -
hdu6180Schedule-(贪心)
题解:按开始工作的时间从小到大排序后,用一个set容器维护一下,每次加入找set里面结束时间小于等于开始时间并且最近的点插入即可,然后如果没有小于开始时间的就重新开一台机器即可#include#include#include#include#includeusing namespace std;typedef long long int ll;const int mx = 1e5原创 2017-08-24 18:20:26 · 1084 阅读 · 0 评论 -
hdu6034-贪心
题意:给a-z字符赋上0-25每个数字只能赋一次求怎么赋值使得数值最大然后取膜1e9+7 题解:给拥有最大位数并且最大位数的拥有个数最多的赋值最大然后依次递减记得处理前导不能为0的情况#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;typedef long原创 2017-07-27 11:00:54 · 302 阅读 · 0 评论 -
fzu2281-贪心+大数压位
思路:我用c[i]>c[i-1]的时候我就可以在昨天买然后在今天卖因为此题是求最后的值取余1e9+7所以要用大数求因为最后数值可能很大所以要用压位#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>using namespace std;typedef long long int ll;const l原创 2017-07-24 18:34:52 · 607 阅读 · 0 评论 -
Codeforces Round #423Div. 2 A-E题解
A题:水题看题目然后模拟一下就好了#include <bits/stdc++.h>using namespace std;int main(){ int n,o,t; int tmp=0; int ans=0; scanf("%d%d%d",&n,&o,&t); while(n--) { int x; scanf(原创 2017-07-12 21:22:36 · 376 阅读 · 0 评论 -
CF962E- Byteland, Berland and Disputed Cities (贪心)
题意:让你给点连线,再去除所有R点,或B点后都可以实现任意两点互相可达,并且代价最小,两点连线的代码为两点间的距离题解:我只需要当到达P点的时候要么与前一个p点相连3次然后减取之前R点B点的最大两点距离,或者就直接与前面一个点连接两次取两者最小值即可,其他情况直接与前面一个点相连即可#include<iostream>#include<cstring>#include&...原创 2018-04-12 19:26:15 · 422 阅读 · 0 评论