[AHOI2013]打地鼠(网络流)

 【问题描述】  
    游戏里一共会冒出来N个地鼠,这些地鼠冒出来的位置都分布在一条直线上。第i个地鼠会在Ti时刻在Xi位置冒出来,打到第i个地鼠的得分是Pi。 
    当游戏开始时(也就是0时刻),JYY左手的位置为XLEFT,右手的位置为XRIGHT。JYY的手的最大移动速度是V(每单位时刻最多移动的距离为V)。 地鼠会在瞬间冒出来然后消失。如果在对应的时刻JYY的
一只手恰好也在地鼠冒出来的位置,那么JYY就可以在瞬间完成击打动作并得到对应的分数;否则,JYY就只能错过这只地鼠了L。  
    JYY两只手都拿着锤子,所以两只手是可以同时打地鼠的。  
    然而,如果在游戏过程中JYY的两只手交叉的话,JYY会感到很不舒服(这个动作确实很别扭,而且两只手可能会互相阻碍而影响移动速度),所以JYY希望在整个游戏过程中左手的位置XLEFT永远
严格小于右手的位置XRIGHT。  
    JYY想知道,他最多能得多少分呢? 
【输入格式】  
    从文件mole.in中读入数据。  输入数据的第一行包含四个整数N,V,XLEFT和XRIGHT; 接下来N行,分别描述N个可能出现的地鼠; 其中第i行包含三个整数Xi,Ti,Pi。 
    数据保证在同一个时刻不会有两个地鼠出现在同样的位置。 
【输出格式】  
    输出到文件mole.out中。  
    输出一行一个整数,表示JYY最多能够得到的分数。 
【样例输入1】  
3 10 150 250 
100 20 123 
201 10 67 
202 10 45 
【样例输出1】  
190 
【样例输入2】  
10 2 1000 2000 
400 300 1 
600 200 1 
700 800 1 
700 500 1 
900 600 1 
1000 700 1 
1300 900 1 
1400 400 1 
1500 1000 1 
2000 100 1 
【样例输出2】  
10  
【数据规模与约定】  
对于10%的数据满足N ≤ 7; 
对于25%的数据满足N ≤ 30; 
对于50%的数据满足 N ≤ 100; 
对于65%的数据满足 N ≤ 600;  
对于100%的数据满足 1 ≤ N ≤ 3000, 1 ≤ XLEFT < XRIGHT ≤ 10^5,1 ≤ Ti ≤ 10^5,1 ≤ Pi ≤10^5,1 ≤ Xi ≤ 10^5,1 ≤ V ≤ 10^4,。 
分析:
“左手严格小于右手”真心很坑,给人的感觉只能dp,但dp肯定是过不去的……于是下面转自Mato:首先,一个很重要的事实就是,“整个过程中左手所在的位置严格小于右手”其实是一个废条件!!因为如果左右手交叉了,必然是左手试图去打靠右的一个,而右手试图去打靠左的一个,此时,让它们交换,则两只手移动的距离都变小,方案仍然合法,且更优(我太弱了,当时就是在这里想抽了很久,以至于木有做这题……后来才知道这题很水……真悲剧!!!)
额本渣茅塞顿开……然后就可以费用流搞了,思想的是将能连续打击的2只地鼠连边,跑最大费用最大流,具体Mato说的很详细了
原文地址:https://www.cnblogs.com/wmrv587/p/3579439.html