贪心
河渔船
成长的小垃圾
展开
-
P1204 挤牛奶
https://www.luogu.org/record/lists?pid=P1204维护区间#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<queue>#include<vector>#include<cstdio> using namespace std;int n,m原创 2017-03-17 15:05:59 · 402 阅读 · 0 评论 -
NOIP 2013 花匠
评测传送这个题是DP? 贪心可以做的。 将相邻的相同高度的合并,搞一下波峰波谷以及ans+1-1的就可以了#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int N=100009;int n,a[N],ans;原创 2017-10-18 14:07:44 · 250 阅读 · 0 评论 -
凝视 eyesight
【问题描述】 背包是个好东西,希望我也有。 给你一个二维的背包,它的体积是。现在你有一些大小为和的物品,每个物品有自己的价值。你希望往背包里面装一些物品,使得它们的价值和最大,问最大的价值和是多少。 【输入格式】 第一行一个整数代表该测试点的数据组数。 对于每组数据,第一行有四个整数,其中分别代表大小为和大小为的物品个数。 接下来一行有个数代表每个物品的价值。 接下来一行有个数代表每个原创 2017-10-06 08:12:14 · 199 阅读 · 0 评论 -
洛谷10月月赛R2·浴谷八连测R4
Problem A. 逃避 (nigeru.c/cpp/pas) Input file: nigeru.in Output file: nigeru.out Time limit: 1 second Memory limit: 8 megabytes给定一篇只含有大小写字母,空格以及 ′ . ′ (不含引号)的长度为 L 的文章。文章被若干个 ′ . ′ 划分 成若干个句子,句子被若原创 2017-10-28 15:33:11 · 382 阅读 · 0 评论 -
洛谷10月月赛R2·浴谷八连测R3 -Chtholly-
T1 浮游大陆的68号岛 T2 Chtholly Nota Seniorious T1 这个题还是比较简单的,毕竟是第一题。 首先,不要想复杂的数据结构,因为中间没有修改值,蒟蒻就是因为高大上的数据结构不精通,所以没有走弯路喽。用一个前缀和来记录储物点的物件数目; dis数组记录到1点的距离; cost数组记录前i个储物点的物品都搬到1点的花费。 接下来就是模拟了。 分为三种情况原创 2017-10-27 15:31:47 · 473 阅读 · 0 评论 -
洛谷 NOIP 模拟 DAY2
T1 入阵曲题目链接 n^4的做法很容易想到。 100分的做法一开始没想到; 我们枚举两行,然后求这两行之间的和时,记录下和的种类和数量,求到第j列的时候,前面有几列取模k得到的数与当前求得的一样时,那么这两列之间的和一定是k的倍数。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#includ原创 2017-11-07 20:51:12 · 275 阅读 · 0 评论 -
洛谷八连测 #R8
题目链接T1答案是求C1x+1∗Ck−1n−1/Ckn+xC_{x+1}^1*C_{n-1}^{k-1}/C_{n+x}^k 取得最大值时的x值。 数学题。 化简,求单调性。T2对每一门成绩都建一棵树。 每条边都加一条反向边。 能够通过正向边到达的点都是比自己成绩低的,反向边则是比自己高的。 最好成绩是只有三门成绩搜比自己高时才比自己高。 最坏成绩是只有三门都比自己低时才比自己低。原创 2017-11-07 21:02:51 · 391 阅读 · 0 评论 -
NOIP 2015 疫情控制
评测传送二分答案+贪心。 越往上越优,所以在枚举的范围内,能往上就往上。 细节处理很重要。 我的代码有一处是待优化的,调了一下午,身心俱疲,不想再写了。 就这样吧 95分。#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<vector>#include<algorithm>#def原创 2017-10-23 11:31:46 · 381 阅读 · 0 评论 -
NOIP 模拟题 小G搭积木
文件名 输入文件 输出文件 时间限制 空间限制 box.cpp box.in box.out 2s 128MB题目描述 小 G 喜欢搭积木。 小 G 一共有 n 块积木, 并且积木只能竖着一块一块的摞, 可 以摞多列。小 G 的积木都是智能积木,第 i 块积木有一个情绪值 X i 。当摞在该积 木上面积木总数超过 X i 时,i 号积木就会不高兴。小 G 情商这么高,肯定不希望 有积木不高原创 2017-10-24 17:40:24 · 955 阅读 · 0 评论 -
NOIP 模拟题 消失的数字
A 消失的数字 文件名 输入文件 输出文件 时间限制 空间限制 del.cpp/c/pas del.in del.out 1s 512MB 题目描述 现在,我的手上有 n 个数字,分别是 a 1 ,a 2 ,a 3 ,…,a n 。 我现在需要删除其中的 k 个数字。当然我不希望随随便便删除,我希望删除 k 个数字之后,剩下的 n − k 个数中有最多的不同的数。 输入格式 第一行两原创 2017-10-25 16:45:00 · 380 阅读 · 0 评论 -
NOIP 2012 国王游戏
评测传送贪心,按照a*b升序排序,如果相同,则a小的在前。如果直接上单纯的计算会炸掉,60分。需要加高精。我压了4位。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<ctime>#include<queue>#define LL long longconst long long原创 2017-10-19 14:11:01 · 348 阅读 · 0 评论 -
P1417 烹调方案
题目传送做法:贪心+01背包这里贪心的方法是很重要的。类似的题目还有P1012 拼数和NOIP 国王游戏贪心的原则 a1−(t+c1)∗b1+a2−(t+c1+c2)∗b2>a2−(t+c2)∗b2+a1−(t+c1+c2)∗b1a1-(t+c1)*b1+a2-(t+c1+c2)*b2>a2-(t+c2)*b2+a1-(t+c1+c2)*b1 得到 c1∗b2<c2∗b1c1*b2<c2*b1原创 2017-10-26 11:37:39 · 289 阅读 · 0 评论 -
最多区间
原题 请允许我起个很土的名字。 题目大意:有多个活动,每个活动都有开始和结束的时间,在同一时刻不能同时参见多个活动,问最多能参加多少个活动? 对于100%的数据,n≤1000000,0≤ai<bi≤1000000。贪心。 按照r从小到大排序,肯定优先选择r小的,这样能给后面留出更多的空间。#include<iostream>#include<cstdio>#include<cstring原创 2017-10-26 16:59:37 · 291 阅读 · 0 评论 -
刷题#R13
纸牌 题目描述 在桌面上放着n张纸牌,每张纸牌有两面,每面都写着一个非负整数。你的邪王真眼可以看到所有牌朝上的一面和朝下的一面写的数字。现在你需要将一些牌翻过来,使得所有牌朝上的一面中,至少有一半(≥n/2)的数字是一样的。请你求出最少需要翻几张牌,或者判断无解。 注意:在翻牌的时候,你不能把牌扔掉,不能偷偷把别的牌放进来,也不能用笔涂改牌上面的数字。输入格式 第一行包含一个整数n,原创 2017-11-04 18:48:08 · 708 阅读 · 0 评论 -
刷题#R12
T1 贪心模拟 从右往左,遇见m是1的位,有选或者不选两种操作:如果这一位是负数,那肯定不选更优,把这一位的二进制看做0,那么前面就可以任意选;如果选,那么sum+a[i],继续向前扫。 T2 二分答案 +DP 二分两个数之间的差的最大值 F[i]表示i不改变的最小修改的元素个数 f[i] = min(f[j] +(i-j-1), i-1) abs(A[j]-A[i]) < 二分出来原创 2017-11-05 13:56:38 · 259 阅读 · 0 评论 -
两道贪心题
一、 P1809 渡河问题 二、 P1325 雷达覆盖#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define LL long longusing namespace std;const int N=100009;int n,a[N];LL ans;int main(){原创 2017-11-05 14:23:42 · 207 阅读 · 0 评论 -
P3017 [USACO11MAR]布朗尼切片Brownie Slicing
题目传送 二分答案+贪心+前缀和优化对于二分的答案x,我们对于每一条,先假设宽为1,看看能不满足分为不小于x的b块,如果不满足,宽度就加宽,如此处理即可。 一开始循环中的终止条件写错,调了好长时间。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath> #define L原创 2017-11-05 15:53:33 · 610 阅读 · 0 评论 -
选数字 (select)
Time Limit:3000ms Memory Limit:64MB题目描述LYK 找到了一个 n*m 的矩阵,这个矩阵上都填有一些数字,对于第 i 行第 j 列的位置上的数为 ai,j。由于它 AK 了 noip2016 的初赛,最近显得非常无聊,便想到了一个方法自娱自乐一番。它想到的游戏是这样的:每次选择一行或者一列,它得到的快乐值将会是这一行或者一列的数字之和。之后它将该行或者该列上的数原创 2017-10-07 14:31:26 · 1238 阅读 · 0 评论 -
Neighbor 隔壁
最大值的求法:h[i][j]的高度为min(h1[i],h2[j]);既保证不会超过最大值,又能尽量的大。 最小值的求法:先考虑没有重复的,每一个高度都需要加上。除了需要看见的,其他的都设为零。 在每一行放置的时候,如果某一列中有与他相等的,且还没有放置 ,就可以将这两个柱子重合,减去一倍的高度。#include<iostream>#include<cstdio>#include<cmat原创 2017-09-20 16:09:29 · 304 阅读 · 0 评论 -
P1209 修理牛棚
https://www.luogu.org/problem/show?pid=1209贪心: 先把连着的牛们用板连起来(相连的几头牛称为),如果块数>m,则需要连板,显然把牛群中间相隔最短的连起来,长度就需要加上补上的这块。#include<iostream>//减板 #include<cstring>#include<string>#include<algorithm>#include<原创 2017-03-14 19:03:22 · 437 阅读 · 0 评论 -
Hamburgers [CF-371C]
最好的做法:二分答案。根据枚举的答案判断是否能做出这个数量的汉堡,不断优化答案。(需要注意上边界,不要忘了原有的材料数)。 代码:#include<iostream>#include<cstdio>#include<cstring> #include<cmath>#define LL long longusing namespace std;int nb,ns,nc;int pb,p原创 2017-06-16 16:04:39 · 472 阅读 · 0 评论 -
P3650 滑雪课程设计
https://www.luogu.org/problem/show?pid=3650 贪心. 方法:枚举山的高度作为最低点,把把山全部转移到这个范围内的花费记下来,不断求最小值。#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<algorithm>#include<cmath> #原创 2017-06-09 18:02:14 · 337 阅读 · 0 评论 -
stick
木棍(stick) Time Limit:1000ms Memory Limit:128MB题目描述 LYK有很多木棍,具体的,总共有n根,且每根木棍都有一个长度。为了方便起见,我们可以用一个正整数ai表示第i根木棍的长度。 LYK有一把小刀,但这把小刀由于削木棍很不方便,对于一根木棍而言,它只能用这把小刀削掉恰好1的长度。 LYK觉得如果4根木棍头尾相连能恰好拼成长方形,说明这4根木棍原创 2017-07-24 10:31:24 · 658 阅读 · 0 评论 -
P3819 松江1843路
luogu 传送门介绍一下我的做法: 对房子按照坐标排序,对每一个房子,记一下前缀和后缀和(前面/后面房子中的人到当前房子的路程和), 最后扫一遍取前缀和和后缀和的和的min就可以了。但是好像跟样例解释不太一样啊。#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>原创 2017-08-16 19:10:47 · 286 阅读 · 0 评论 -
Codevs 1959 拔河比赛
http://codevs.cn/problem/1959/ 有两种做法: 第一种:dp;不过这个dp比较难想,而且比较特别,,解释见代码注释。#include<iostream>#include<algorithm>#include<cstdio>#include<cmath> using namespace std;int n,sum,k,a[105];bool f[105][45原创 2017-08-10 16:45:26 · 553 阅读 · 0 评论 -
P2757 导弹的召唤(数据加强)
评测 题目描述同上题。 其中n<=300000。 很明显,需要用dp而且要用nlogn复杂度的方法求子序列。#include<iostream>#include<cstdio>#include<algorithm>#define LL long long#define M 2147483647using namespace std;int n,a[300005],len;int原创 2017-06-06 08:25:58 · 413 阅读 · 0 评论 -
P1984 [SDOI2008]烧水问题
luogu 传送门这题好生厉害!如果n再小一点的话,这题是个贪心。我们把烧到过100度的水能进行热传导就进行热传导,一直向后进行。 这种做法是O(n^2)的,显然过不了。 然后注意到,这题肯定有规律嘛!推导:设沸腾温度为a 则第一杯温度为a,需要加热t1=a 第二杯可以中和的最高温度为a/2,需要加热t2=a/2 第三杯可以中和的最高温度为t3=(a/4+a)/2=5a/8,需要加热t原创 2017-08-10 20:52:34 · 387 阅读 · 0 评论 -
P2629 好消息,坏消息
luogu 传送门 题目描述 给出一个 n 个数的序列,为 A0,A1,„„,An-1,循环移动 k 位之后,这个序列就变 成了 Ak,Ak+1,,,,An-1,A0,A1,,,,Ak-1。一种优秀的循环移动是,对于任意的 前 i(1<=i<=n)项和都满足不小于零。请给出这个序列优秀循环移动的个数。 题目有两种非常机智的做法。 第一种:吞噬算法。第一种:吞噬算法。 其实挺好理解,我们用负数原创 2017-08-11 10:44:41 · 360 阅读 · 0 评论 -
毕业考试
问题描述 快毕业了,Barry希望能通过期末的N门考试来顺利毕业。如果他的N门考试平均分能够达到V分,则他能够成功毕业。现在已知每门的分数不能够超过R;他的第i门考试目前得分为Ai,如果想要在这门科目增加一分则需要多写Bi篇论文。Barry想知道,如果想要毕业的话,他最少需要写多少篇论文?输入格式(exam.in) 第一行三个整数,N, R, V,分别代表考试科目数,每门考试的最高分,需要达到的原创 2017-07-27 14:39:22 · 293 阅读 · 0 评论 -
#82. 【UR #7】水题生成器
uoj 传送门这是uoj上的题解先写了一个45分的dfs#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define LL long longusing namespace std;LL n,m,ans[50],P=1;void dfs(int x,LL sum原创 2017-08-19 08:56:20 · 323 阅读 · 0 评论 -
业务办理
仔细分析,发现要使最大不满意度最小,排队顺序应该是按照最长等待时间来排。 如果不是这样,交换任意两个人的位置,那么这两个人等待时间的最大值一定比原来大。 所以这样排的正确性显然。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define LL long long#define M 10000原创 2017-08-20 15:03:49 · 372 阅读 · 1 评论 -
阅读计划(book)
问题描述 暑假到了,Rick制定了一个长达M天的阅读计划。他一共有N本书,从1至N进行标号;Rick将它们从上至下摞成一堆。他每天都会读一本书,假设他要读编号为X的书,他会按照以下步骤: 1. 将这本书上方的所有书搬起来 2. 将这本书拿出来 3. 将搬起来的书摞回去 4. 看完后把这本书放到顶端 每本书都会有各自的重量,Rick不希望搬起太过重的书。于是他希望能重新安排这N本书的顺序,原创 2017-07-28 14:30:26 · 2753 阅读 · 0 评论 -
P1514 引水入城
https://www.luogu.org/problem/show?pid=1514先用dfs搜索,从最上面的一行往下拓展,所有点拓展完后,扫描最后一行是否有没被染上色的,有则说明 不能满足要求; 如果没有,在用dfs,计算出最上面一行的每个点(大于等于两边的点)能拓展到的最左端和最右端,然后就转化成了区间覆盖问题。区间覆盖问题是给你几个区间,然后给你一个大区间,用尽量少的小区间来覆盖大区间。原创 2017-08-06 20:52:31 · 334 阅读 · 0 评论 -
P3817 小A的糖果
luogu 传送门挺好想的贪心(蒟蒻一下就想到啦)。 我们从前往后处理时,尽量吃后面的糖,因为后面的糖会对后面产生影响,而前面的就不会影响了。 不过要开long long 为此,我wa了两个点。#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#define LL l原创 2017-08-15 10:55:58 · 233 阅读 · 0 评论 -
小Y的问题
30分做法:n^4枚举边. 100分做法: 枚举每一条边,设两个端点为x,y; 我们通过组合公式来计算 Y 的个数,每一次加上C(num[x]-1)*(num[y]-1); 通过记连接一个点的边的最大值,次大值,第三大值。 加上除去枚举的边外x连接的最大的两条边,以及y连接的除去… 之后最大的边。 然后再将x和y换过来,重复一遍。重复上述操作。#include<cstdio>#incl原创 2017-08-15 21:19:12 · 523 阅读 · 0 评论 -
P2985 [USACO10FEB]吃巧克力
题目传送二分答案+贪心需要注意的问题是,最后上下的巧克力要在最后一天吃完! 因为这个问题,调了2个小时!#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath> #define LL long longusing namespace std;int n,d,a[50009原创 2017-11-05 17:29:55 · 331 阅读 · 0 评论