![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
文章平均质量分 57
蜗角虚名羊
这个作者很懒,什么都没留下…
展开
-
bzoj1217: [HNOI2003]消防局的设立
题目 题解: 贪心。因为每个点都要被覆盖,所以每次取最深的一个点k,取t为k的爷爷,然后覆盖所有与t距离为1、2的点 标程: #include<bits/stdc++.h> using namespace std; int n,i,j,k,mx,p,t,fa[1003],x,dep[1003],h,v[1003],tt; vector<int>a[100...原创 2018-04-23 09:14:38 · 251 阅读 · 0 评论 -
绍兴一中模拟赛3.13——排列的区间最大值限制
Description 有一个大小为n(n≤109)n(n≤10^9)n(n≤109)的排列和m(m≤50)m(m≤50)m(m≤50)个限制,每个限制(l,r,q)(l,r,q)(l,r,q)表示在区间[l,r][l,r][l,r]内的最大值必须是qqq,问是否存在一个满足所有条件的排列 Solution 考虑贪心(网络流也可以做,本质是一样的) 分析“[l,r][l,r][l,r]内的最大值必...原创 2019-03-14 11:41:16 · 166 阅读 · 0 评论 -
Codeforces13C. Sequence
题目 Solution 1.dp 变化后的每一个值肯定是等于原来序列的某个值(不会证) (a为原序列,b为排序后的序列),方程的意思是,把序列前i个数变为非递减序列并且以不超过b[j]的值结尾的最小花费,那么它要么是以不超过b[j-1]结尾的最小花费,或者是刚好以b[j]结尾的最小花费 #include<bits/stdc++.h> using namespace std; int n...原创 2018-12-23 22:13:53 · 306 阅读 · 0 评论 -
poj1456 Supermarket
题目 每次尽可能选大的,不知道怎么证正确性,但感觉是对的 #include&amp;lt;cstdio&amp;gt; #include&amp;lt;algorithm&amp;gt; using namespace std; const int N=10002; int n,i,pos,fa[N],ans; struct node{ int x,y; }a[N]; int find(int x){ return x==f...原创 2018-12-11 16:11:29 · 138 阅读 · 0 评论 -
51nod 2206 低买高卖&codeforces867E Buy Low Sell High
题目 Solution 用堆保存最小值,遇到大于堆顶的元素就把ans加上差值,然后这个元素入队两次,入队两次是为了有一次“后悔”的机会,也就是先选着,遇到更好的就替换掉 Code #include<bits/stdc++.h> using namespace std; int i,ans,x,n; priority_queue<int,vector<int>,grea...原创 2018-12-20 23:27:33 · 486 阅读 · 1 评论 -
bzoj3174: [Tjoi2013]拯救小矮人
题目 题解 Solution 考虑相邻的a和b 若a.a+a.b<b.a+b.b则b应该在a之后逃跑 大概这样理解 就是如果只能通过一个,那么我无论怎么放都一样(后面是dp) 如果可能通过俩,那么显然要把逃跑能力强的放在后面 然后dp一下 f[i]表示逃跑i个人后剩下的人梯最高的高度 Code #include<bits/stdc++.h> using namespace std...转载 2018-11-01 08:15:15 · 180 阅读 · 0 评论 -
Codeforces 1042F. Leaf Sets
题目 题解 Solution 把子树拆成几条链,每次合并短的几条链 Code #include<bits/stdc++.h> using namespace std; const int N=1000001; struct node{ int to,ne; }e[N<<1]; int n,m,i,x,y,d[N],tot,h[N],ans; inline char gc(...转载 2018-10-31 07:44:59 · 112 阅读 · 0 评论 -
51nod1385 凑数字
题目 题解 Solution 这个题,其实就是和数位 dp 相似,分为满状态和非满状态来考虑,什么叫满状态呢?就拿 212121 来说吧,当最高位为00 0、111 的时候,所表示的数为分别为 0∼90∼90∼9 和10∼1910∼19 10∼19,这叫做满,而如果是 2 开头,那么就只需要表示20∼2120∼21 20∼21,这叫非满。 于是乎,对于满状态,你无可抗拒的需要对应的每一位都...转载 2018-08-14 14:48:51 · 164 阅读 · 0 评论 -
bzoj2525: [Poi2011]Dynamite
题目 思路出处 感觉这题就是消防局的设立+n开大300倍+距离为任意数+二分答案 显然,这题就是二分答案后,把当前最深的点向上ans单位,然后覆盖这个点,并把ans距离内的全覆盖一遍,但这样很难写,要稍微换一下写法 设b[i]表示i点是否被覆盖, 当b[i]==0时,f[x]表示以x为根的子树中目前还没有人管理的关键点距离x的最远的距离 否则,f[x]表示以x为根的子树中选择了的点距离...原创 2018-07-15 10:07:36 · 168 阅读 · 0 评论 -
51nod 1299 监狱逃离
题目 题解 按我的理解对题解改了一些 Description 给出一个n+1个点n条边的树,其中每一个度数为1的点为出口。 现在有一些点有逃犯,你需要在一些没有逃犯的点放置警卫,有警卫的点逃犯无法经过。 求若使所有逃犯均无法到达出口,最少需要多少个警卫。 n<=10^5 Solution 为什么我一眼想到最小割=w= 就是所有的逃犯无法到达一些点,那么我们把每个点拆点...转载 2018-07-13 10:52:15 · 157 阅读 · 0 评论 -
51nod 1380 夹克老爷的逢三抽一
题目 题解 设最大值为b,左边为a,右边为c 解释一下为什么要把a+c-b放回去 因为b不一定是最优的,说不定a、c和b差不多大,同时选a、c可能比b更优,把a+c-b放回去,若再次取出,则相当于用两次选了a和c,满足题意,也满足贪心 #include<bits/stdc++.h> using namespace std; typedef long long ll; ...原创 2018-07-09 15:00:23 · 177 阅读 · 0 评论 -
cf767B. The Queue
题目 题解 细节特别多,写完以后wa了三四发以后实在想不出哪里漏想了,就看数据,又wa了好几发,实在不行,就看了题解 程序其实很短 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=100002; int i,n; ll x,s,ans,t,e,mx,mn; inline...原创 2018-07-08 10:31:13 · 157 阅读 · 0 评论 -
bzoj1193: [HNOI2006]马步距离
题目 题解 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int x1,y1,x2,y2,x,y,ans,dis[62][62],qx[10002],qy[10002], b[8][2]={{1,2},{2,1},{2,-1},{1,-2},{-1,-2...转载 2018-06-30 12:05:07 · 208 阅读 · 0 评论 -
51nod1328 比赛往事
1.首先要确定一个思路,必须换的P和C始终要维持从小到大的顺序,和田忌赛马有点相似,但区别是这个是判断能否全部成立,田忌赛马是最多赢的匹数 可以确定的是在判断能否全部成立上,乱序能成立,排序一定成立 2.从大到小找到第一个需要引入外部项的tmp,即P[tmp]>C[tmp] i)假如我们能找到一个可行(能让tmp和新插入的都满足条件)的外部项,必要条件是P[tmp]原创 2018-06-20 20:33:52 · 180 阅读 · 1 评论 -
bzoj1899: [ZJOI2004]Lunch 午餐
题目 题解: 有一个贪心策略:吃饭时间越长的越早打饭 然后动规,f[i][j]表示前i-1个数,第一个队列恰好要j的时间的最晚集合时间 可以降维,把i去掉 初始化:f[0]=0,其余为正无穷 第一个窗口打饭: f[j]=min(f[j],max(f[j-x],j+y)) (x<=j<=sum) =>f[j+x]=min(f[j+x],max(f[j],j...原创 2018-04-24 22:55:45 · 189 阅读 · 0 评论 -
51nod1125 交换机器的最小代价
题目 题解 标程: #include&lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; const int N=50003; struct kk{ int x,id; }a[N]; ll ans,mn; int n,i,vis[N]; bool cmp(kk x,kk y){ return x.x&...原创 2018-04-23 10:53:28 · 198 阅读 · 0 评论 -
AtCoder Grand Contest 016 C - +/- Rectangle
题目 Solution 首先,有一个贪心思想:选择行被hhh整除,列被www整除的点作为关键点,值为负数,其他点全是正数 设关键点的点权为xxx,其他点为yyy 那么,有x+y(hw−1)&amp;lt;0x+y(hw-1)&amp;lt;0x+y(hw−1)&lt;0 所以,x=(1−hw)y−epsx=(1-hw)y-epsx=(1−hw)y−eps epsepseps越小越好,但是因为题目中...原创 2019-03-14 18:50:55 · 113 阅读 · 0 评论