贪心
文章平均质量分 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 · 258 阅读 · 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 · 181 阅读 · 0 评论 -
Codeforces13C. Sequence
题目Solution1.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 · 318 阅读 · 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 · 150 阅读 · 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 · 503 阅读 · 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 · 190 阅读 · 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 · 126 阅读 · 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 · 173 阅读 · 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 · 177 阅读 · 0 评论 -
51nod 1299 监狱逃离
题目 题解 按我的理解对题解改了一些Description给出一个n+1个点n条边的树,其中每一个度数为1的点为出口。 现在有一些点有逃犯,你需要在一些没有逃犯的点放置警卫,有警卫的点逃犯无法经过。 求若使所有逃犯均无法到达出口,最少需要多少个警卫。 n<=10^5Solution为什么我一眼想到最小割=w= 就是所有的逃犯无法到达一些点,那么我们把每个点拆点...转载 2018-07-13 10:52:15 · 169 阅读 · 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 · 191 阅读 · 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 · 169 阅读 · 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 · 219 阅读 · 0 评论 -
51nod1328 比赛往事
1.首先要确定一个思路,必须换的P和C始终要维持从小到大的顺序,和田忌赛马有点相似,但区别是这个是判断能否全部成立,田忌赛马是最多赢的匹数可以确定的是在判断能否全部成立上,乱序能成立,排序一定成立2.从大到小找到第一个需要引入外部项的tmp,即P[tmp]>C[tmp]i)假如我们能找到一个可行(能让tmp和新插入的都满足条件)的外部项,必要条件是P[tmp]原创 2018-06-20 20:33:52 · 185 阅读 · 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 · 201 阅读 · 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 · 212 阅读 · 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−epsepsepseps越小越好,但是因为题目中...原创 2019-03-14 18:50:55 · 121 阅读 · 0 评论