![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM训练题
文章平均质量分 64
未定_
“你相信吗?
内心的力量,甚至可以改变命运。”
展开
-
洛谷训练题(21.12.5)
删数问题 - 洛谷题意:键盘输入一个高精度的正整数N,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小。思路:题意隐含条件:新数是数,不带前导0。题目要求只删k个数,那就能反过来想,直接找长度为:(N的长度减k)的数,每次在一定范围内找最小的数,用递归就好了。因为忘删前导0改了好几遍,还以为自己看错题意应该把同一个数都删掉(测试样例误导我)。#include<iostream>using name原创 2021-12-03 20:32:34 · 226 阅读 · 0 评论 -
D. Weights Assignment For Tree Edges(11.27)
Problem - D - Codeforces题意:给你数组a表示i的父结点是a[i],给你数组b表示结点b[i]到根结点的距离在所有结点里排第i(每个结点到根结点的距离是不同的),让你找符合条件的数组w(表示结点i到i的父结点的距离为w[i]),且w[i]>w[a[i]]。分析:不妨让b[i]的值为结点i到根结点的距离,(b[i]表示距离排名,且b数组每个值都不一样,变相的告诉你到结点到根结点的距离,不用白不用),所以每个结点到父结点的距离就是该结点到根的距离-父结点到根的距离...原创 2021-11-28 21:24:06 · 496 阅读 · 0 评论 -
P1122最大子树和
.原创 2021-11-03 10:32:25 · 214 阅读 · 0 评论 -
P3613 【深基15.例2】寄包柜
.原创 2021-11-01 23:13:14 · 244 阅读 · 0 评论 -
P1434 [SHOI2002]滑雪(21.10.21)
.原创 2021-10-19 23:09:22 · 560 阅读 · 1 评论 -
P1020导弹拦截(超详细)(21.10.18)
P1020 (NOIP1999 普及组 )导弹拦截原创 2021-10-18 23:43:11 · 1583 阅读 · 0 评论 -
洛谷训练(21.10.17)
.原创 2021-10-17 09:25:20 · 1477 阅读 · 0 评论 -
二叉树练习题(21.8.3)
#include<bits/stdc++.h>using namespace std;const int N=256+5;bool fail;//bool类型的fail,用于判断,错误赋1,没错赋0vector<int>ans;struct Node{ bool is;//是否被赋值 int value;//结点的值 Node *l,*r;//左右结点 Node():is(false),l(NULL),r(NULL) {}};Node原创 2021-08-03 18:38:53 · 99 阅读 · 0 评论 -
练习题(21.7.26)
.原创 2021-07-26 22:19:25 · 84 阅读 · 0 评论 -
并查集练习题(21.7.22)
.原创 2021-07-22 21:25:48 · 180 阅读 · 0 评论 -
Codeforces Round #747 (Div. 2) (21.10.9)
.原创 2021-10-10 09:16:15 · 106 阅读 · 0 评论 -
POJ1061青蛙的约会
1061 -- 青蛙的约会题意:规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。分析:根据题意可列出如下方程题目转化为ax+by=n(这里的x为t,y为k),用扩展欧几里得算法求解二元一次方程,注意数据范围。扩展欧几里得算法#include<iost..原创 2021-10-06 17:26:28 · 136 阅读 · 0 评论 -
B. Hemose Shopping (Div. 2)
B. Hemose Shopping (思维题)原创 2021-10-04 19:33:16 · 546 阅读 · 0 评论 -
Educational Codeforces Round 114 (Rated for Div. 2)
Problem - C - Codeforces题意:你有n个英雄,知道每个英雄的攻击力(a1,a2...an)以及每条龙的防御力x和攻击力y,每次你只能派出一个英雄去屠龙,剩下的英雄守城,只有当派出去的英雄的攻击力大于等于龙的防御力且剩余英雄的攻击力之和大于等于龙的攻击力时,才能屠龙。你可以给任何一个人英雄增加1点攻击力需要1枚硬币,求成功屠龙需要得最少硬币数。...原创 2021-09-26 15:11:32 · 120 阅读 · 0 评论 -
Make a Power of Two(D)
.原创 2021-08-20 15:02:16 · 195 阅读 · 0 评论 -
Polycarp and String Transformation(E)
Polycarp and String Transformation原创 2021-08-20 16:55:13 · 203 阅读 · 1 评论 -
单调队列与单调栈例题(十二)(5.29)
.原创 2021-05-29 20:08:21 · 157 阅读 · 0 评论 -
二分法学习总结(十一)(5.22)
.原创 2021-05-17 23:47:44 · 329 阅读 · 0 评论 -
背包问题做题总结(十)(5.15)
.原创 2021-05-14 16:56:01 · 478 阅读 · 2 评论 -
区间DP(括号匹配及其同类题)
括号匹配题意:给一个括号组成的字符串,问最多能匹配多少个括号。说明:像([)]这样的字符串匹配度为2,但是像()[]、[()]的字符串匹配度为4,也就是说括号具有分隔作用。法1:用dp[i][j]表示i~j之间的字符串匹配数,这之间存在两种情况,一种是([]),也就是嵌套型,即i和j位置的括号可以匹配,所以dp[i][j]=dp[i+1][j-1]+2,另一种是()[],所以dp[i][j]=dp[i][k]+dp[k+1][j]这些所有的情况里取一个最大的即为dp[i][j]的值。法2:dp[i][原创 2021-04-24 22:19:21 · 469 阅读 · 0 评论 -
区间DP(石子合并及同类题)
石子合并1题意:一条直线上摆放着一行共n堆的石子。现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆石子数记为该次合并的得分。请编辑计算出将n堆石子合并成一堆的最小得分和将n堆石子合并成一堆的最大得分。还是比较好理解的,我们先求出n堆石子的前缀和,这样我们求新合成的一堆石子数只需要知道这堆石子的前后位置作差即可,再考虑怎么合成,我们首先构造二维数组DP[i][j]表示从第i位置到第j位置为新合成的一堆石子的得分,DP[i][j]的合成方式有多种,可以是DP[i][i]+DP原创 2021-04-24 00:19:42 · 1009 阅读 · 2 评论 -
The Number of Products(CodeForces - 1215B)
题目链接题意:给你一组数,求连续子段的积为负值的个数与正值的个数一开始以为是dp题,但题目给的数据范围挺大的,双重循环应该会超时,尝试用一个循环写举个????每一列的和表示最终的个数,每一行表示在前面基础上新增加的个数。#include<iostream>#include<iomanip>using namespace std;const int maxn=1e6+5;long long n,s1=0,s2=0,a1=0,a2=0,c;int main(){原创 2021-04-24 00:07:48 · 270 阅读 · 0 评论 -
Array Shrinking(CodeForces - 1312E )
https://vjudge.net/problem/CodeForces-1312E/origin题意:给你一组数,如果前一个数等于后一个数,这两个数就可以合成一个新数,并且新数的值为原数加1,问得到数组的最小长度区间dp题,难度在于连续多个相同的数任意两两合并怎么区别表示。#include <iostream>#include <cstring>using namespace std;#define mann 0x3f3f3f3flong long int n,t,原创 2021-04-21 23:52:55 · 235 阅读 · 3 评论 -
Homecoming(CodeForces - 1315B)
题目链接题意: Petya有p卢布,他需要坐车回家,A为车站需a卢布,B为地铁站需b卢布,他从车站(地铁站)始发处上车,到地铁站(车站)始发处下车,然后在该位置继续坐车,(最后一站不用考虑重新乘车),Petya可走一段距离,直到他能从该位置一直乘车到家,问至少多少步。倒着找车站#include <iostream>#include<cstring>using namespace std;int main(){ int n,a,i,b,q,c; str原创 2021-04-19 23:46:23 · 271 阅读 · 7 评论 -
构造字符串回文串
F题意:给你n个长度为m的字符串,任意拼接字符串,求使其构成回文串的最长能拼接的长度和回文串序列一开始看到这个题的思路是先求出每个字符串的反串,然后用两个循环,外循环表示第几个字符串,即字符串的位置,内循环表示该字符串以后的位置,从前往后找,如果当前位置的字符串在以后的字符串的反串中找到相等的,就说明当前的位置及其反串可构成回文串,重复以上过程。然后再找出字符串反串等于本身的字符串作为回文串的中间串,找出所有符合的字符串,进行拼接。但是我不太会实现代码,写了一半就写不出来了,一是求反串用for循环比较复原创 2021-04-12 21:41:09 · 898 阅读 · 1 评论 -
20级课程作业-动态规划线性DP 做题总结(六)
O题意:一个人要从房间1走到房间n+1,每走到一个房间要在此进行一次标记,若标记次数为奇数则走到房间p[i];若标记次数为偶数则走到房间i+1,问此人需要走多少步才能到达房间n+1(p[i],1<=i<=n)...原创 2021-04-13 12:27:28 · 242 阅读 · 0 评论 -
Mashmokh and ACM(动态规划)
Y(有点难)题意:序列a1, a2, …, an,如果满足ai%ai-1 == 0 ( 2 <= i <= n ),就是好序列。给定n和k,n表示1~n的数,求长度为k的好序列的个数,答案对1e9+7取模。由数1~n和长度k,联想到子状态为以数j结尾,长度为i,构建二维数组dp[i][j]来表示,子状态的值为以j结尾,长度为i(以i个数字构成)的好序列个数(错误的子状态值,正确的在后面)第一次尝试,没大有思路,画了一个图来帮助理解:列表示以哪个数字结尾,行表示由几个数字构成在这里插入图原创 2021-04-17 16:57:33 · 563 阅读 · 4 评论 -
20级课程作业-动态规划线性DP 做题总结(四/五)
T原创 2021-04-03 23:48:14 · 275 阅读 · 0 评论 -
20级课程作业-贪心算法 做题总结(三)
题目:原创 2021-03-26 23:45:00 · 245 阅读 · 0 评论 -
cf训练题(1)
B题意:给你一个由.和*组成的字符串和数字k,要求第一个 * 和最后一个 * 换成x,中间的一些 * 换成x,但两个x之间的距离不能超过k,求最少替换数。原创 2021-03-26 23:54:30 · 268 阅读 · 0 评论 -
20级课程作业-贪心算法 做题总结(二)
C题目:x轴的上方有一些点代表岛,让你在x轴上找一些点安雷达,给你雷达的辐射范围(圆),求最少的雷达数。不行就输-1。一开始我想的是先将岛分布最左和最右的两个点投影到坐标轴上,然后在这个范围内求每个x轴点的辐射范围,如果这个点尽可能能包含较多的点就取这个点,但这样写一方面可能会超时,另一方面,处理起来代码会很复杂,不好优化,而且容易求多点,所以这种方法不可取。如果换一个方面想,不找雷达的辐射范围,改为找岛能收到信号的范围,这样就可以把每个岛转化成x轴上的一些区间,问题就变成了求区间交集问题。基本套路,原创 2021-03-19 23:32:58 · 283 阅读 · 0 评论 -
20级课程作业-贪心算法 做题总结(一)
A题意:有N头牛,分别在不同位置,每两头牛可以互相叫,音量必须等于两牛之间的距离,即可以进行N*(N-1)次对话,求所以牛产生音量的总和。咋一看这题挺简单,先把位置按从小到大排序,然后在每个位置分别减其他位置求和。但需要两个for循环嵌套,试一试果然超时。又换了好几种方法,发现自己想太多,做了好久终于过了,总结一下,需要用到排序加规律。以下是详细解题过程。...原创 2021-03-12 07:58:50 · 1439 阅读 · 6 评论 -
寒假测试2
https://vjudge.net/problem/CodeForces-977A/origin题意:如果数字的最后一位不为零,该数减1;如果数字的最后一位是0,去掉最后一位数字,即除10。给定一个整数n。求执行k次操作后的数。(易)Input512 4Output50Input1000000000 9Output1#include<iostream>using namespace std;int main(){ int n,k; cin>&原创 2021-03-07 08:39:10 · 200 阅读 · 0 评论 -
寒假测试1
https://vjudge.net/problem/CodeForces-988A/origin题意:给你n个数字,能不能在里面找到k个不同的数字,如果能就输出YES,再输出这些数字的下标(1<<i<<n);不能就输出NO。思路:类似选择排序,两个for循环嵌套,里面的for循环判断输入的数字是否在前面出现过,出现就标记为0,没出现就记录不同数字的个数。...原创 2021-03-06 23:11:45 · 197 阅读 · 0 评论