随笔分类 - 贪心
摘要:题目链接:http://codeforces.com/problemset/problem/381/B题目意思:给定一个m个数的序列,需要从中组合出符合楼梯定义a1 ai + 1 > ... > a|a| - 1 > a|a|.的最长序列。思路不复杂,先把输入的序列按从小到大排序,然后依次挑出不相同的数(顺挑)。接着倒序再挑出不相同的数(可以与顺挑时的数相同)。有一个要注意的地方是,挑出的那些数的位置需要标记下,防止逆挑的时候重复挑。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespac
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/363/C题目意思:纠正两种类型的typos。第一种为同一个字母连续出现3次以上(包括3次);另一种为两个不同的字母各出现2次。需要把使用最少次数而纠正好的word输出来。 为了方便操作,这里我都是通过删去后一个字母来纠正typo的,即如果是wwaattyy,假设看成两组:wwaa和ttyy,那么纠正完的分别是:wwa和tty。至于第一种类型的typo比第二种简便,只需要把同一个字母删除到只剩下2个即可。 注意,这里的删去并不是真的删去,而是通过向应该删去的元素赋值,这里以字符'0'来处
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/365/B题目意思:简单来说,就是要找出最长的斐波纳契长度。解决的方法不难,但是要注意更新左区间和右区间的值,而且需要把当前求出的斐波纳契长度和之前求出的斐波纳契长度进行对比,以便更新得出的最长的斐波纳契长度。 特别注意的是,序列只有一个、两个或者没有斐波纳契长度的处理。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = 1e5 + 5; 7 int a[maxn]; 8 9 int mai...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/359/A题目意思:给出一个n行m列的table,你需要选择一个good cell(假设为(x, y), 1 2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int i, j, n, m, t, f2, f; 9 while (scanf("%d%d", &n, &m) != EOF)10 {11 // freopen("in.txt", "r"
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/355/B题目意思:给出四种票种,c1: 某一部bus或者trolley的单程票(暗含只可以乘坐一次);c2、c3、c4乘坐次数没有限制。c2:某一部bus或者trolley可以乘坐无限次;c3:所有的bus或者trolley可以乘坐无限次;c4:所有的bus和trolley可以乘坐无限次。根据给出的n buses 和m trolleys 每一辆的乘坐次数,找出最便宜的买票方式,输出要花费的金额。 对于每一部bus或者trolley,无非从c1或者c2选择。这里以选择某一个序号为 i 的bus的票为例。
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/349/A题目意思:题目不难理解,从一开始什么钱都没有的情况下,要向每一个人售票,每张票价格是25卢布,这些人只可能拥有100,50,25的其中一张卢布。问:售票员是否能在可以找赎的情况下,向每一个人都售到票。 此题被贴上贪心的标签,但我觉得更像模拟题。用了比较笨的方法来解决,但是毕竟是自己编的,还是比较有感觉。要特别注意,收了别人的钱,相应的面额数量要作相应的改动。例如第一个样例的25 25 50 50,当处理到第三个人的50时,25卢比这个面值只剩下1了,原因是要找给第三个人25卢比,而本来没有50
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/342/A题目意思:给出n个数,找出n/3个组且每组有3个数,这三个数必须要符合两个条件:1、a = s[4],否则对于类似1 3 4 的数据是过不了的!!!! 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int maxn = 99999 + 5; 8 int s[maxn]; 9 10 int main()11 {12 int n, i, flag, temp;13 ...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/339/B题目理解不难,这句是解题的关键 In order to complete the i-th task, she needs to be in the house number ai and complete all tasks with numbers less than i 。从样例1的提示,可以知道,如果a[i]> a[i+1],则需要继续顺时针走下去,直到到达n,接着重新从1开始数,直到a[i+1]。 这里要注意的是题目中2 ≤ n ≤ 105, 1 ≤ m ≤ 105 ,暗示了我
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/337/A题意:有n个学生,m块puzzles,选出n块puzzles,但是需要满足这n块puzzles里的最大pieces(A)和最小pieces(B)之差最少,即the least possible difference。这是一道贪心兼排序的题目,解决方法不难。首先对m块puzzles以非递减的顺序排序(可以保证每个n长度的区间difference最小),接着求出所有长度为n的区间中最大和最小的值之差,即代码中a[i+n-1] - a[i] ,最后选出最小的差就是题目的答案。 1 #include
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1050这道题目隔了很久才做出来的。一开始把判断走廊有重叠的算法都想错了。以为重叠只要满足,下一次moving的起始room小于或等于上一次moving的结束room则证明有重复。这样只能保证局部不能同时进行moving,但是根本得不出其他moving哪些是可以同时进行搬动的。 正确的思路是,统计最大的重叠数,再乘以10即可。具体做法:把每个房间之间的走廊作为一个统计单位,当所有的办公桌都搬运完成之后,看看这段走廊到底需要占用多少次,然后统计所有的走廊被占用的最大值max,这个值就是要单独安排的搬运次
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/331/C1 这是第一次参加codeforces比赛(ABBYY Cup 3.0 - Finals (online version))成功AC的题目(n ≤ 106),解题的突破口是:Take the magic number, subtract a digit from it (the digit must occur in the number) and get a new magic number. Repeat this operation until a magic number equal.
阅读全文

浙公网安备 33010602011771号