随笔分类 - 高效算法
HDU 5437 Alisha’s Party (优先队列模拟)
摘要:题意:邀请k个朋友,每个朋友带有礼物价值不一,m次开门,每次开门让一定人数p(如果门外人数少于p,全都进去)进来,当最后所有人都到了还会再开一次门,让还没进来的人进来,每次都是礼物价值高的人先进。最后给出q个数,表示要输出第ni个进来的人的名字。 析:其实这就是一个模拟题,很容易知道是优先队列模拟,
阅读全文
HDU 3363 Ice-sugar Gourd (贪心)
摘要:题意:给你一个串,串中有H跟T两种字符,然后切任意刀,使得能把H跟T各自分为原来的一半。 析:由于只有两个字母,那么只要可以分成两份,那么一定有一段是连续的。 代码如下:
阅读全文
CodeForces 288C Polo the Penguin and XOR operation (位运算,异或)
摘要:题意:给一个数 n,让你求一个排列,使得这个排列与0-n的对应数的异或之最大。 析:既然是异或就得考虑异或的用法,然后想怎么才是最大呢,如果两个数二进制数正好互补,不就最大了么,比如,一个数是100,那么我们只要找11,(都是二进制) 这不就正好么,一试,果然是这样。就是这样找,而且两两正好配对,如
阅读全文
CodeForces 288B Polo the Penguin and Houses (暴力或都快速幂)
摘要:题意:给定 n 和k,n 表示有n个房子,然后每个有一个编号,一只鹅要从一个房间中开始走,下一站就是房间的编号,现在要你求出有多少种方法编号并满足下面的要求: 1.如果从1-k房间开始走,一定能直到 1。 2.如果从k+1到n 开始走,一定走不到 1. 3.如果从 1 开始走,那么一定能回到1,并且
阅读全文
CodeForces 540B School Marks (贪心)
摘要:题意:先给定5个数,n, k, p, x, y。分别表示 一共有 n 个成绩,并且已经给定了 k 个,每门成绩 大于0 小于等于p,成绩总和小于等于x, 但中位数大于等于y。让你找出另外的n-k个成绩。 析:利用贪心算法,首先是只能小于等于 p,也就是成绩越小越好, 然后中位数还得大于等于y,所以我
阅读全文
CodeForces 427B Prison Transfer (滑动窗口)
摘要:题意:给定 n, t, c 和 n 个数,问你在这 n 个数中有多少连续的 c 个数,并且这个 c 个数不大于 t。 析:很简单么,是滑动窗口,从第一个开始遍历,如果找到 c 个数,那么让区间前端点加1,如果找不到,那么就区间前端等于后区间+1. 代码如下:
阅读全文
CodeForces 474B Worms (水题,二分)
摘要:题意:给定 n 堆数,然后有 m 个话询问,问你在哪一堆里。 析:这个题是一个二分题,但是有一个函数,可以代替写二分,lower_bound. 代码如下:
阅读全文
CodeForces 342B Xenia and Spies (水题模拟,贪心)
摘要:题意:给定 n 个间谍,m个区间,一个 s,一个f,然后从 s开始传纸条,然后传到 f,然后在每个 t 时间在区间内的不能传,问你最少的时间传过去。 析:这个题,就模拟一下就好,贪心策略,能传就传,找好方向,一直传就行,传到 f 就结束。 代码如下:
阅读全文
CoderForces 518C Anya and Smartphone (模拟)
摘要:题意:给定一个手机,然后一共有 n 个app,告诉你每个屏幕最多放 k 个,现在要你运行 m 个app,每次都从第一个屏幕开始滑动,每运行一个,它就和前一个交换位置,第一个就不换了,现在问你要滑动多少次。 析:这个题,没什么算法,就是模拟呗,不过要注意时间,不能TLE,所以我们就得提前把所有的位置都
阅读全文
UVa 1606 Amphiphilic Carbon Molecules (扫描法+极角排序)
摘要:题意:平面上有 n 个点,每个点不是黑的就是白的,现在要放一个隔板,把它们分成两部分,使得一侧的白点数加上另一侧的黑点数最多。 析:这个题很容易想到的就是暴力,不妨假设隔板至少经过两个点,即使不经过也可以通过平移使它经过,然后每次枚举两个点,当作隔板,枚举量是n*n, 然后计算是 n,那么时间复杂度
阅读全文
UVa 1616 Caravan Robbers (二分+贪心)
摘要:题意:给定 n 个区间,然后把它们变成等长的,并且不相交,问最大长度。 析:首先是二分最大长度,这个地方精度卡的太厉害了,都卡到1e-9了,平时一般的1e-8就行,二分后判断是不是满足不相交,找出最长的。这个题并不难, 就是精度可能控制不好,再就是把小数化成分数时,可能有点麻烦。 代码如下:
阅读全文
UVa 10570 Meeting with Aliens (暴力)
摘要:题意:给定一个排列,每次可交换两个数,用最少的次数把它变成一个1~n的环状排列。 析:暴力题。很容易想到,把所有的情况都算一下,然后再选出次数最少的那一个,也就是说,我们把所有的可能的形成环状排列全算一下,然后选出最少的。 那么就开一个两倍的数组,然后两遍从1到n,然后每次选 n 个,进行暴力,每找
阅读全文
UVa 1153 Keep the Customer Satisfied (贪心+优先队列)
摘要:题意:给定 n 个工作,已知每个工作要用的时间 q 和 截止时间 d,问你最多完成多少个工作,每次最多能运行一个工作。 析:这个题是贪心,应该能看出来,关键是贪心策略是什么,这样想,先按截止时间排序,那么这样,所有的工作就是都是按照截止时间排,因为我们先保证, 截止时间早的先选,然后再从把所有的遍历
阅读全文
UVa 1612 Guess (贪心+题意)
摘要:题意:有 n 位选手参加编程比赛。比赛有3道题目,每个选手的每道题目都有一个评测之前的预得分(这个分数和选手提交程序的时间相关,提交的越早,预得分越大)。 接下来 是系统评测。如果某道题未通过测试,则改题的实际得分为0分,否则得分等于预得分。得分相同的选手,ID小的排在前面。 问是否能给出所有3n个
阅读全文
UVa 1615 Highway (贪心,区间选点问题)
摘要:题意:给定一个数 n 个点,和一个d,要求在x轴上选出尽量少的点,使得对于给定的每个点,都有一个选出的点离它的欧几里德距离不超过d。 析:首先这是一个贪心的题目,并且是区间选点问题,什么是区间选点呢,就是说在数轴上有 n 个闭区间,取尽量少的点,使得每个区间都至少有一个点。 一看是不是和这个题很相似
阅读全文
UVa 11925 Generating Permutations (构造法)
摘要:题意:给定一个序列,让你从一个升序列变成该序列,并且只有两种操作,操作1:交换前两个元素,操作2:把第一个元素移动到最后。 析:一开始的时候吧,不会,还是看的题解,首先是要逆序来做,这样可能好做一点,那么操作1不变,操作2变成把最后一个元素放到最前面。 就像是冒泡排序一样,如果第一个元素大于第二个,
阅读全文
UVa 1614 Hell on the Markets (贪心+推理)
摘要:题意:给定一个长度为 n 的序列,满足 1 <= ai <= i,要求确实每一个的符号,使得它们和为0. 析:首先这一个贪心的题目,再首先不是我想出来的,是我猜的,但并不知道为什么,然后在网上搜了一下题解,是什么数学归纳法。。。。。。 贪心策略:1~i的和或者部分和一定能凑出来1~sum[i]。 利
阅读全文
UVa 11491 Erasing and Winning (贪心,单调队列或暴力)
摘要:题意:给一个数字(开头非0),拿掉其中的d个数字,使剩下的数字最大(前后顺序不能变)。 析:拿掉d个数字,还剩下n-d个数字。相当于从n个数字中按先后顺序选出n-d个数字使组成的数字最大,当然采用窗口滑动优先选取大的。 也就是说,当然第一位最大,这个数就最大了,所以这是一个贪心算法。我开始并不知道有
阅读全文
UVa 12545 Bits Equalizer (贪心)
摘要:题意:给出两个等长的字符串,0可以变成1,?可以变成0和1,可以任意交换s中任意两个字符的位置,问从s变成t至少需要多少次操作。 析:先说我的思路,我看到这应该是贪心,首先,如果先判断s能不能变成t,就计算t中的1和s中的1。 然后算出t比s多多少1,然后先考虑把?变成1是最优的,如果不够就只能把0
阅读全文
浙公网安备 33010602011771号