题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入输出格式 输入格式: 一个整数,表示箱子容量 一个整数,表示有n个物品 接下来n行,分别表示这n 个物品的各自体积 输出格式: 一个整数,表示箱子剩余空间. 输入输出样例 输入样例#1: 24 6 8 3 12 7 9 7 输出样例#1: 0 说明 NOIp2001普及组 第4题 这道题看似…
\[传送门在这呢!!\] 题目描述 有一个箱子容量为\(V\)(正整数,\(0 \le V \le 20000\)),同时有\(n\)个物品(\(0<n \le 30\),每个物品有一个体积(正整数). 要求\(n\)个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入输出格式 输入格式: \(1\)个整数,表示箱子容量 \(1\)个整数,表示有\(n\)个物品 接下来\(n\)行,分别表示这\(n\)个物品的各自体积 输出格式: \(1\)个整数,表示箱子剩余空间. 输入输出样例 输入…
一道水题,但看到好久没有发博客了,再一看是一道noip普及组t4,就做了. 题目链接 https://www.luogu.org/problemnew/show/P1049 解题思路 一道裸的01背包,注意价值和重量是一个东西,且最后输出剩余的体积. 随随便便二维就AC了,懒得写一维. AC代码 #include<iostream> #include<algorithm> #include<cmath> #include<cstdio> #include&l…
一句话刚刚的题会了,这题能不会么. #include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>m; cin>>n; ]={},money[]; f[]=; ;i<=n;i++) cin>>money[i]; ;i<=n;i++) for (int j=m;j>=money[i];j--) f[j]+=f[j-money[i]]; ;i--) ) { cout…
//01背包 价值等于体积 求所剩最小体积 #include<bits/stdc++.h> using namespace std; ; ; int c,n,v[maxn],f[maxv]; int main() { scanf("%d%d",&c,&n); ;i<=n;++i) scanf("%d",&v[i]); ;i<=n;++i) for(int j=c;j>=v[i];--j) f[j]=max(f[j…
题目描述 有一个箱子容量为VVV(正整数,0≤V≤200000 \le V \le 200000≤V≤20000),同时有nnn个物品(0<n≤300<n \le 300<n≤30,每个物品有一个体积(正整数). 要求nnn个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入格式 111个整数,表示箱子容量 111个整数,表示有nnn个物品 接下来nnn行,分别表示这nnn个物品的各自体积 输出格式 111个整数,表示箱子剩余空间. 输入输出样例 输入 #1 24 6 8 3 1…
题目描述 有一个箱子容量为V(正整数0≤V≤20000),同时有n个物品(0<n≤30,每个物品有一个体积(正整数). 要求nn个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入输出格式 输入格式: 1个整数,表示箱子容量 1个整数,表示有n个物品 接下来n行,分别表示这n个物品的各自体积 输出格式: 1个整数,表示箱子剩余空间. 输入输出样例 输入样例#1: 24 6 8 3 12 7 9 7 输出样例#1: 0 这里先介绍最经典的动态规划 下面还有一个简化版的 import jav…
题目链接:https://www.luogu.org/problemnew/show/P1926 题目背景 数学是火,点亮物理的灯:物理是灯,照亮化学的路:化学是路,通向生物的坑:生物是坑,埋葬学理的人. 文言是火,点亮历史宫灯:历史是灯,照亮社会之路:社会是路,通向哲学大坑:哲学是坑,埋葬文科生.——小A 题目描述 小A“刷题”十分猖狂,明目张胆地“刷题”.他现在在小书童里发现了n样他喜欢的“题目”,每“题”都有他的需要时间,而老师布置了m项作业,每项作业都有它的需要时间及分值,老师规定k分以…
P1197 [JSOI2008]星球大战(并查集判断连通块+正难则反) 并查集本来就是连一对不同父亲的节点就的话连通块就少一个. 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧道互相直接或间接地连接. 但好景不长,很快帝国又重新造出了他的超级武器.凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球.由于星球的不断被摧毁,两个星球之间的通讯…
Codeforces 题目传送门 & 洛谷题目传送门 首先考虑 \(d(u,v)\) 是个什么东西,分情况讨论: \(u\not\perp v\),\(d(u,v)=1\) \(u\perp v\),记 \(p_u\) 为 \(u\) 的最小质因子,\(p_v\) 为 \(v\) 的最小质因子,那么继续分情况讨论: \(p_up_v\le n\),\(d(u,v)=2\)(\(u\to p_up_v\to v\)) \(p_up_v>n\) 且 \(\max(p_u,p_v)\le\dfra…
嗨!大家好,在TempleRun中大家都认识我了吧.我是又笨又穷的猫猫LKity.很高兴这次又与各位FZU的ACMer见面了.最近见到FZU的各位ACMer都在刻苦地集训,整天在日光浴中闲得发慌的我压力山大呀!于是,我准备为诸位编写一款小工具——LKity牌文本替换(众怒,:敢不敢更土点!).这个小工具可以帮助诸位替换代码中的变量等功能,真心是一款编程,刷题必备的神器.其功能如下: 将给定的字符序列中所有包含给定的子串替换成另外一个给定的字符串.为了让其功能更加强大,替换过程中,将忽略大小写.并…
洛谷题面传送门 神仙题. 首先考虑一个点的深度是什么,注意到对于笛卡尔树而言直接从序列的角度计算一个点的深度是不容易的,因为这样会牵扯到序列中多个元素,需要 fixed 的东西太多,计算起来太复杂了.因此考虑从树本身的角度计算一个点的深度.注意到对于一棵树上所有点 \(u\)​ 而言都有 \(dep_u=\sum\limits_{v}[\text{LCA}(u,v)=v]\)​,因此我们求解一个点 \(x\)​ 的答案时,可以枚举所有 \(u,v\)​ 并计算 \(v\)​ 对 \(u\)​ 的…
一个洛谷普及-的题目,也是我刚刚入门学习动态规划的练习题. 下面发一下我的思路和代码题解: 我的思路及伪代码: 我的AC图: 接下来上代码: 1 //动态规划 洛谷P1802 五倍经验日 2 #include<iostream> 3 #include<cmath> 4 using namespace std; 5 struct human 6 { 7 int l;//失败 8 int w;//胜利 9 int u;//use 10 }hu[1005]; 11 long long a…
本题就是一个简单的01背包问题   1.因为每个物品只能选一次,而且要使箱子的剩余空间为最小.所以可以确定属性为 MAX 2.由于是从n个物品里面选i个物品 那么就是选出的i个物品的空间总和要尽可能的大 就可以得到动态规划的表达式 f[i][j] = max(f[i-1][j],f[i-1][j-w[i]] + w[i]); 就可以得到完整的代码 #include <iostream> using namespace std; const int N = 55 , M = 20010; int…
A. Prime Subtractiontime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given two integers x and y (it is guaranteed that x>y). You may choose any prime integer p and subtract it any number of…
题目链接 \(Description\) 给定两个数\(n,m\),每次可以使\(n\)减一或使\(n\)乘2.求最少需要多少次可以使\(n\)等于\(m\). \(Solution\) 暴力连边BFS或者DP都行,都是O(n)的.有更优的做法. 过程是可逆的,我们考虑m变成n,有两种操作:1是m+=1:2是当m为偶数时,m/=2. 要用最少的次数使得m<=n. 因为m加两次再除以二和先除以二再加一次得到的结果是一样的,即能除就不加.这样就O(logn)解决了. 正推n到m好像推不出性质啊..正…
题目链接 dalao们怎么都写的线段树合并啊.. dsu跑的好慢. \(Description\) 给定一棵\(n(n\leq 10^5)\)个点的树. 定义\(Tree[L,R]\)表示为了使得\(L\sim R\)号点两两连通,最少需要选择的边的数量. 求\[\sum_{l=1}^n\sum_{r=l}^nTree[l,r]\] \(Solution\) 枚举每条边,计算它的贡献. 那么我们要判断有多少连续区间的点跨过这条边,并不好算,反过来去求在这条边的两侧分别有多少个连续区间. 那么显然…
You are given two strings s and t. In a single move, you can choose any of two strings and delete the first (that is, the leftmost) character. After a move, the length of the string decreases by 1. You can't choose a string if it is empty. For exampl…
1050 循环数组最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列).当所给的整数均为负数时和为0. 例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13.和为20.   Input…
题目传送门 题目大意:给你一棵树,求把其中k个点相互隔离(不连通)所需要的边权代价. 这题我开始是想要求出把k个点联通的最小代价的,但后来发现还是实现起来比较困难,题解里貌似也没有这种做法,于是就鸽了.但是大体的思考方向还是不直接去想把k个点隔离,而是把问题转化. 花费最小代价删边->花费最大代价建边.而建边的时候如果遇到一条两边都是敌人的边,我们显然是不需要建的,所以这其实我们需要维护敌人的网络,用并查集来维护. 首先我们标记敌人点,再把边从大到小排序.枚举所有的边,如果它两端点都是敌人,那肯…
dp水之旅背包 题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入输出格式 输入格式: 一个整数,表示箱子容量 一个整数,表示有n个物品 接下来n行,分别表示这n 个物品的各自体积 输出格式: 一个整数,表示箱子剩余空间. 输入输出样例 输入样例#1: 复制 24 6 8 3 12 7 9 7 输出样例#1: 复制 0 说明 NOIp200…
题意: 求最小的$x\in[1,N]$,使得$x$为$g(x)$最大的数 中最小的一个. 分析: 1.$x$不会有超过$10$个不同质因子.理由:$2 \times 3\times 5...\times 31>2\times 1e9$ $2\times 3\times 5...\times 29<2\times 1e9$. $2$至$29$质数刚好$10$个. 2.质因子指数不会大于$30$.理由:当取最小的质因子$2$时,$231>2\times 1e9$,$230<2\time…
A. Magic Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output A magic number is a number formed by concatenation of numbers 1, 14 and 144. We can use each of these numbers any number of…
题目链接 \(Description\) 给定一个长为n的序列,每次可以反转 \([l,r]\) 区间,代价为 \(r-l+1\).要求在\(4*10^6\)代价内使其LIS长度最长,并输出需要操作的数量及每个反转操作. \(n\leq32000\). \(Solution\) 显然,需要在4e6的代价内将\(1\sim n\)尽可能排好序.(而且不一定要反转一大段区间,可以交换相邻元素实现一个元素的移动) Subtask2 \(n\leq1000\) 可以用冒泡排序将每个元素放到应放的位置上,…
题意 题目链接 Sol 复习一下01分数规划 设\(a_i\)为点权,\(b_i\)为边权,我们要最大化\(\sum \frac{a_i}{b_i}\).可以二分一个答案\(k\),我们需要检查\(\sum \frac{a_i}{b_i} \geqslant k\)是否合法,移向之后变为\(\sum_{a_i} - k\sum_{b_i} \geqslant 0\).把\(k * b_i\)加在出发点的点权上检查一下有没有负环就行了 #include<bits/stdc++.h> #defin…
题目链接 很明显的一道完全背包板子题,做法也很简单,就是要注意 这里你可以买比所需多的干草,只要达到数量就行了 状态转移方程:dp[j]=min(dp[j],dp[j-m[i]]+c[i]) 代码如下: #include<cstdio> #include<iostream> #include<cstdlib> #include<iomanip> #include<cmath> #include<cstring> #include<…
传送门:Problem 1064 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 这道题是 “01”背包问题的变形. 如果不考虑买附件必须买相应的主件这一条件下,这就是单纯的 “01”背包问题. 那,这道题该如何做呢? 注意看一下题干,每个主件最多有 2 个附件,那这就容易些了,枚举所有的可能: 对于第 i 个主件,有以下五种可能: (1):不选主件 i (2):只选主件 i (3):选主件 i + 附件1 (4):选主件 i +…
思路很妙的背包 用了一些前缀和的思想 去掉了一个物品,我们可以从前i-1个和后i+1个推出答案 奇妙的思路 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; ][][]={},v[]={},w[],num[],n,q,V; void zypack(int w,int v,int j,int wic){ ) for(int i=V;i>=v;i--) f[j]…
题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对货币的数值感到好奇. 传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的. 母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值. 举例来说, 使用一个货币系统 {1,2,5,10,...}产生 18单位面值的一些可能的方法是:18x1, 9x2, 8x2+2x1, 3x5+2+1,等等其它. 写一个程序来计算有多少种方法用给定的货币系统来构…
看球泡妹子 题目背景 2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情. 题目描述 本届世界杯共有\(N\)支球队,\(M\)场比赛.男球迷小明喜欢看比赛,女球迷小红喜欢看帅哥.每支球队在小明眼里的实力值为\(A_i\),在小红眼里的帅哥数量为\(B_i\). 每场比赛有两个球队对抗,它们的编号分别是\(P_i\)和\(Q_i\).小明认为一场比赛的精彩度等于两队实力的乘积,小红则认为是两队帅哥数量之和. 由于体力的限制,他们最多只能看\(K\)…