自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(490)
  • 收藏
  • 关注

原创 2021浙江工业大学计算机专硕复试经验帖

本文记录一下自己的考研过程,着重讲复试。**一、前言*其实一开始是和队友一起准备17届浙江acm省赛,但奈何因为疫情原因比赛被无限的往后延。所以面对这突如其来的不确定因素,我们不得不对自己的未来重新打算,再加上自己个人的一些其他不为外人道的原因不断纠结之下最终决定在五月中旬回学校就考研,五月和六月初花了不到三星期就过完了基础,中间因为有期末考试就又断了,正在的系统复习时间其实是在7月。二、个人自我情况**本人来自浙江某双非,大学期间靠着队友拿过acm牌子,省赛、icpc区域赛都有以及服务外包竞赛

2021-05-06 21:36:12 6342 20

原创 codeforces-817 D. Imbalanced Array(单调栈)

题目链接题意:给定一个数组,要你求数组中每个子序列的的最大值-最小值之和。思路:考虑每个数的贡献,每个数都会有作为最大值和最小值的时候,只有当a【i】在区间内最为最小值的时候,a【i】都会在最终答案里表示为-a【i】,最大值同理表示为+a【i】,所以思路就变成了求a【i】最为最小值和最大值的区间长度,这个用单调栈来求,L【i】代表a【i】左边第一个大于a【i】的数,R【i】代表a【i】右边第一个大于a【i】的数,于是a【i】最为最小值的区间就是(i-L【i】+1)*(R【i】-i+1),最大值同理。这

2021-10-21 15:32:45 293

原创 cf282 E. Sausage Maximization(字典树+前缀和)

题目链接题意:给定一个序列a,记pre为a的某段前缀异或和,post为某段后缀异或和。求pre异或post的最大值,但是pre和post不能有重合的部分。思路:把前缀异或和插入字典树,枚举每个后缀异或和,在01字典树里找异或最大值就行。#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;typedef long long ll;ll tot,ans,a[maxn],tree[maxn*60][2],nu

2021-05-13 16:50:42 199

原创 【牛客】装货物(dfs)

题目链接思路:n的范围小,大胆暴力,其中now指的是当前的第now件货物。#include<bits/stdc++.h>using namespace std;const int maxn=25;int n,T,x,w,a[maxn],b[maxn];bool dfs(int now){ if(now==n+1) return true; for(int i=1;i<=min(x,now);++i) { if(b[i]+a[now]>w) continue

2021-05-09 20:42:31 212

原创 cf1516 B. AGAGA XOOORRR(数学+位运算)

题目链接题意:给定长度为n的数组a,每次可以选择相邻的两个数进行异或,问最后能不能变成至少个数大于等于2且每个元素都相等的数组。思路:首先第一点,如果全部异或和为0的话显然满足条件,因为只有相同两个数异或才会是0。那么如果异或和不为0怎么办,还有一种方法能满足条件,我们假设异或和为x,我们看一下整个数组某段异或和等于x的段数能否大于等于3,只要有显然满足。#include<bits/stdc++.h>using namespace std;int n,T,a[2005];int m

2021-05-09 19:57:40 182

原创 cf1506 C. Double-ended Strings(DP,最长公共子串)

添加链接描述题意:给定两个字符串s1和s2,每次可以对两个字符串删除首字母或者末字母,求最少删除几个能使得s1和s2相等。思路:答案显然为len(s1)+len(s2)-max(LIS),有点水,算是复习一下求最长公共子串。#include<bits/stdc++.h>using namespace std;const int maxn=1e3+5;int T,dp[maxn][maxn]; int main(){ scanf("%d",&T); while(T-

2021-05-09 19:49:05 112

原创 cf1492 C2. k-LCM (hard version)(数学+构造)

题目链接思路:一如既然的构造题。。。这里的k其实再大也没啥用,我们只要3个数就可以构造出来了,所以多余的全部输出1,n也就变成了n-(k-3)。那么就三个怎么构造呢,分三种情况,一、n是偶数且是4的倍数,三个数分别是2,n/2 -1,n/2 -1。二、n是偶数且是4的倍数,三个数分别是n/4,n/4,n/2。三、n是奇数,1,n/2,n/2(这里n是奇数所以向下取整)#include<bits/stdc++.h>using namespace std;int main(){ int

2021-05-08 20:18:52 152

原创 cf1494 C. 1D Sokoban(二分+模拟)

题目链接题意:这是一个一维推箱子的游戏,你站在0这个位置,然后在这个轴上有n个箱子,保证没有箱子在0这个位置,然后有 m 个特殊的位置,你每次推箱子都是推动一个单位,如果你把箱子推向的下一个单位上有箱子,那么那个箱子也会往后挪动一个单位,问:经过你的努力,你最多可以让多少个箱子在特殊位置上。思路:能推的肯定只有两边的第一个位置,设为位置p,我们每次判断一下把a【p】移到b【i】里那个收益最大就可以了。模拟题嘛,最难的还是代码的实现,注释里都有,最好能自己实现一遍,毕竟一个+1,-1这种边界控制也着实

2021-05-06 20:28:13 163

原创 cf1509 C. The Sports Festival(区间DP)

题目链接题意:给定一个数组,定义di=max(a1,a2,a3…ai)-min(a1,a2,a3…ai),求d1+d2+d3+。。。。dn的最小值。思路:看到这个n的范围就应该往DP方面想,但怎奈在贪心的道路上一去不复返。。。先将数组排序,我们先考虑小范围的情况。比如我选了a【x】,那么如果要再选选一个的话肯定考虑a【x-1】或a【x+1】,不然你选择了a【x+2】的话就是让最大值又更大了,显然不满足局部最优。于是乎我们定义dp【l】【r】是a数组中区间【l,r】范围内的数已经放好了,如果再放一个数

2021-05-05 21:57:09 294

原创 cf1509D. Binary Literature(数学+鸽巢原理)

题目链接题意:给你三个只有0和1组成的字符串a,b,c,长度都为2n,问你能否构造出一个不超过3n的字符串s,使得s满足串a,b,c这三个串中至少有两个串是串s的子序列。思路:挺有意思的一道题,首先最简单的就是将两个字符串拼接,长度为4n,只要再减去n就好了。与此同时,至少有两个串的最长公共子序列LIS是>=n的,所以只要将两个字符串拼接起来只取一个LIS即可。下面简单说明一下为啥至少有两个串的LIS是>=n的。因为每个串长度为2n,所以对于每个串只要两个结果,要么0的数量大于n,要么

2021-05-05 21:03:55 251

原创 cf1484B. Restore Modulo(数学)

题目链接题意:给定一个长度为n的数组,问你是否存在m,s,c使得数组能满足以下条件:1、a1=s mod m2、ai=(ai-1 + c) mod m如果不存在输出-1,若m可以无穷大则输出0,否则输出最大的m和合适的c思路:关键是看懂题,不要漏条件(特别是这里的c<m)。...

2021-05-02 21:09:04 90

原创 cf1513 C. Add One(DP)

题目链接题意:给定初始整数n和操作数m,每一次操作都可以把n里的每个数字加1,问m此操作后n的长度是多少,比如n=1912,操作一次后就是21023,长度为5.思路:首先肯定不能暴力,我们可以发现每次使得长度增加的无非就是9->10这一部,但是如果直接定义dp【i】为操作次数i的长度好象不好转移。所以我们可以定义dp[i][j]代表初始数字为10时第i此操作,数位上有数字j的个数为dp[i][j],那么答案就是dp【i】【j】(j从0到9)的累加和也就是代码里的sum【i】,如果n为5,操作数

2021-04-19 16:42:35 215

原创 cf1513 B. AND Sequences(位运算+思维)

题目链接思路:要想一个数组是good,那么a1=a2&a3…&an,a1&a2&a3…=an,那么可以得到的是a1=an=a1&a2&a3。。。&an=k,那么我们要找的就是有多少个a[i]=k,记cnt个,把他们分别放到两端,那么左右两边最后的结果一定会是k,那么结论就是C(cnt,1)*C(cnt-1,1)*A(n-2,n-2)。#include<bits/stdc++.h>using namespace std;typed

2021-04-19 16:33:36 186

原创 【牛客】G 炫酷数字(约数定理)

思路:一个数的因子个数等于每个质因数指数+1的乘积,所以我们可以打表,存一下每个因子个数对应的数有哪些。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e6+1;vector<int>v[maxn];int tot,prime[maxn],isprime[maxn];void Prime(int n){ for(int i=2;i<n;++i) .

2021-03-13 11:00:31 82

原创 【 牛客】D 炫酷路途(贪心+最短路)

链接:https://ac.nowcoder.com/acm/contest/331/D来源:牛客网题目描述小希现在要从寝室赶到机房,路途可以按距离分为N段,第i个和i+1个是直接相连的,只需要一秒钟就可以相互到达。炫酷的是,从第i个到第i+2^pi+2p个也是直接相连的(其中p为任意非负整数),只需要一秒钟就可以相互到达。更炫酷的是,有K个传送法阵使得某些u,v之间也是直接相连的,只需要一秒钟就可以相互到达,当然,由于设备故障,可能会有一些u=v的情况发生。现在小希为了赶路,她需要在最短的

2021-03-13 10:34:24 111

原创 【牛客】G Applese 的毒气炸弹(最小生成树)

链接:https://ac.nowcoder.com/acm/contest/330/G来源:牛客网众所周知,Applese 是个很强的选手,它的化学一定很好。今天他又AK了一套题觉得很无聊,于是想做个毒气炸弹玩。毒气炸弹需要 k 种不同类型元素构成,Applese一共有 n 瓶含有这些元素的试剂。已知元素混合遵循 m 条规律,每一条规律都可以用 “x y c” 描述。表示将第 x 瓶试剂混入第 y 瓶试剂或者把第 y 瓶试剂混入第 x 瓶试剂,需要消耗 c 的脑力。特别地,除了这 m 条规律

2021-03-13 09:32:35 78

原创 【牛客】F Applese 的QQ群(拓扑排序判环+二分)

链接:https://ac.nowcoder.com/acm/contest/330/F来源:牛客网Applese 有一个QQ群。在这个群中,大家互相请教问题。如 b 向 a 请教过问题,就把 a 叫做是 b 的"老板"。这样一个群中就会有很多老板。同时规定:如果 a 是 b 的老板,b 是 c 的老板,那么 a 也是 c 的老板。为了不破坏群里面和谐交流的氛围,Applese 定了一个群规:不允许出现 a 既是 b 的老板, b 又是 a 的老板。你需要帮助 Applese 判断大家是否遵守了群

2021-03-12 21:33:33 120

原创 CodeForces - 577B Modulo Sum(鸽巢原理+背包DP)

You are given a sequence of numbers a1, a2, …, an, and a number m.Check if it is possible to choose a non-empty subsequence aij such that the sum of numbers in this subsequence is divisible by m.InputThe first line contains two numbers, n and m (1 ≤ n ≤

2021-03-12 13:38:30 245

原创 51Nod - 1677(数学+算贡献)

题目链接给定一棵n个节点的树,从1到n标号。选择k个点,你需要选择一些边使得这k个点通过选择的边联通,目标是使得选择的边数最少。现需要计算对于所有选择k个点的情况最小选择边数的总和为多少。样例解释:一共有三种可能:(下列配图蓝色点表示选择的点,红色边表示最优方案中的边)选择点{1,2}:至少要选择第一条边使得1和2联通。选择点{1,3}:至少要选择第二条边使得1和3联通。选择点{2,3}:两条边都要选择才能使2和3联通。Input第一行两个数n,k(1<=k<=n<=10

2021-03-12 13:07:23 103

原创 codeforces 300C Beautiful Numbers(组合数学)

题目链接Vitaly 是一个非常奇怪的人。他有两个偏爱的数字 a 和 b 。如果一个正整数的十进制表示,仅包含数字 a 和 b,则 Vitaly 将这个正整数称之为 good 。如果某个 good 数 A 的各位数字之和也是一个 good 数,那么 Vitaly 就把这个 good 数 A 称之为 excellent 。例如,假定 Vitaly 的偏爱数字是 1 和 3,那么数 12 不是 good,而数 13 或 311 却是。另外,数 111 是 excellent,数 11 却不是。现在,Vit

2021-03-11 11:57:43 143

原创 【牛客】B Applese 走方格

链接:https://ac.nowcoder.com/acm/contest/330/B来源:牛客网精通程序设计的 Applese 又写了一个游戏。在这个游戏中,它位于一个 n 行 m 列的方阵中的左上角(坐标为(0, 0),行的序号为0 \sim n - 10∼n−1,列的序号为0 \sim m - 10∼m−1)。现在它想不重复地走过所有格子(除了起点),最后回到左上角的一个方案。每次只能往上下左右其中一个方向走一格。输入描述:仅一行两个整数 n 和 m,表示方阵的大小。保证大于1 \ti

2021-03-10 22:09:59 57

原创 【牛客】B 处女座的比赛资格(拓扑排序求最短路)

链接:https://ac.nowcoder.com/acm/contest/329/B来源:牛客网处女座想出去比赛,但是又不知道学校能不能给到足够的经费。然而处女座是大众粉丝,有着很好的人缘,于是他找了一个在学校管经费的地方勤工俭学偷来了一份报销标准。由于处女座是万人迷,所以他在中间途径的每一条线路上都会发生一些故事,也许是粉丝给他发了一个200元的微信红包,也许是和他的迷妹一起吃饭花了500元。而经费负责人也实地考察了每一条路线,在每一条路上,也许是天降红包雨,也许是地生劫匪。每一条路上都有属于

2021-03-09 21:02:59 107

原创 牛客每日一题 小A买彩票(计数DP)

题目链接思路:题目很简单,要想不亏本,最后的金额必须在3n到4n之间,定义dp【i】【j】代表i张彩票中奖j元的方案数,这个转移很容易(具体看代码),最后就是求一下概率而已。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=250;ll dp[maxn][maxn],sum;ll quick(ll a,ll b){ ll ans=1; while(b!

2020-08-12 22:25:30 197

原创 D. Captain Flint and Treasure(拓扑排序+贪心)

题目链接#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2e5+5;int n,in[maxn],b[maxn];ll ans,a[maxn];vector<int>g[maxn],v;queue<int>q;stack<int>s;int main(){ scanf("%d",&n); for(int i=1;

2020-08-09 22:58:36 191

原创 2020牛客寒假算法基础集训营4 E 最小表达式(高精度+贪心)

题目链接示例1输入111+1复制2211+11=22示例2输入9998765432111输出1112345678999示例3输入12+35输出3825+13 = 38示例4输入23984692+238752+2+34+输出5461备注:注意,答案长度可能长达500000个字符。思路:贪心思想,小的尽量放前,大的放后,如果有n个加号的话尽量平均分,注意高精度。#include<bits/stdc++.h>using namespace std

2020-08-03 22:42:01 136

原创 PAT顶级 1016 Uniqueness of MST (35分)(判断最小生成树是否唯一)

添加链接描述Given any weighted undirected graph, there exists at least one minimum spanning tree (MST) if the graph is connected. Sometimes the MST may not be unique though. Here you are supposed to calculate the minimum total weight of the MST, and also tell i

2020-08-03 22:06:50 1890 1

原创 PAT顶级 1002 Business (35分)(01背包)

1002 Business (35分)As the manager of your company, you have to carefully consider, for each project, the time taken to finish it, the deadline, and the profit you can gain, in order to decide if your group should take this project. For example, given 3 pr

2020-07-28 22:52:32 563 1

原创 牛客每日一题——乌龟棋(多维DP)

输入9 56 10 14 2 8 8 18 5 171 3 1 2 1输出73说明小明使用爬行卡片顺序为1,1,3,1,2,得到的分数为6+10+14+8+18+17=73。注意,由于起点是1,所以自动获得第1格的分数6。思路:很典型的DP,太久没做都快没感觉了,dp【i】【j】【x】【y】代表卡片1用了i张,卡片2用了j张,卡片3用了x张,卡片4用了y张所得最大价值,转移看代码很容易看懂,注意一下起点dp【0】【0】【0】【0】是有价值的也就是a【0】。...

2020-07-25 22:22:27 134

原创 牛客练习赛64 D 宝石装箱(容斥+背包DP)

题目链接思路:因为第 i 个箱子 至少放了 j 个不合法宝石 是用前面一个状态(dp[j-1]) 推出所以在枚举放不合法宝石的时候逆序枚举就可以实现内存优化,然后合法宝石的排列是 (n-i)!(n−i)! , 不合法宝石的排列是 dp[i]*a[i]dp[i]∗a[i],因为是至少放了 x 个不合法宝石,所以肯定存在重复的方案,就需要进行容斥偶数加,奇数减!#include <bits/stdc++.h>using namespace std;typedef long long ll

2020-05-23 22:18:04 186

原创 牛客练习赛64 C 序列卷积之和(前缀和+贡献)

题目链接思路:暴力以后其实可以发现a【i】的贡献其实就是ia【i】(n-j+1)*a【j】,(i<=j<=n),如此一来我们只要用sum数组记录一下后面(n-j+1)*a【j】的前缀和就可以了。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod=1e9+7;const int maxn=2e5+5;ll a[maxn],sum[maxn],ans;int main

2020-05-23 22:15:11 176

原创 51Nod 区间求和(前缀和+算贡献好题)

题目链接抱抱熊在研究一个有趣的东西。她定义一个序列的权值是所有不同位置元素之差的和。例如1,2,3的权值,等于(2-1)+(3-1)+(3-2),后面的元素减前面的抱抱熊想在所有有序二元组i,j中若a[i]=a[j],其中1<=i<j<=n,把a[i],a[i+1],…,a[j] 提出当做一个序列,计算它的权值。并统计所有这样的区间的权值和。由于答案可能很大,你只需要将答案对2^32取模即可。快读建议Input第一行一个整数n(1<=n<=1000000),接下来

2020-05-23 22:11:04 215

原创 POJ - 3071 Football(概率DP)

题目链接Consider a single-elimination football tournament involving 2n teams, denoted 1, 2, …, 2n. In each round of the tournament, all teams still in the tournament are placed in a list in order of increasing index. Then, the first team in the list plays the

2020-05-22 22:25:53 129

原创 POJ - 3126 (bfs+最短路)

题目链接hh学长酷爱素数,他经常自娱自乐,随机挑选两个四位的素数a,b。游戏规则是:a可以通过改变某一位上的数字使其变成c,但只有当c也是四位的素数时才能进行这种改变。hh学长可以很轻松的算出a最少经过多少次变化使其变为b,所以他相信你也可以。例如:1033 -> 81791033173337333739377987798179最少变换了6次。Input第一行输入整数T,表示样例数。 (T <= 100)每个样例输入两个四位的素数a,b。(没有前导零)Output

2020-05-20 22:23:37 185

原创 hdu5536 Chip Factory(字典树的插入删除)

题目链接思路:枚举每个a【i】算贡献,进行01字典树取最大异或,但是由于i,j,k要不同,,所以在算a【i】的时候要把a【i】先从字典树上删除掉,不过哦貌似这题暴力也能过。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2e3+5;int tree[maxn*32][2],tot,ans=0,a[maxn],num[maxn*32];void insert(int x)

2020-05-20 21:37:51 98

原创 POJ - 2096 Collecting Bugs(期望DP)

题目链接Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material stuff, he collects software bugs. When Ivan gets a new program, he classifies all possible bugs into n categories. Each day he discovers exactly one bug i

2020-05-20 21:31:00 107

原创 牛客练习赛8 B 储物点的距离(前缀和)

题目链接题目描述一个数轴,每一个储物点会有一些东西,同时它们之间存在距离。每次给个区间[l,r],查询把这个区间内所有储物点的东西运到另外一个储物点的代价是多少?比如储物点i有x个东西,要运到储物点j,代价为x * dist( i , j )dist就是储物点间的距离。输入描述:第一行两个数表示n,m第二行n-1个数,第i个数表示第i个储物点与第i+1个储物点的距离ai第三行n个数,表示每个储物点的东西个数bi之后m行每行三个数x l r表示查询要把区间[l,r]储物点的物品全部运到储

2020-05-14 22:10:20 328

原创 牛客每日一题 maze(bfs+最短路)

题目链接题目描述小明来到一个由n x m个格子组成的迷宫,有些格子是陷阱,用’#‘表示,小明进入陷阱就会死亡,’.'表示没有陷阱。小明所在的位置用’S’表示,目的地用’T’表示。小明只能向上下左右相邻的格子移动,每移动一次花费1秒。有q个单向传送阵,每个传送阵各有一个入口和一个出口,入口和出口都在迷宫的格子里,当走到或被传送到一个有传送阵入口的格子时,小明可以选择是否开启传送阵。如果开启传送阵,小明就会被传送到出口对应的格子里,这个过程会花费3秒;如果不开启传送阵,将不会发生任何事情,小明可以继续向

2020-05-14 22:05:58 259

原创 Codeforces Round #641 (Div. 2) D. Orac and Medians(思维)

题目链接题意: 给定序列,每次可以选定一个区间将其所有数都变为该区间的中位数(偶数偏左,即取下整)。求能否将整个数组变为恒等于k。思路:是个水题。。。小的区间可以变换成大的。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=5e5+1;vector<int>g[maxn];ll a[maxn];int top=0,prime[maxn],isprime[m

2020-05-13 22:14:48 142

原创 Codeforces Round #641 (Div. 2) E. Orac and Game of Life(bfs+思维)

题目链接题意:给定一个黑白网格,每一轮会对这个黑白网格进行变换,规则是如果一个单元格中只要有一个单元格和它有相同的颜色,那么它就变色,给出x,y,p,问第p轮的时候(x,y)的颜色。思路:首先感谢这场比赛,成功上紫。其实这个也挺水的,不知道为什么没人做。首先可以模拟一下,如果一旦一个格子变色的话,最终会慢慢殃及其他所有的格子变色(就是时间早晚的问题),如果一旦一个格子变了色,那么在剩下的轮变换中呈现周期性变换,也就是从它变色的那一刻起(如果是奇数轮了就是变色,偶数轮又变回来了)。于是现在的重点就

2020-05-13 22:10:45 159

原创 Codeforces Round #641 (Div. 2) C. Orac and LCM(数论+gcd)

题目链接题意:求gcd{lcm(a【i】,a【j】} i<j思路:不知道正解是啥,就写一下比赛时的思路,感觉比D题还难呀。右唯一分解定理知最后的答案一定和素因子之间的乘积,于是考虑一下素因子的贡献,先打表素数表,然后对于每个a【i】分解质因子,那么什么情况下素因子能产生贡献呢?只有含有素因子的个数等于n或者n-1的时候,个数等于n的时候很容易知道lcm会约去最小的那个,于是贡献就是g【t】【1】,那等于n-1的时候为什么也成立呢,因为数组a中如果只有一个数没有这个素因子的话,那么假设这个数为a

2020-05-13 22:03:08 197

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除