Blog重开...5/27做的一些题

一题一题写太慢了,没精力也没那个必要,blog重开,以后记录每天做题的要点,只写题号默认是POJ

 

2823 Sliding Window

动态维护区间最小值/最大值,看一眼就直接用堆秒掉了,复杂度O(nlogn),用了10s,汗

看了下Discuss,用deque应该更好,能做到O(n),线段树也是O(nlogn)

 

1755 Sum of Factorials

貌似有什么数学方法,我用暴力DFS跑了300多ms,WA了一次,没特殊处理0的情况(第一次DFS就退出来)

 

3086 Triangular Sums

水题,注意T要算到301项,数组别开小了

 

2853 Sequence Sum Possibilities

和2140基本一样,上学期算法课考试的最后一题~求和公式O(n),另外考虑奇偶性能做到O(sqrt(n))

 

2549 Sumsets

挺有意思的题,n<=1000,暴力枚举显然不可能.

变形一下:a+b=d-c

用O(n^2)枚举a+b,用set记录,要注意四个数必须不同

再用O(n^2)枚举d-c,判重即可

这样复杂度是O(n^2 logn),TLE了

想了下题目要求的是最大的d,先把输入排序,d按减序枚举

用vector数组模拟链式hash表,hash函数为取绝对值再取模

这样复杂度降到了O(n^2)

开了10^4的hash表,250ms AC

试着增大hash表的大小,时间反而更长,怀疑是vector的操作太慢了,虽然减少了冲突

最后10^3大小做到了125ms

 

2785 4 Values whose Sum is 0

很早就看过题,一直没做,其实和2549差不多

a+b=-(c+d)

思路差不多

某人说排序完直接做就好,那样貌似是O(n^2 logn) (要二分查找),或者我理解有点问题

vector的低效得到验证- -|

上题的程序改了改就交上去,TLE

改了几次hash表的大小,不是TLE就是MLE

实在没办法,自己手写hash吧,先试了如果冲突就往后放的方法,还是TLE....

不能偷懒啊....又改写成数组模拟的链式hash,终于AC了!

156960K 4563ms

数据不错,哈哈,开了10^7左右的hash表

 

JOJ 2489 Billboard

和某人聊到去年省赛...

这题也是当时没搞定,贪心,dp都觉得不对,于是翻出来做

现在再看一遍.....二分图权匹配!    哎...当时太菜了

2个串的长度都<=100,直接用O(n^3)的KM,先预处理第一个串的i位置和第二个串的j位置,如果字符相同,连一条权为abs(i-j)的边.

可是这题不是完美匹配,直接套用求最大匹配的KM会有问题,即使把边取负数.因为有可能匹配不存在的边(原来设为0).

改了下,先做第一问,有几个牌子可以重用.然后把不存在的边赋成-10^5

求出最大匹配后答案加上(第一个串的长度-第一问的答案)*(-10^5)即为第二问的答案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值