最长上升子序列

题目描述

对于一个整数序列 A=(a1,a2,,ak)A =(a_1, a_2,\ldots , a_k),定义 AA 的子序列为:从 AA 中删除若干个元素后(允许不删,也允许将所有 kk 个元素都删除),剩下的元素按照原来的顺序所组成的序列。如果这个子序列的元素从左到右严格递增,则称它为 AA 的一个上升子序列。其中包含元素数量最多的上升子序列称为 AA 的最长上升子序列。例如,(2,4,5,6)(2, 4, 5, 6)(1,4,5,6)(1, 4, 5, 6) 都是 (2,1,1,4,7,5,6)(2, 1, 1, 4, 7, 5, 6) 的最长上升子序列,长度都为 44

那么,给定一个序列 A=(a1,a2,,an)A =(a_1, a_2,\ldots , a_n), 求 AA 的最长上升子序列的长度

输入格式

第一行一个整数 nn ,代表序列 AA 的长度

阅读全文 »

分组背包

题目描述

有N件物品和一个容量为V的背包,将所有的物品划分成若干组,每个组里面的物品最多选一件。第i件物品的重量是w[i],价值是c[i],属于组k[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。

输入描述

第一行为N(1N103)(1≤N≤10^3),V(1V103)(1≤V≤10^3)

下面N行,第i行描述第i个物品的w[i](1w[i]102)(1≤w[i]≤10^2),c[i](1c[i]106)(1≤c[i]≤10^6),k[i](1k[i]102)(1≤k[i]≤10^2),用一个空格分隔。

阅读全文 »

多重背包

题目描述

有N种物品和一个容量为V的背包。第i种物品的重量是w[i],价值是c[i],有k[i]个。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。

输入描述

第一行为N(1N104)(1≤N≤10^4),V(1V104)(1≤V≤10^4)

下面N行,第i行描述第i种物品的w[i](1w[i]102)(1≤w[i]≤10^2),c[i](1c[i]106)(1≤c[i]≤10^6),k[i](1k[i]102)(1≤k[i]≤10^2),用一个空格分隔。

阅读全文 »

完全背包

题目描述

有N种物品(每种有无限多个)和一个容量为V的背包。第i种物品的重量是w[i],价值是c[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。

输入描述

第一行为N(1N5000)(1≤N≤5000),V(1V5000)(1≤V≤5000)

下面N行,第i行描述第i种物品的w[i](1w[i]103)(1≤w[i]≤10^3),c[i](1c[i]103)(1≤c[i]≤10^3),用一个空格分隔。

阅读全文 »

01背包

题目描述

有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是c[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。

输入描述

第一行为N(1N5000)(1≤N≤5000),V(1V5000)(1≤V≤5000)

下面N行,第i行描述第i个物品的w[i](1w[i]103)(1≤w[i]≤10^3),c[i](1c[i]103)(1≤c[i]≤10^3),用一个空格分隔。

阅读全文 »

火星饭店

题目描述

lzh 在火星开了一家饭店,为了吸引顾客,饭店会不定期在菜谱中加入新菜,每个菜都有一个美味度 l(0l<p)l(0\le l < p)

饭店使用手机进行点餐,手机上展示的菜谱会按照更新的顺序逆序排列。由于不同顾客的手机屏幕分辨率大小不同,所以能够显示在第一屏的菜谱的数量也不同。根据调查发现,火星用户只会在第一屏的菜品中选择美味度最高的购买。

现在按照时间顺序输入 mm 个添加菜品或顾客点菜的操作,请输出每位点菜顾客所点的菜的美味度。

输入格式

阅读全文 »

矩阵选数

题目描述

给定一个 33 行,nn 列的矩阵,我们要在矩阵的每一列选一个数。对于第 i(1in)i(1 \le i \le n) 列,我们令 did_i 为第 ii 列选择的数。那么,1n1didi+1\sum_1^{n-1}|d_i - d_{i+1}| 最小是多少

输入格式

第一行一个整数 nn ,描述见上文

后面三行每行 nn 个整数,为矩阵的各个元素

阅读全文 »

排名

题目描述

sys 参加了一场 AI 算法大赛,大赛要求参赛者提供一个程序,后台的评测系统会使用相同的数据对所有提交程序进行评测,通过程序的运行时间内存占用来衡量一个算法的好坏。

比赛的成绩计算方法为,给每一个程序进行打分,对于一个程序来说,该程序的得分为:运行时间内存占用均小于等于该程序的程序的数量。

现在需要你来计算,成绩为 0,1,n10,1,\dots n-1 的程序的数量分别为多少。

输入格式

阅读全文 »

树状数组

题目描述

给定数列 a1,a2,,ana_1, a_2, \dots, a_n,你需要依次进行 qq 个操作,操作有两类:

  • 1 i x:给定 i,xi,x,将 aia_i 加上 xx
  • 2 l r:给定 l,rl,r,求 i=lrai\sum_{i=l}^r a_i 的值(换言之,求 al+al+1++ara_l+a_{l+1}+\dots+a_r 的值)。
  • 阅读全文 »