假设这趟车从 A 站到 Z 站,每个车次、座类设一组队列,以始发站做索引,A-Y。 每个队列设 n-1 个子队列,表示终点站,既 AB, AC ..... 初始状态,1000 张票都在 AZ,AK 出票后,本座席移到 KZ。如果再卖了一张 MO,则 KM 和 OZ 都有这张票。考虑覆盖的情况,出票后不检查其他队列中是否需要删除,而 在取队列时核查该票的 bitmap,重新 enqueue。 这个计算应该狠简单,稍微多占点内存。
p*j
4 楼
你第一年欠税是不会有罚款的,自己查underpayment的罚款规定。
z*3
5 楼
老姜,你随便找个内存db,不用你钱 开源的到处都是,别抠门了
l*u
6 楼
Thanks! It seems this year's tax is much higher than last year due to total income increase. Any more suggestions, anyone? Belows are I could think about: 1) update W4 2) Put more money in 401K
这个和我昨天想的差不多。我想的是: 建一个哈希表,以20个站为key(其实19个就够,每人会在终点站买票),value是the list of tickets which have not been sold at this (key) station. 初始时,20个key map的list都含有所有1000张票。 接到一个请求时,以请求的起点到终点之间的所有站为key查哈希表,如果任何一个的 list为空,那么说明这个请求的票卖完了,买票失败。 如果所有站对应的list都不为空,那么表示这个请求一定有票。而且这所有站中最短的 那个list的head就是最优解的票。(这点是因为这个算法保证了最碎片的票在list里总 是排在最前面,而最短的list的head才能保证所有请求中的经过站都有这个座位的票)。 现在票找到了,要把这张票从请求经过站的lists中remove掉。从所有list的头开始去 找这张票很慢。所有再给每个list里的票弄个哈希表,key为座位号,value为座位在 list里的地址,并且初建list时建double list。于是只要知道要remove掉那个座位, 就可以在各个list里立刻找到这个座位并remove掉。 抛开所占内存的因素,现在来比较下这个办法和前面提到的bitmap的办法: 每次找座bitmap要做1000次比较,哈希表法只做最多20次比较。 座位找到后bitmap法只要一次运算更新,而哈希表法要做最多20次哈希查找 + 20 次 remove a member from a list。。。 我对remove from list和bitwise运算之间的效率比没有概念,谁能给科普一下, remove one node from a list的时间可以做多少次bitwise运算?
【在 n*****t 的大作中提到】 : 假设这趟车从 A 站到 Z 站,每个车次、座类设一组队列,以始发站做索引,A-Y。 : 每个队列设 n-1 个子队列,表示终点站,既 AB, AC ..... : 初始状态,1000 张票都在 AZ,AK 出票后,本座席移到 KZ。如果再卖了一张 MO,则 : KM 和 OZ 都有这张票。考虑覆盖的情况,出票后不检查其他队列中是否需要删除,而 : 在取队列时核查该票的 bitmap,重新 enqueue。 : 这个计算应该狠简单,稍微多占点内存。
【在 L*****e 的大作中提到】 : 这个和我昨天想的差不多。我想的是: : 建一个哈希表,以20个站为key(其实19个就够,每人会在终点站买票),value是the : list of tickets which have not been sold at this (key) station. : 初始时,20个key map的list都含有所有1000张票。 : 接到一个请求时,以请求的起点到终点之间的所有站为key查哈希表,如果任何一个的 : list为空,那么说明这个请求的票卖完了,买票失败。 : 如果所有站对应的list都不为空,那么表示这个请求一定有票。而且这所有站中最短的 : 那个list的head就是最优解的票。(这点是因为这个算法保证了最碎片的票在list里总 : 是排在最前面,而最短的list的head才能保证所有请求中的经过站都有这个座位的票)。 : 现在票找到了,要把这张票从请求经过站的lists中remove掉。从所有list的头开始去
【在 L*****e 的大作中提到】 : 这个和我昨天想的差不多。我想的是: : 建一个哈希表,以20个站为key(其实19个就够,每人会在终点站买票),value是the : list of tickets which have not been sold at this (key) station. : 初始时,20个key map的list都含有所有1000张票。 : 接到一个请求时,以请求的起点到终点之间的所有站为key查哈希表,如果任何一个的 : list为空,那么说明这个请求的票卖完了,买票失败。 : 如果所有站对应的list都不为空,那么表示这个请求一定有票。而且这所有站中最短的 : 那个list的head就是最优解的票。(这点是因为这个算法保证了最碎片的票在list里总 : 是排在最前面,而最短的list的head才能保证所有请求中的经过站都有这个座位的票)。 : 现在票找到了,要把这张票从请求经过站的lists中remove掉。从所有list的头开始去