![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
题解
文章平均质量分 56
kunyuwan
ACMer,机器视觉,SLAM,研究生在读
展开
-
2021牛客多校1——C:Cut the Tree(点分治,数的重心,树上最长上升子序列,动态权值线段树)
题面题意:给一个带点权的树,你可以删去树上一个点,最小化所有子树最长上升子序列的长度最大值 。N <= 100000前置知识:树的重心点分治权值线段树动态开点参考资料树分治 - OI Wiki (oi-wiki.org)『权值动态开点线段树』『线段树合并算法』简单理解_Ronaldo7_ZYB的博客-CSDN博客_权值线段树合并【AgOHの算法胡扯】点分治_哔哩哔哩_bilibili思路:要最小化所有子树的最长上升子序列的最大值,我们可以每次取这棵带权树的重心.原创 2021-07-27 00:01:04 · 524 阅读 · 0 评论 -
2021牛客多校1——B:Ball Dropping(简单平面几何)
题面题意:一个球卡在一个直角等腰梯形内部,求卡着的高度。思路:主要利用相似三角形的性质对其进行求解。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;ll n, m, t;ll ar[105];int main() { ll i, j; ll r, a, b, h; scanf("%lld %lld %lld %lld", &r,.原创 2021-07-26 10:11:58 · 395 阅读 · 0 评论 -
2021牛客多校1——I:Increasing Subsequence(动态规划)
题面题意:给出排列P,两个人轮流取数,每次取的数需要在之前该人取数的右边,且比当前取出来所有的数都要大。所有当前可选的数都将等概率随机的被当前决策人选中。问两个人期望取数的轮数。规则1:每个人取的数字都应该比当前已经被取出来的数字大。规则2:每个人取的数字都只能取他上一个取的数字右边的数字。思路:通过两个规则,我们可以依次用dp[i][j]来代表前一个取了i,后一个人取了j,因为它是一个长度为n的排列,因此我们可以利用逆序的下标来满足规则1,我们先用i遍历一遍下标n到1,再逆序遍历数组a.原创 2021-07-26 09:55:05 · 383 阅读 · 0 评论 -
2021牛客多校1——K:Knowledge Test about Match(贪心)
题面题意:两个长度为n的序列,a序列从0到n-1.b序列里面的值的范围为[0,n-1],我们可以任意交换b序列里面的值的位置,使得从1到n两个序列差值的绝对值的根号值最小。概括为:随机生成一个权值范围为 0~n-1 的序列,你要用 0~n-1 去和它匹配,匹配函数是 sqrt,要使得其根号和最小。要求平均情况下和标准值偏差不能超过 4%。思路:这道题目可以随便乱搞,我们可以直接重复冒泡的过程,如果当前两个值的根号和大于交换之和的根号和,就将其两个数字交换。这样子保证其始终再像最优状态转移,.原创 2021-07-26 09:41:14 · 405 阅读 · 2 评论 -
2021牛客多校1——J:Journey of Railway Stations(线段树)
题面题意:一段路上有 NNN 个火车站,每个火车站有一个合法时间段 [ui,vi][u_i, v_i][ui,vi],相邻两个火车站有一个长度cost[i]cost[i]cost[i](代表从iii到i−1i-1i−1的路径长度)。每次问,在 uiu_iui 的时间从 iii 出发后,能否依次经过 i+1i+1i+1~jjj 的所有点,使得到达时间满足每个火车站的合法区间(如果提前到可以等待,迟到了失败了)。同时还可能修改一段路的长度,或者修改一个点的合法时间段。.原创 2021-07-26 09:40:39 · 457 阅读 · 3 评论 -
2021牛客多校1——H:Hash Function(FFT)
题面题意:给定 n 个互不相同的数,找一个最小的模域,使得它们在这个模域下互不相同。简单来说就是对其n个互不相同的数进行哈希,并且不发生哈希冲突。前置知识:快速傅里叶变化(FFT)快速傅里叶变换 - OI Wiki (oi-wiki.org)思路:如果aaa 与bbb 模mmm的余数相同,当且仅当∣a−b∣|a-b|∣a−b∣能被mmm整除,那么问题就转变为找到最小的mmm,它不是任意一个∣ai−aj∣|a_i-a_j|∣ai−aj∣的约数。由于1≤∣.原创 2021-07-26 09:40:01 · 396 阅读 · 0 评论 -
2021牛客多校1——G:Game of Swapping Numbers(贪心,结论)
题面题意:给定序列 A,B,需要交换恰好 k 次 A 中两个不同的数,使得 A,B 每个位置的绝对差值和最大。N <= 100000思路:参考题解 | #Game of Swapping Numbers#_牛客博客 (nowcoder.net)代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll MAXN = 5e5 + 10;ll a[MAXN];ll b[.原创 2021-07-26 09:39:16 · 343 阅读 · 0 评论 -
2021牛客多校1——F:Find 3-friendly Numbers(暴力,数位dp)
题面题意:定义一个自然数是 3-friendly 的,如果它存在一个子串(允许前导0)是 3 的倍数。多组数据,求 L~R 中 3-friendly 的数的个数。思路:这道题目我们可以发现规律,主要位数不少于3位,必定会出现一组前缀和%3相同的位置,所以他们这端区间必然%3=0。我们前3个数的选择方案总共就0,1,2。那么前三个数字的选择方案就9种,这9种方案必定会使得一个子区间%3=0,所以超过三位的数字都不需要进行判断和分析,直接暴力处理前100位即可。数位dp的解法,我们可以知道我.原创 2021-07-26 09:38:35 · 281 阅读 · 0 评论 -
2021牛客多校1——E:Escape along Water Pipes(bfs,模拟)
题面题意:给出一个 n*m 的水管图,要从 (1,1) 顶部走到 (n,m) 底部。每走一步前,可以选择一个管道集合旋转相同的角度。要求在 20nm 步前走到终点或者输出无解。思路:给了六种水管,其中1-4类型的水管都可以通过旋转互相转换,5-6类型的水管也可以通过旋转互相转换。因此我们其实每次走到下一个点的时候只需要判断当前的水管类型,如果当前水管类型为1-4的类型,那么就根据你进入的方向,来得到你如果转向的方向,例如你如果是方向向下进入的,你当前遇到的水管类型是1-4里面的,那么你下一步.原创 2021-07-26 09:37:46 · 308 阅读 · 0 评论 -
2021牛客多校1——D:Determine the Photo Position(简单思维,前缀和)
题面题意:给出一个 n* 的 01 矩阵,要用一个 1*m 的矩阵去覆盖一段 0,问方案数。思路:利用前缀和维护每一行的前缀和。接着遍历每一行,利用前缀和是否为0来判断是否可以插入,是就加1,最后输出方案数即可。代码:#include <bits/stdc++.h>using namespace std;const int MAXN = 5e3 + 10;char mp[MAXN][MAXN];int sum[MAXN][MAXN];char s[MAXN];i.原创 2021-07-26 09:37:07 · 301 阅读 · 0 评论 -
2021牛客多校1——A:Alice and Bob(博弈,sg函数)
题面题意:给你两堆石子,Alice和Bob两个进行博弈,博弈规则如下每次其中一个人从一堆中拿出来k(k>=1)个,同时从另外一堆中拿出来k*s(s>=0)个,Alice先手,问谁先不能拿石子。思路:结论1:如果每堆石子数量是i,另一堆石子最多只有一种数量满足后手胜。推导过程:反证法:假设 (i, p) 和 (i, q) 都是后手必胜,且 q > p。那么在状态 (i, q) 时,先手可以在第二堆选 q-p 个,第一堆选 0 个,转移到后手胜的 (i, p),说明 .原创 2021-07-26 09:36:18 · 838 阅读 · 0 评论 -
寛神的毕生功力(拓扑)
题目链接题意有一个无向图,给我们n个点,n条边,按从小到大的顺序输出成环的点思路我们可以借助拓扑排序的思想来实现,我们利用邻接表进行存图,记录每个点的入度。将入度为1的点删去,同时把入度为1的点所到的点的入度也减一,因为无向图中,环图上的每个点的入度一定是大于1,把入度为1的点和入度为1的点所到的点删去之后,剩下的入度大于1的点则是在环里面的点代码#include <bits/stdc++.h>using namespace std;const int MAXN = 1原创 2021-07-12 09:31:16 · 235 阅读 · 0 评论 -
Codeforces Round #719 (Div. 3) (A~G)
Codeforces Round #719 (Div. 3)A - Do Not Be Distracted!题意给定一个长度为nnn的且只包含大写字母的字符串sss问同一个字符是否只连续出现了一段思路直接依次遍历字符,利用map去标记已经出现的字符,检查新出现的字符是否被标记过即可。#include <bits/stdc++.h>using namespace std;const int MAXN = 1e5 + 10;char s[MAXN];map<char,原创 2021-05-08 11:49:01 · 309 阅读 · 0 评论 -
郑州轻工业大学第三次周赛题目总结
题目总链接:http://acm.zzuli.edu.cn/contest.php?cid=1403问题 A: 这个题目很简单的,快来做啊题目链接:http://acm.zzuli.edu.cn/problem.php?id=2553题面:题意:一个整数T,代表样例个数(1<=T<=100)。每个样例包含一个n(1<=n<=10000),代表n次比赛,之后n...原创 2019-11-05 17:18:22 · 2786 阅读 · 2 评论 -
第三次周赛题目总结
题目总链接:https://nuoyanli.com/contest/31/problemsA.我是个签到题!题目链接:https://nuoyanli.com/contest/31/problem/A题面:题意:思路:参考代码:#include<stdio.h>int main(){ printf("NO"); return 0;}B.我是简单题...原创 2019-11-04 20:12:53 · 2225 阅读 · 4 评论 -
第一次月赛题目总结
题目总链接:https://nuoyanli.com/contest/27/problemsA:最简单签到,没有之一:https://blog.csdn.net/qq_45740533/article/details/102822993B:wr学姐的小调查:https://blog.csdn.net/qq_45740533/article/details/102823712C:小仙女的...原创 2019-11-02 11:02:44 · 2069 阅读 · 0 评论 -
精确计算A/B的值
题目链接:题面:题意:思路:参考代码:#include <stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int main(){ int a,b,n,s,i; char c[201]= {0}; scanf("%d %d %d", &a...原创 2019-11-01 21:36:19 · 6489 阅读 · 1 评论 -
部分背包问题
题目链接:http://oj.jzxx.net/problem.php?id=2794题面:题意:给定一个最大载重量为m的卡车和n种食品,已知第i种食品最多拥有Wi公斤,其商品价值为Vi元/公斤,确定一个装货方案,使得装入卡车中的所有物品总价值最大。思路:这道题目的要求就是要让物品的总价值达到最大化,我们就需要从价格最大的物品开始购买,当价格大的物品买完了,再从价格第二的开始买,依次...原创 2019-11-01 11:27:39 · 2359 阅读 · 0 评论 -
WAAAAA
题目链接:https://nuoyanli.com/contest/27/problem/H题面:题意:一开始输入一个整数T,代表T组测试数据。每组测试数据的第一行有三个整数n,m,k分别表示n个人参加比赛,有m道题,k条提交记录,接下来有k行,表示k条提交记录,每条提交记录由三个整数a,b,c和字符串d组成,a表示提交时间(单位分钟),b表示提交人的编号,c表示提交问题的编号,d表...原创 2019-10-31 21:27:05 · 2803 阅读 · 0 评论 -
签到不签到他们说了不算
题目链接:https://nuoyanli.com/contest/27/problem/J题面:题意:多组输入,先输入一个n,代表有n行字符串( 我比赛的时候根据样例误因为该字 符串的长度与n有关)然后判断由" * "围成的最大矩形,在这个矩形中把不为 " * "的全部打印为” * “,为” * " 的打印为“ . " 。然后输出图形。思路:这道题目的基本思想就是先找...原创 2019-10-30 19:56:47 · 2075 阅读 · 0 评论 -
我裂开了
题目链接:https://nuoyanli.com/contest/27/problem/G题面:题意:先输入一个T代表T组输入,再输入x,y两个数,判断是否满足x-y的差值可以由p个素数组成,若可以,则输出YES,否则NO。思路:这道题目要注意的地方有两点1.因为题面中说到x,y的取值范围为1到1e9,数值过大,如果直接使用双重for循环就会容易RE,所以我们需要减少时间复杂度,...原创 2019-10-30 19:09:42 · 2251 阅读 · 0 评论 -
智斗南工白嫖王
题目链接:https://nuoyanli.com/contest/27/problem/E题面:题意:输入一个T代表有T组输入,接着输入一个字符串代表16进制,将其转换为二进制输出。思路:这道题目就是一个白嫖的题目,16进制对应二进制总共16种情况,通过不断的if判断就可以成功AC这道题目了,话不多说,参考代码如下。参考代码:#include<stdio.h>#i...原创 2019-10-30 17:47:41 · 2125 阅读 · 0 评论 -
wr学姐的小调查
题目链接:https://nuoyanli.com/contest/27/problem/B题面:题意:思路:参考代码:#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#include<algorithm>using name...原创 2019-10-30 20:33:37 · 2101 阅读 · 0 评论 -
最简单签到,没有之一
题目链接:https://nuoyanli.com/contest/27/problem/A题面:题意:多组输入,输入长度小于500的字符串,输出每行字符ASCII与出现次数的乘积的最大值。思路:这道题目最主要考的就是判断每个字符重复的次数,而实现这个功能的话我们可以使用双重for循环来实现,通过每个字符与所有字符进行比对,若相同则加1,若不同则继续,这时候就实现判断每个字符重复的次...原创 2019-10-30 17:31:16 · 2196 阅读 · 0 评论 -
小仙女的烦恼(三)
题目链接:题面:题意:思路:参考代码:#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>int main(){ int n,i,k,h=0; char a[1000]; while(scanf("%d",&n)!...原创 2019-10-30 16:56:32 · 2224 阅读 · 0 评论 -
pxj爱喝可乐
题目链接:https://nuoyanli.com/contest/25/problem/G题面:题意:多组输入可乐的数量p,当p为0时结束输入,四个空瓶子可以换一瓶新可乐,求pxj最多可以喝到的可乐数量。思路:根据题面可以知道,这道题目就是不断判断是否有4个空瓶子满足你去换一瓶新可乐,我们可以通过简单的while循环进行不断的判断来计算可以喝的可乐的最大数。参考代码:#inclu...原创 2019-10-30 16:45:02 · 2129 阅读 · 0 评论 -
圈钱杯
题目链接:https://nuoyanli.com/contest/25/problem/B题面:题意:思路:参考代码:#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>int main(){ int n,i,m=0,j,temp;...原创 2019-10-30 16:40:12 · 2500 阅读 · 1 评论 -
我是签到题
题目链接:https://nuoyanli.com/contest/25/problem/A题面:题意:多组输入,输入两个数n,m,n代表一个很大的数,m代表要删除这个数的位数,要保证删除后剩余的数原顺序不变,且确保删除后得到的数最大。思路:首先要主要这题要求是多组输入(一定要记得设置为多组输入),其次这题n是一个特别大的数值,不能使用long参考代码:#include<s...原创 2019-10-29 23:14:52 · 2203 阅读 · 0 评论 -
背包专题题目总结
A:原创 2019-12-19 23:44:47 · 3040 阅读 · 0 评论 -
Dollars
题目链接:https://vjudge.net/contest/348156#problem/F题面:翻译:新西兰货币包括100美元、50美元、20美元、10美元和5美元纸币以及2美元、1美元、50美分、20美分、10美分和5美分硬币。写一个程序,它将确定,对于任何给定的数量,有多少方式可能是编造的。更改列表顺序不会增加计数。因此可以制造20摄氏度向上4个方式:1×20c、2×10...原创 2019-12-19 21:17:23 · 2546 阅读 · 0 评论 -
Charlie's Change
题目链接:https://vjudge.net/contest/348156#problem/B题面:翻译:查理是高级货物运输公司的司机,查理经常开车,所以他经常在高速公路的咖啡自动售货机买咖啡。查理讨厌改变。这基本上就是你下一个任务的设置。你的程序将给出数字和类型的硬币查理和咖啡价格。咖啡自动售货机接受1美分、5美分、10美分和25美分的硬币。程序应该输出查理必须使用哪些硬币支付咖...原创 2019-12-20 08:47:19 · 1292 阅读 · 0 评论 -
Proud Merchants
题目链接:https://vjudge.net/contest/348156#problem/I题面:翻译:最近,伊萨去了一个古老的国家。在这么长的时间里,它是世界上最富有和最强大的王国。因此,即使他们的国家不再那么富有,这个国家的人民仍然非常自豪。商人是最典型的,他们每个人只卖一件商品,价格是π,但如果你的钱少于Qi,他们会拒绝与你做交易,而伊萨评估每件商品的价值为Vi。如果他有...原创 2019-12-19 17:10:19 · 2206 阅读 · 0 评论 -
Dividing
题目链接:https://vjudge.net/contest/348156#problem/L题面:翻译:玛莎和比尔拥有一批大理石。他们想把收藏品分成两半,以便双方都能得到同等份额的大理石。如果所有的弹珠都有相同的价值,这很容易,因为这样他们就可以把收藏分成两半。但不幸的是,有些弹珠比其他弹珠更大,或者更漂亮。因此,Marsha和Bill首先为每个大理石指定一个值,一个介于1到6之间...原创 2019-12-19 23:24:35 · 2348 阅读 · 0 评论 -
Bone Collector II
题目链接:https://vjudge.net/contest/348156#problem/D题面:翻译:这个问题的标题很熟悉,不是吗?是的,如果你参加过“新秀杯”比赛,你一定看起来是这个冠军。如果你以前没看过,没关系,我会给你一个链接:链接如下:http://acm.hdu.edu.cn/showproblem.php?pid=2602今天,我们不希望骨骼的最大值,但第k个最大...原创 2019-12-20 08:44:17 · 2916 阅读 · 0 评论 -
最大报销额
题目链接:https://vjudge.net/contest/348156#problem/G题面:思路:参考代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namesp...原创 2019-12-19 17:30:50 · 2681 阅读 · 0 评论 -
钱币兑换问题
题目链接:https://vjudge.net/contest/348156#problem/K题面:思路:参考代码:#include <stdio.h>#include <string.h>#include <math.h>int dp[50000];int main(){ int n,i,j; while(scanf("...原创 2019-12-19 21:04:51 · 2533 阅读 · 0 评论 -
多重背包
题目链接:https://vjudge.net/contest/348156#problem/J题面:思路:这道题目就是常规的多重背包,我们限制了每个种类的物品的个数,我们就只需要通过while循环来实现把那个背包的数量直接看成每个单独的物品,就和01背包的原理完全一样了参考代码:#include <stdio.h>#include <string.h>...原创 2019-12-19 13:47:01 · 2235 阅读 · 0 评论 -
Piggy-Bank
题目链接:https://vjudge.net/contest/348156#problem/N题面:思路:参考代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespa...原创 2019-12-19 12:00:11 · 2963 阅读 · 1 评论 -
湫湫系列故事——减肥记I
题目链接:https://vjudge.net/contest/348156#problem/M题面:思路:这与最简单的01背包不同的是这里面菜是种类,可以取无限次,所以就从01背包转换为完全背包,而代码与01背包之间的差距就是j从v[i]到a,而如果为01背包,j就是从w到v[i],就这点差距,其他就是一样的模板套路,这可以作为一个例题来就完全背包。参考代码:#include<...原创 2019-12-19 10:40:17 · 2395 阅读 · 0 评论 -
Coin Change
题目链接:https://vjudge.net/contest/348156#problem/E题面:翻译:假设有5种硬币:50美分、25美分、10美分、5美分和1美分。我们想用这些硬币兑换一定数量的钱。例如,如果我们有11美分,那么我们可以用一枚10美分的硬币和一枚1美分的硬币来做改变硬币,两枚5美分硬币和一枚1美分硬币,一枚5美分硬币和六枚1美分硬币,或十一枚1美分硬币。所以...原创 2019-12-19 21:06:11 · 2662 阅读 · 0 评论