摘要:
http://poj.org/problem?id=2229题意:给一个正整数N,用2的i次幂的加和表示,有多少方法。题解:原始DP的思想,Nlog(N)的复杂度,不预处理的话会TLE…… 还有一种思想是如果这个数是奇数,那组成它的第一个数一定是1,则dp[i]=dp[i-1];如果这个数是个偶数,若第一个数为1,则dp[i]=dp[i-1],否则都为2的(大于0的)倍数,推出dp[n]=dp[n-1]+dp[n/2]。O(N)的复杂度。 1 // 2 // main.cpp 3 // POJ 2229(DP) 4 // 5 // Created by zhang on 14-... 阅读全文
摘要:
http://poj.org/problem?id=1258题意:给N个点,和N*N的矩阵(表示Ni到Nj的距离),求连通所有点的最小距离。题解:最小生成树模板……prim……每两个点之间距离不超过100,000,刚看时INF打成了10,010……Holy shit……怒WA…… 1 // 2 // main.cpp 3 // POJ 1258 4 // 5 // Created by zhang on 14-3-31. 6 // Copyright (c) 2014年 apple. All rights reserved. 7 // 8 9 #include 10 #include... 阅读全文
摘要:
http://poj.org/problem?id=3723题意:需要招募女兵N人,男兵M人。每征募一人需要$10000。但是如果两个人之间(已征募与要被征募)有关系,就可以依据亲密度大小减免花费,此时花费等于10000-已经征募的人中与ta的最大亲密度。求花费最少的招募顺序。题解:是一个无向图,并且可以得知这是一个森林,所以可以把人看做点,关系是边权,就转换为求最大权森林。将边权取反,采用kruskal(因为可能有圈)。 1 // 2 // main.cpp 3 // poj 3723 4 // 5 // Created by zhang on 14-3-31. 6 // ... 阅读全文
摘要:
博客第一篇……水题……题意:给n个元素,每一个元素有两个值(ai,bi),可以按照任意顺序选择元素,包括选择元素的所有元素的ai=ai-bi。求已选择元素的最大的和。题解:其实所求与选择的顺序无关,而是与最终选择的数量有关。枚举每一个数量的值,求max。(看了小兰的我会说……) 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int maxn=1010; 9 int a[maxn],b[maxn],solve[maxn];10 11 int main()12 {13 ... 阅读全文