摘要:
此函数在: #include<algorithm> 头文件下 它是按字典序对数组生成排列 所以在使用前要将数组排序。 举个栗子: sort(p, p+n); // 排序,得到p的最小排列 do { for(int i = 0; i < n; i++) printf("%d ", p[i]); // 阅读全文
摘要:
题意简述: FJ打算去购物,在此之前,他需要一些盒子来装他要买的各种各样的东西。每个盒子都用来携带一些特定的东西(也就是说,如果他要买这些东西,他必须事先买到盒子)。每种东西都有自己的价值。现在FJ的购物金额只有W美元,他想用这笔钱购物,使他所买的物品的总价值最高。 有多组测试数据 详情请戳--背包 阅读全文
摘要:
目录 作者有话说 二维费用的背包问题 状态定义及转移 物品总个数的限制 小结 分组的背包问题 状态定义及转移 小结 有依赖的背包问题(重要) 分析 最后是非常不正经的ending 作者有话说 本篇博文中的各类数组都从1开始 题目里好像混进去了什么奇怪的东西 二维费用的背包问题 二维费用的背包问题是指 阅读全文
摘要:
思路:反素数及其在OI中的应用 里面第一种类型 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; #define LL unsigned long long #def 阅读全文
摘要:
概念:对于任何正整数n,其约数个数记为f(n),如果某个正整数n满足:对任意的正整数i(0< i< n)都有f(i)< f(n),则称n为反素数。 emmm…,这个概念有点啰嗦,反素数其实就是区间里因子个数最多的那个数。 信竞中有如下应用: 求约数刚好等于n的最小的那个数求区间里的最小反素数([1, 阅读全文
摘要:
题意简述 农夫约翰要购买价格为T的物品,他有N种硬币,每种硬币的面额为Vi,数量为Ci,同时店主也只有这几种面额的硬币,但数量无限,问约翰总共要经手的硬币数量(约翰买东西给店主的硬币数量+店主找钱给约翰的硬币数量=约翰经手的硬币数量) 分析 思路比较容易想,让硬币的面额作为背包重量,让硬币的数量作为 阅读全文
摘要:
先等一下,字多预警,密集恐惧症慎入,喂,你,就是你,小板凳搬好了吗,站久了可是会腿酸的 无节操地王婆卖瓜一下, 本文 深度好文 目录 先扯两句 0-1背包 其它类似的状态定义 1 2 小结 3 记忆化搜索 滚动数组(优化空间复杂度) 初始化 完全背包 递推关系 优化时间 滚动数组 简单有效的常数优化 阅读全文
摘要:
暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。 上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个 阅读全文
摘要:
sscanf(字符串转化为整数)和sprintf(整数转化为字符串)都只适用于“123456”这种字符串 sscanf是将字符串转化为整数(或其它类型,这里用较为),格式为 sscanf(字符串的名字,"%d",整型变量的名字); sscanf还可以分离整数和其它字符,下举一例 s[100]="12 阅读全文
摘要:
紫书P278-279 例9-10 分析 很容易想到定义dp[i][j]为s[i]~s[j]最少需要添加多少个括号 边界: 串为空时,dp[i+1][i]=0单个串时,dp[i][i]=1 转移: 如果s[i]与s[j]匹配,转移到dp[i+1][j-1]枚举断点,转移到dp[i][k]+dp[k+1 阅读全文