- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 F - Eating Together POJ - 3670 (LIS)
裸的LIS(没学过。。 拿DP大力n2,直接超时 借此学一下LIS ———————————————————————————————————————————————————— DP数组: DP【i】代表长度为 i 的序列的结尾的 数字 思路有点贪心。 新的DP数组相当于一个贪心的序列。 从前往后扫描的过程中不断地把原序列的元素加入到DP数组里,对于每一个原序列的元素a【i】而言
2017-06-30 11:11:54 207
原创 uva11464(递推)
枚举第一行的情况就能递推出下面的各个行的。 瞎退,细节挺多的,代码弱的容易wa细节(就是我 #include #include #include #include #include #include #include #include #include using namespace std; #define cir(a,b) memset(a,b,size
2017-06-28 21:46:31 206
原创 UVALive - 3942(前缀树DP)
给出一个字符串和一些字符片段,求由这些字符片段组成这个字符串可以有多少种组的方法。 Sample Input abcd 4 a b cd ab Sample Output Case 1: 2 明显 对于字符串上的每个位置而言,如果用dp【i】代表从i开始的后缀最多有多少种组合方式的话,dp【i】 = sum(dp【i】 + l
2017-06-27 17:44:41 202
原创 POJ3977(折半枚举)
原来一直以为的map.lowerbound和upperbound是错的。。。 学习了make_pair #include #include #include #include #include using namespace std; typedef long long LL; const int maxn = 1000000+10; map M; int n; LL s[m
2017-06-26 19:09:54 351
原创 HDU2577
#include #include #include #include #include #include #include #include #include using namespace std; #define cir(a,b) memset(a,b,sizeof a) typedef long long LL; const int maxn = 100000+10;
2017-06-02 17:36:27 260
原创 HDU2845
#include #include #include #include using namespace std; int l,r; int s[10005][10005]; int dp1[200005],dp2[200005]; int main() { while(scanf("%d%d",&l,&r)!=EOF) { for(int i=2; i<l
2017-06-01 21:50:12 320
原创 HDU2159
#include #include #include #include using namespace std; int n,m,k,s; const int maxn = 10000+10; int dp[maxn]; int sum[maxn]; int w[maxn],v[maxn]; int main() { while(scanf("%d%d%d%d",&n,&m,&k,
2017-06-01 18:36:04 519
软件工程原书pdf 第三版 钱乐秋
2018-04-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人