2016年8月29日

POJ 2823 Sliding Window 单调队列

摘要: 题意很明显,注意用C++提交,不然会超时。 说说我对单调队列的理解吧。 其实就是每次都在队头保留了ans。就是每次你想知道第i个位置的答案,每次取出队头元素就OK了。 然后就是怎么维护了。 例如要求最大值,那么,队头应该是一个最大值的。所以这个队列是单调递减的,每次插入a[i]的时候,维护它单调递减 阅读全文

posted @ 2016-08-29 19:56 stupid_one 阅读(166) 评论(0) 推荐(0) 编辑

URAL 2080 Wallet

摘要: 找规律发现只要找到两个相同数字之间,有多少个不同的数字,即为答案。 可以用树状数组离线处理。 坑点是卡有很多张,没用完的情况,后面的卡直接放在哪里, 就是 10 5 1 2 3 4 5 这样 开始数据要输出到10 #include <cstdio> #include <cstdlib> #inclu 阅读全文

posted @ 2016-08-29 00:11 stupid_one 阅读(338) 评论(0) 推荐(0) 编辑

2016年8月28日

Gym 100971D Laying Cables 二分 || 单调栈

摘要: 要求找出每个a[i],找到离他最近而且权值比它大的点,若距离相同,输出权利最大的那个 我的做法有点复杂,时间也要500+ms,因为只要时间花在了map上。 具体思路是模拟一颗树的建立过程,对于权值最大的那个,必须是-1,次大的那个,必须是pos_peo[mx];就是最大人口的节点id、 然后维护一个 阅读全文

posted @ 2016-08-28 20:34 stupid_one 阅读(323) 评论(0) 推荐(0) 编辑

Gym 100971B Derangement

摘要: 要求改换序列,使得没有位置是a[i] == i成立。输出最小要换的步数 首先把a[i] == i的位置记录起来,然后两两互相换就可以了。 对于是奇数的情况,和它前一个换或者后一个换就可以,(注意前一个越界或者后一个越界) 这样是不会重复的,因为本来i是a[i] == i的话,换了一个,是不会使得他们 阅读全文

posted @ 2016-08-28 19:42 stupid_one 阅读(192) 评论(0) 推荐(0) 编辑

2016年8月27日

Gym 100886J Sockets 二分答案 + 贪心

摘要: Description standard input/outputStatements Valera has only one electrical socket in his flat. He also has m devices which require electricity to work 阅读全文

posted @ 2016-08-27 22:37 stupid_one 阅读(371) 评论(0) 推荐(0) 编辑

UVALive 5983 二分答案+dp

摘要: 想了很久都想不出怎么dp,然后发现有些例子,如果你开始不确定起始值的话,是不能dp的,每种状态都有可能,所以只能二分一个答案,确定开始的val值,来dp了。 #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath 阅读全文

posted @ 2016-08-27 10:00 stupid_one 阅读(178) 评论(0) 推荐(0) 编辑

2016年8月26日

UVA 5986 - Wizarding Duel 超级脑洞题

摘要: 给出n个人,每个人两两比赛一场,一共有C(n,2)场比赛,现在给出一个榜,问其是否合法。不合法的话,就改成合法,输出最小需要改的变化。 分数一定是C(n,2)的了, 不和法的情况,比如0,0,2,是不行的,因为如果第一个人没赢过,那么第二个人绝对有赢过,起码赢了1啊,所以这个是不合法的。那么怎么做呢 阅读全文

posted @ 2016-08-26 23:29 stupid_one 阅读(230) 评论(0) 推荐(0) 编辑

2016年8月24日

SPOJ 3267: DQUERY 树状数组,离线算法

摘要: 给出q个询问,询问一段区间里面的不同元素的个数有多少个。 离线做,用树状数组。 设树状数组的意义是:1--pos这个段区间的不用元素的种类数。怎么做?就是add(pos,1);在这个位置中+1,就是说这个位置上元素种类+1。 然后先把询问按R递增的顺序排序。因为这里是最优的,我每次尽量往R靠,使得查 阅读全文

posted @ 2016-08-24 23:39 stupid_one 阅读(217) 评论(0) 推荐(0) 编辑

URAL 2078 Bowling game

摘要: 阅读理解题,超级难懂 就是说一个人去打保龄球,有10个回合,然后每个回合是有2个球打的,叫我们算出能得的最低分和最高分。 我大概翻译下 好了,现在先求最小值,很容易,我每次都认为它是最后才打到a[i]个球的,那么值是最小的。也就是,它不是一个回合有两个球吗?你每次都认为它是第二个球打倒的,这样是最小 阅读全文

posted @ 2016-08-24 21:21 stupid_one 阅读(274) 评论(0) 推荐(0) 编辑

2016年8月23日

UVA - 12333 Revenge of Fibonacci 高精度加法 + 字典树

摘要: 题目:给定一个长度为40的数字,问其是否在前100000项fibonacci数的前缀 因为是前缀,容易想到字典树,同时因为数字的长度只有40,所以我们只要把fib数的前40位加入字典树即可。这里主要讨论下怎么得到fib数的前40位。 首先,因为没可能每一项的fib都求出来的了。空间都存不下来。所以, 阅读全文

posted @ 2016-08-23 22:53 stupid_one 阅读(350) 评论(0) 推荐(0) 编辑

导航