2752: [HAOI2012]高速公路(road)
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1545 Solved: 593[][][]Description
Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站。
Y901高速公路是一条由N-1段路以及N个收费站组成的东西向的链,我们按照由西向东的顺序将收费站依次编号为1~N,从收费站i行驶到i+1(或从i+1行驶到i)需要收取Vi的费用。高速路刚建成时所有的路段都是免费的。政府部门根据实际情况,会不定期地对连续路段的收费标准进行调整,根据政策涨价或降价。无聊的小A同学总喜欢研究一些稀奇古怪的问题,他开车在这条高速路上行驶时想到了这样一个问题:对于给定的l,r(l<r),在第l个到第r个收费站里等概率随机取出两个不同的收费站a和b,那么从a行驶到b将期望花费多少费用呢?Input
第一行2个正整数N,M,表示有N个收费站,M次调整或询问接下来M行,每行将出现以下两种形式中的一种C l r v 表示将第l个收费站到第r个收费站之间的所有道路的通行费全部增加vQ l r 表示对于给定的l,r,要求回答小A的问题所有C与Q操作中保证1<=l<r<=N
Output
对于每次询问操作回答一行,输出一个既约分数若答案为整数a,输出a/1
Sample Input
4 5 C 1 4 2 C 1 2 -1 Q 1 2 Q 2 4 Q 1 4
Sample Output
1/1 8/3 17/6
HINT
数据规模
所有C操作中的v的绝对值不超过10000在任何时刻任意道路的费用均为不超过10000的非负整数所有测试点的详细情况如下表所示Test N M1 =10 =102 =100 =1003 =1000 =10004 =10000 =100005 =50000 =500006 =60000 =600007 =70000 =700008 =80000 =800009 =90000 =9000010 =100000 =100000 考试前一天晚上做梦,梦见自己考试140,倒数第二,一开始以为自己只是日有所思夜有所梦,然后……这道题助我梦想成真/(ㄒoㄒ)/~~然而最终只有20分……
其实当天已经推出来了式子,然而由于不敢去打,只能打了区间修改单点查询的打法,结果还全E了,好尴尬啊,连暴力的40分都没拿到。
基本大多数人都可以推到这里——一个边对于答案的贡献(不算分母):设这条边为第i条边,询问为l,r:(i-l+1)*(r-i)*v[i]。
然后我们大可把这个式子展开为:
r*(i+1)*v[i]+i*l*v[i]-l*r*v[i]-i*(i+1)*v[i]。
由于l,r随询问而变,我们无从得知,但由于求得是上述式子的最终值,我们可以去维护上式中的四个单项式,以及他们的系数。
通过系数我们就可以很轻松的应对区间修改,因为系数是不受任何影响的,而对于每一个修改,对于答案的影响就是修改值乘以系数,这样我们的修改查询都是log n的了。
最后叮嘱的一点是long long 不然会死的很惨。
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include