摘要: 题目大意:给你一系列数,找出它的最长(严格)递增子序列。 由于数据量较大,使用O(n2)的LIS算法会超时,要使用O(nlogn)的LIS算法,这里有详细的介绍。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 typedef vector vi; 7 8 vi v, temp, pos, ans; 9 10 int main()11 {12 #ifdef LOCAL13 freopen("in", "r", stdin);14 #endif15 int x;16 阅读全文
posted @ 2013-09-05 20:59 xiaobaibuhei 阅读(234) 评论(0) 推荐(0)
摘要: 题目大意:给你n只老鼠的体重w和速度s,让你找出最长的子序列使得w[i] s[j] (i 2 #include 3 using namespace std; 4 5 struct Mouse 6 { 7 int id, w, s; 8 bool operator m.s;12 }13 } mouse[1100];14 int lis[1100], pre[1100];15 16 void print_lis(int p)17 {18 if (pre[p] != -1) print_lis(pre[p]);19 printf("%d\n",... 阅读全文
posted @ 2013-09-05 15:39 xiaobaibuhei 阅读(376) 评论(0) 推荐(0)
摘要: 题目大意:我们的朋友Bob要结婚了,所以要为他买一些衣服。有m的资金预算,要买c种类型的衣服(衬衫、裤子等),而每种类型的衣服有k个选择(只能做出一个选择),每个选择的衣服都有一个价格,问如何选择才能使花费控制在预算范围内并使得花费尽量大?输出最大花费。 用dp进行解决,bool dp[i][j]用以表明在买完第i种类型的衣服后是否可能有j的资金剩余。递推至dp[c][],找出dp[c][]中最小的资金剩余。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 struct Garment 7 { 8 i... 阅读全文
posted @ 2013-09-05 11:17 xiaobaibuhei 阅读(323) 评论(0) 推荐(0)