- 博客(13)
- 收藏
- 关注
原创 背包问题学习8——poj2184——01背包变形
题目链接 1.思想转换 对于每头牛,要么选要么不选,有点类似于01背包,但是又有两个参数:智力值和幽默值,我们设dp[i]为智力值为i时对应的幽默值最大,最终选择完后能够得到最大的幽默值, ...
2021-05-17 10:30:10 111 1
原创 背包问题学习7——poj3181——高精度大数处理
题目链接 数据超过范围时的处理方法 #include<iostream> using namespace std; #define ll long long const ll inf=1e18; int main() { int n,k; while(cin>>n>>k){ ll dp[1005]={0},a[1005]={0}; dp[0]=1; for(int i=1;i<=k;i++){
2021-05-17 09:28:34 133
原创 背包问题学习6——poj——1787——记录路径
记录路径的代码书写注意点 1.因为是记录路径,所以要一个一个的背包进行更新,不能使用二进制代码优化 2.主要代码部分 if (dp[j - v[i]] + 1 > dp[j] && dp[j - v[i]] && used[j - v[i]] < num[i]) { dp[j] = dp[j - v[i]] + 1; used[j] = used[j -
2021-05-15 22:40:53 343
原创 背包问题学习5——循环细节——poj2163
题目链接 1.循环细节 写出相应代码后,如果循环明显会超时,则考虑优化 可能的优化角度 (1)代码本身能够优化:比如背包的二进制优化,即是对代码本身进行优化 (2)题目条件进行优化:比如说这个题,本金和固定bond部分都是1000的倍数,从而对循环量进行优化 对第二条也要警惕些,从第二条感觉到题目的输入部分对数据量的描述也要警惕了(能够优化循环量) 2.题目代码 #include<iostream> #include<cstdio> #include<cstring> u
2021-05-12 22:20:10 131 1
原创 背包问题学习4——上界确定(鸽笼原理)、二进制代码优化放进循环中——poj3260(补充理解)
题目链接 1.二进制代码优化放进循环中的代码 for (i = 1; i <= n; i++) { for (k = 1; k <= num[i]; k *= 2) { for (j = vol; j >= k * val[i]; j--) { dp[j] = min(dp[j], dp[j - k * val[i]] +
2021-05-12 00:49:23 162 4
原创 背包学习总结////////////省赛总结
本次参加省赛,感觉还是自己实力很薄弱,比如对签到题G,保留位数,虽说是很基础的题目,但换我做绝对做不出来,因此,自己的基础知识就有很大的漏洞。 同时,在答H题(类01背包)时,尽管思路是自己想的,也完全正确,同时也是自己在最后调出了代码,但还是有很多细节点是另外的小伙伴考虑到的,比如值转换处理我就没考虑到,虽说在区间dp中有类似处理,但没考虑到就很可惜,还是自己做题少,需要多练。 尽管在最后出了三道题,可惜罚时上差的比较远,后两道题都是在封榜时出的,很可惜,感觉自己的能力也差很多,比如读英语速度,一些特殊算
2021-05-10 13:39:33 176 3
原创 背包问题学习3——dp状态覆盖
poj1276/作业题O 做题时漏掉的点:dp状态更新覆盖掉了之前的状态 反思点:降维时要考虑之前的状态是否会被覆盖掉 #include <iostream> #include <stdio.h> #include <algorithm> #include <stdlib.h> #include<vector> #define N 10 #define maxn 10010 #define maxnn 100010 using namespace
2021-05-07 21:30:32 135 1
原创 背包问题学习2——hdu1059——思维转换、二进制优化
题目链接 1.思维转换 两个人分的石子重量值相同,等效成一个人分得一半的石子值,瞬间出来了背包问题模板 也就是说有相同量要归到最小规模——便于表示、出思路 2.二进制优化代码模板 int j = 1; for (int i = 1; i <= N; i++) { int temp = 1; while (a[i] > temp) { c[j++] = temp
2021-05-06 23:18:18 134 1
原创 Same Differences——STL容器中的unordered_map学习
题目链接 #include <iostream> #include <string> #include <unordered_map> #include <algorithm> using namespace std; #define ll long long //1.开ll,不然会WA unordered_map<ll, ll> vis; //2.假定这里写int,int,后
2021-05-06 12:10:49 98
原创 浮点数转换成整型数保留精度——UVA147——dollars
题目: New Zealand currency consists of $100, $50, $20, $10, and $5 notes and $2, $1, 50c, 20c, 10c and 5c coins. Write a program that will determine, for any given amount, in how many ways that amount may be made up. Changing the order of listing does not in
2021-05-05 22:34:03 208
原创 背包问题学习1——去除dp后效性——hdu3466——Proud Merchants
作业题E/hdu3466 #include<algorithm> #include<iostream> #include<vector> using namespace std; const int maxn = 5001; int n, m; int dp[maxn]; struct xiao { int pi, qi, vi; }a[maxn]; bool cmp(xiao x, xiao y) { return x.pi - x.qi > y
2021-05-05 09:42:46 212
原创 Gym_102220_B_Balanced Diet(动态数组+前缀数组)
这个题在比赛时出思路了,可惜自己没有想到用动态数组减少循环量,用普通数组双重循环会导致超时,因此特意写此篇博客,以此来熟悉动态数组 #include <map> #include <vector> #include <string> #include <iostream> #include<algorithm> using namespace std; #define ll long long #define maxn 100010 vecto
2021-05-04 08:50:58 276
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人