合集-洛谷刷题
摘要:P1077 [NOIP2012 普及组] 摆花 题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号。为了在门口展出更多种花,规定第i种花不能超过 a[i] 盆,摆花时同一种花放在一起,且不同种类
阅读全文
摘要:洛谷-题目链接 [TJOI2007] 线段 提示 我们选择的路线是 (1, 1) (1, 6) (2, 6) (2, 3) (3, 3) (3, 1) (4, 1) (4, 2) (5, 2) (5, 6) (6, 6) (6, 4) (6, 6) 不难计算得到,路程的总长度是 24。 #inclu
阅读全文
摘要:题目链接 1.定义状态转移方程:f[i][j] - 前 i 个物品恰好是 j 元的方案数 2.集合划分: 1)选当前选第 i 个菜品时 i-1个物品能凑出j-a[i]元的方案 - f[i-1][j-a[i]] 再加上选这道菜品 f[i][j]; if(j>=a[i]) //有足够的钱可以买下当前菜品
阅读全文
摘要:题目链接 01背包 主要思想 1.四个科目需要单独算 2.最佳答案 = sum/2; 每一组数据划分为两部分 使得俩部分的差值最少 3.将每个科目所有题目的总时间的一半作为背包的容量 花费时间看作为体积和价值 求出最大值(这个最大值是小于等于sum/2) 4.说明最接近于sum/2的方案,sum-f
阅读全文
摘要:题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+7; ll n,c; ll a[N]; map<ll,ll>m; int main(){ cin>>n>>c; for(i
阅读全文
摘要:题目链接 思路: 1.标记所有 马能控制点 bool s[x][y]; 卒行走的规则:可以向下、或者向右。 2.由当前格子的上一个格子 或者 左方格子 到达 当前格子 到当前格子的总路线 = 从上方格子来的路线+ 从左方格子来的路线; 定义状态转移方程: dp[i][j]=dp[i-1][j]+dp
阅读全文
摘要:题目 银行贷款 题目描述 当一个人从银行贷款后,在一段时间内他(她)将不得不每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。 输入格式 三个用空格隔开的正整数。 第一个整数表示贷款的原值 $w_0$,第二个整数表示每月支付的分期付款金额 $w$,第三个整数表示分期
阅读全文
摘要:数列分段 Section II 题目描述 对于给定的一个长度为 $N$ 的正整数数列 $A_{1\sim N}$,现要将其分成 $M$($M\leq N$)段,并要求每段连续,且每段和的最大值最小。 关于最大值最小: 例如一数列 $4\ 2\ 4\ 5\ 1$ 要分成 $3$ 段。 将其如下分段:
阅读全文
摘要:[NOIP2015 提高组] 跳石头 跳石头 题目描述 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 $N$ 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一
阅读全文
摘要:变形01背包 #include <bits/stdc++.h> using namespace std; const int N=1010; int s; int n,m; int v[N],w[N],f[N]; int accum(int p) { //预先处理约数之和 int ans=0; fo
阅读全文
摘要:前缀和走起 #include <bits/stdc++.h> using namespace std; #define int long long const int N=2e5+7; int n; int a[N]; int sum[N],ans; signed main(){ cin>>n; f
阅读全文
摘要:题目链接 第一种方法:从上到下 第二种:从下到上
阅读全文
摘要:(n-i+1) 相当于吃没事的个数 = 饱腹感 #include <bits/stdc++.h> using namespace std; const int N = 3e5 + 7; int n; int a[N]; long long sum; //!! double maxn; int mai
阅读全文
摘要:题目链接 #include <bits/stdc++.h> using namespace std; const int N = 1e6+7; int n,x; int a[N]; long long sum; int main() { cin>>n>>x; for(int i=1;i<=n;i++
阅读全文
摘要:link 红牌 题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌。获得红牌的过程是相当复杂 ,一共包括 $N$ 个步骤。每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件。为了加快进程,每一步政府都派了 $M$ 个工作人员来检查材料。不幸的是,并不是每一个工作人员效率都很高。尽
阅读全文
摘要:题面: 指令 M : 合并两个集合 指令 C : 查询两个点之间的布置了多少战舰 算法1 (带权并查集) 0.为何使用带权并查集? 维护边权,这里指的边权时该点到根节点之间一共有多少个节点 1.带权并查集:维护点到跟的距离 2.需要开两个数组存放该点到跟节点的距离,以及该集合的大小(集合中存放的元素
阅读全文
摘要:算法1 (离散化+并查集) 没想到的点: 由于数据范围很大1e9,因此需要采用离散化,从而降低时间复杂度 主要思想 1.约束条件有相等/不相等,不难发现,相等的约束条件是属于一个集合的 -- 因此需要用到并查集思想 我们按照e的大小进行排序,从而完成先处理 e = 1 的所有情况 3.并查集: 初始
阅读全文
摘要:集合 题目描述 Caima 给你了所有 $[a,b]$ 范围内的整数。一开始每个整数都属于各自的集合。每次你需要选择两个属于不同集合的整数,如果这两个整数拥有大于等于 $p$ 的公共质因数,那么把它们所在的集合合并。 重复如上操作,直到没有可以合并的集合为止。 现在 Caima 想知道,最后有多少个
阅读全文
摘要:【深基17.例5】木材仓库 题目描述 博艾市有一个木材仓库,里面可以存储各种长度的木材,但是保证没有两个木材的长度是相同的。作为仓库负责人,你有时候会进货,有时候会出货,因此需要维护这个库存。有不超过 100000 条的操作: 进货,格式1 Length:在仓库中放入一根长度为 Length(不超过
阅读全文
摘要:家谱 题目背景 现代的人对于本家族血统越来越感兴趣。 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先。 输入格式 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组父子关系中父亲只有一行,儿子可能有若干行,用 #name 的形式描写一组父子关系中的父亲的名字,用 +name
阅读全文