ioi2000啊,比noiip還簡單。。
用四邊形不等式優化了半天都沒寫對,最後優化了點點係數。
很簡單的題。
f[i][j]表示前i個村莊,總共建j個郵局的最小距離和。
預處理可以維護[p,q]區間建乙個郵局的最小費用。
用中位數可以用o(n)維護出來(我用字首和寫的o(n^2)的,但是關係不大)
要注意就是如果數量為偶數,中位數會取中間的某乙個。
f[i][j] = min(f[k][j-1]+w[k+1][i])
(f[i][0] = maxlong)
k=s[i-1][j-1]就是那個沒寫完整的四邊形不等式優化
後來聽說是要改變拓撲序,按區間動規來。前i個郵局是左邊界,前j個村莊是右邊界。然後就可以用四邊形不等式了。
至今未調出來。。
//#include //using std::cout;
//using std::cin;
#define debug(a) printf("%ld",a);
#define debugc(c) printf("%c",c);
#include const long oo = 0x7fff0000;
long n;long m;
long val[500];
long sum[500];
long w[500][500];
long f[500][50];
long g[500][50];
long s[500][500];
void output(long p,long q)
output(g[p][q],q-1);
printf("%ld ",p);
}int main()
}} }
f[0][0] = 0;
f[1][1] = 0;
for (long i=1;if[k][j-1]+w[k+1][i])
}} }
printf("%ld",f[n][m]);
//output(n,m);
return 0;
}
Block Voting 解題報告
這道題做的有點狼狽,效率不高,差一點就tle的ac了。看status裡的,ac的時間大多數都是0ms的。肯定有乙個更有效率的演算法的。下面說下我的狼狽演算法。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1223 問題描述 求每個party的權值。第i...
Safebreaker 解題報告
又是吉林大學一道acm題目,題目很簡單,直接暴力解決。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1718 問題描述 對乙個給定數0000 9999 根據一系列猜測,判斷這個數是否存在,存在的話,是否唯一 例如 3321,給定數 作出猜測,1223 ...
路由 解題報告
路由 問題描述 有乙個tcp ip網路 每台計算機都有乙個或多個網路介面。每個介面根據它的ip位址和子網掩碼來識別 即兩個4位元組的數,兩個字 節之間有乙個 號.子網掩碼有乙個二進位制表示法 有k個 1 然 後是 m 個 0 k m 8 4 32 如 212.220.35.77 是乙個 ip 地 址...