摘要:
题目大意:有一条沿x轴正方向,长为L的高速公路,n个村庄,要求修建最少的公路出口数目,使得每个村庄到出口的距离不大于D。题目分析:区间选点问题。在x轴上,到每个村庄距离为D的点有两个(超出范围除外),这两个点便构成了一个区间,这样的区间总共有n个。问题便转化为了,在n个区间中选取最少的点占据所有区间... 阅读全文
摘要:
题目大意:有n个装满水的湖,m天。每天可能下雨也可能晴天,只要下雨就会把湖填满,若已满,则发洪水。有一台只能在晴天使用的抽水机,每次抽水只能抽一个湖,并且全部抽光。问是否存在一种使得不发洪水的抽水方案。题目分析:贪心。贪心策略:对于每个下雨天 i ,让在这天之前的并且在第a[i]个湖上一次水满之后的... 阅读全文
摘要:
题目大意:给一个非负整数序列,求出一个使得区间和乘以区间最小值最大的区间。题目分析:单调队列。维护两个数组,l[i]表示以a[i]为最小值的左半区间的最左边端点,r[i]表示以a[i]为最小值的右半区间的最右边端点,l[i]和r[i]合起来便是以a[i]为最小值的整个区间。枚举一遍 i 即可。注意:... 阅读全文
摘要:
题目大意:给出一个有n个数的序列,找出最短的涵盖1~k之间所有整数的连续区间。题目分析:扫描一遍序列,维护head、tail两个位置。要注意,最短的区间上两端的数一定[1,k]上。代码如下:# include# include# include# includeusing namespace std... 阅读全文
摘要:
题目大意:有n条长度为1的线段,n个区间,第i条线段在第i个区间中,问线段之间的最少间隙有几个。题目分析:先对区间排序,先按右端点排,再按左端点排。有重叠的区间(仅有交点重叠也视为重叠)之间一定可以摆不出空隙来。贪心策略:每碰到一个新的区间(与前面区间没有任何重叠),则把线段放到该区间最后一个长度为... 阅读全文
摘要:
题目大意:将一个1~n的环形排列变成升序的,最少需要几次操作?每次操作可以交换任意两个数字。题目分析:枚举出1的位置。贪心策略:每次操作都保证至少一个数字交换到正确位置上。# include# include# include# includeusing namespace std;int a[20... 阅读全文
摘要:
题目大意:有n件工作,做每件工作的消耗时间为s,截止时间为d,问最多能做完几件工作。题目分析:贪心策略:优先做截止时间靠前的,一旦做不完当前工作,则从已经做过的工作中删去一件耗时最长的,用当前工作取代之。代码如下:# include# include# include# include# inclu... 阅读全文
摘要:
题目大意:一个整数序列a,1≤a[i]≤i。问能否通过在一些元素前加上负号,使得整个序列和为0。题目分析:贪心。贪心策略:每次都先选最大的元素加负号(或保留,不加负号)。 贪心依据:对于1≤a[i]≤i,1~sum[i]总能表示出来。 贪心依据证明:用数学归纳法证明,当i=1时,显... 阅读全文
摘要:
题目大意:一张n个顶点、m条边的无向连通图,用k种颜色着色(相邻顶点颜色不能相同),其中k为不小于点的最大度数的最小奇数。题目分析:水题一道。建张图深搜一下就行了。# include# include# include# include# includeusing namespace std;str... 阅读全文
摘要:
题目大意:考试共有三道题,n个人,每个人对每道题的可能得分已知,现在已知考后排名情况,问排名合不合理。题目分析:贪心。贪心策略:每处理一个排名,都让他的得分尽量高。# include# include# include# includeusing namespace std;const double... 阅读全文