| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
北大的服务器就是好,200000*100的dp才用了94ms,不知道区域赛的测试系统性能怎么样In Reply To:AC 50留贴 ,WA的注意了! Posted by:windyrobin at 2008-08-06 13:27:43 > //2184 Accepted 208K 766MS C++ 1463B
> //此题用dp做简直是噩梦!!此处用回溯加剪枝 ,WA 、TLE 各 N次 (N>10) 后
> //终于AC!!湿了...
> //预处理阶段 ,即使f+s<0 ,此数据也有可能被加入 !!!
> //比如 先前 sum为 8 -2 ,当前为-3 ,2 ,加入后就满足条件,变为5 ,0
> //另外剪枝的约束要千万注意
> 回溯代码:(好像有规定 ,不能贴全部,呵呵)
> void backTrack(int n ,int sumS ,int sumF)
> {
>
> if(sumF+sumS > sumT && sumS>=0 && sumF>=0 )
> sumT=sumF+sumS;
> if(n==0)
> return ;
> if(sumS+dataSum[n].s<0 || sumF+dataSum[n].f<0)
> return ;
> if(sumS+sumF+dataLog[n] <= sumT )
> return ;
>
> backTrack(n-1 ,sumS+data[n].s ,sumF+data[n].f);
> backTrack(n-1 ,sumS ,sumF);
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator