自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021年中国大学生程序设计竞赛女生专场-F. 地图压缩

2021年中国大学生程序设计竞赛女生专场-F. 地图压缩

2022-09-13 15:07:21 329 1

原创 2021年中国大学生程序设计竞赛女生专场-ADGIK

2021年中国大学生程序设计竞赛女生专场-ADGIK

2022-09-07 14:19:14 1824 1

原创 2021 ICPC Asia Taiwan Online Programming Contest C. A Sorting Problem

2021 ICPC Asia Taiwan Online Programming Contest C. A Sorting Problem

2022-09-05 17:42:07 380

原创 2021 ICPC Asia Taiwan Online Programming Contest D. Drunk Passenger

2021 ICPC Asia Taiwan Online Programming Contest D. Drunk Passenger

2022-09-05 17:40:20 207

原创 2021 ICPC Asia Taiwan Online Programming Contest ABJ

2021 ICPC Asia Taiwan Online Programming Contest ABJ

2022-09-05 16:38:03 183

原创 【日常训练赛】G - Rescheduling the Exam

题目链接Problem - 1650E - Codeforces题意已知总天数d和考试的天数,dmitry可以改变一门考试的时间,以获得考试前的休息,记x是每一种安排下,休息的最少天数,要求出x的最大值思路求最小值的最大值,也就是需要二分答案,这个不难想到,关键点就是在于如果写check函数。休息时间t[i]-t[i-1]-1 而休息时间最少的那两门考试必须要移动一个。所以需要两门都进行计算。因为打比赛写到这题的时候脑子已经转不动了,所以借此机会重新整理一下check函数的思路

2022-03-20 16:45:47 395

原创 【日常训练赛】F - Twist the Permutation

题目链接Problem - 1650D - Codeforces题意一个a[i]=i的数列,进行左移操作,(移到数列的最左边,其他顺序不改变)。现给出最终的数列,要求输出,从原数列变成目标数列的过程。思路从最终的结果往前面倒推,因为变换的过程中该数字后面的数字不改变的,从最后一步开始往前倒推。我们设置一个数组来记录结果的数字所处的位置的索引,也就是他所在的位置,对位置求余,就可以得到,上一步的时候他移动到的最后的位置所需要的步数。然后更新其状态,一直推回到第一步操作。代码#in

2022-03-20 16:26:02 96

原创 【日常训练赛】E - Weird Sum

题目链接题意定义了一个n*m的桌面,每一块有不同的颜色, 要求是求出每一对相同颜色的方块之间的曼哈顿距离之和。曼哈顿距离是指,只有相邻(有共同的边)才可以移动的条件下,两者之间的最短距离思路可以用vector来记录,行和列分开来计算。使用 sum[] 数组 和 cnt[]数组 sum[x]记录x颜色的横(纵)坐标之和 cnt[x]记录x颜色出现的次数。我们使用变量ans来表示曼哈顿距离的和,先算所有行,再算所有列。以计算横坐标之差为例,那么此时距离就是 之前 出现的次数*现在的坐标-坐标之和

2022-03-20 11:44:38 266

原创 【日常训练赛】D - Fault-tolerant Network

题目链接Problem - 1651C - Codeforces题意大概就是两排电脑,同一排的电脑是彼此联通的,不同排的电脑则不是,现在要求是让所有电脑连接在一起,而把a行第i个电脑与b中第j个电脑连接在一起的花费是 |a[i]-b[j] | ,要求是寻找把所有电脑连在一起的最小花费思路这题给我的感觉大概是一个模拟题,因为同一行的电脑是连接好了的,问题是怎么样把两行的电脑彼此连接在一起,主要是要考虑的是a[1] a[n] b[1] b[n] 之间的连接情况。画张图列举一下。。(啊对不

2022-03-19 21:37:46 309

原创 【日常训练赛】C - Prove Him Wrong

题目链接Problem - 1651B - Codeforces题意对数有这样一个操作,选择a[i]与a[j] 使 a[i]=a[j]=| a[i]-a[j] |要求判断的数,给出数组的长度,要求判判断能否证明进行操作之后,数组的和不会减小思路在我看来是很直观的一道题目,求解不等式 a[i]+a[j]>=|a[i]+a[j]| 算出来的是三倍的关系,我们只需要保证,后者是前者的三倍即可满足,因为数据限制在1e9之内,3^18<1e9<3^19,也就是说n<=.

2022-03-19 21:25:18 458

原创 【日常训练赛】B - Gregor and the Pawn Game

题目链接Problem - 1549B - Codeforces题意一个n*n的棋盘,第n行(最下面)是己方的棋子,第1行(最上面)是敌方的棋子。gregor在一轮中只移动自己的棋子。如果没有棋子挡着的话,就可以直接向正上方走。而棋子向左上和右上行走是当且仅当他正方有棋子的时候。同时己方棋子到达的位置上的敌方棋子也会被移除。要求求出可可以到达第一行的最大的棋子数。思路不难。首先的话中间大片的空白是不需要考虑的,直接直走的就好了。扫描到己方棋子的时候,如果其正上方没有棋子的话,直接直走就好

2022-03-19 21:16:35 150

原创 【日常训练赛】A - Windblume Ode

题目链接Problem - 1583A - Codeforces题意给一个数组,可以删除其中的元素。要求是找到使各个元素之和是合数的最大子集思路题目不是很难,分两种情况。首先如果原本数组一开始的和就是合数的话,那么直接原数组输出就好了。如果不是的话,只需要去掉一个奇数就好了。是因为,偶数必然为合数,如果现在的和为质数,那么他必然为奇数。奇数-偶数=奇数,不一定符合要求;但是奇数-奇数=偶数,必然是合数。此时子集长度为n-1显然符合要求。代码#include<map>

2022-03-19 21:03:49 129

原创 【区间dp】#558. 快快变大

题目链接快快变大 - 题目 - Daimayuan Online Judge题意可以对数列进行的操作是合并 a[x]与a[x+1] 使之变成 a[x] * a[x+1] %mod 同时获得积分 (a[x]-a[x+1])^2 直到该数列只剩下最后一个数组 求解 通过有限次的该操作 可以获得的最大积分是多少思路一道区间dp的题目 关键是表示出他的动态方程我们用 dp[x][y] 表示合并从x到y 获得的最大积分数那么动态方程为:dp[i][j]=max(dp[i][j],.

2022-03-19 11:08:44 286

原创 【图论】测试题A - Networking

题意一个无向图,n个顶点,m条边,要求求出最小生成树的所有边之和思路整道题还是比较裸的(写完之后看了一下似乎是kruskal算法)储存好图之后按照边的权值大小排序,遍历每一个边,保证每次选择的是最短的边代码#include<map>#include<cmath>#include<stack>#include<queue>#include<cstdio>#include<vector>#include

2022-02-18 16:31:38 143

原创 【图论】训练题C - How Many Paths?

题意一个有向图,要求返回从1到n的路径情况。0:0条路 1:一条路 -1:无限条 2:多与1的有限条思路会出现无限的原因是因为有环的存在,可以通过tarjan算法找到连通块tarjan找到连通块后,相应的ans[i]已经被更新成-1。深搜所有点,如果该点ans=-1,那么其他经过他的点也是-1。只有一条通路的,可以再次通过深搜来确定最后一次深搜,如果有多条边到该点,则该点往后的点的ans则被更新成2代码#include<map>#include<

2022-02-18 16:19:33 126

原创 【图论】训练题B - The Number of Imposters

题意n个玩家,m条指令(i说j是imposter/crewmate)要求求出imposter可能最多为多少人思路如果A说B为imposter说明2者属于不同团队,如果A说B为crewmate则二者属于一个团队(imposter和crewmate都肯那个),我们只需要判断出可能是一个团队的最多人数。利用并查集,我们把属于同一团队的权值设置为0,不属于的设置为1代码#include<map>#include<cmath>#include<stack&g

2022-02-15 17:11:15 382

原创 【图论】训练题D - Dijkstra?

题意给一个图,要求求出从初始位置到重点的最短路径思路迪杰斯特拉算法的模板题,还是花了挺久时间熟悉代码的,使用了优先队列进行优化代码#include<map>#include<cmath>#include<stack>#include<queue>#include<cstdio>#include<vector>#include<string>#include<cstring>#

2022-02-15 16:17:12 339

原创 【图论】测试题A - pSort

题意给定一个从1到n的数组,给一个目标数组和d[i],第i个数只能和距离d[i]的元素交换,要求判断是否能变换成目标数组思路直接用并查集的思路去解决代码#include<map>#include<cmath>#include<stack>#include<queue>#include<cstdio>#include<vector>#include<string>#include<cs

2022-02-14 19:10:28 152

原创 【贪心与动态规划】训练题L - Priest John‘s Busiest Day

题意N对情侣结婚,在婚礼上需要举行一个占据婚礼一半时间且不能被打断的仪式,要求判断神父是否可以完成所有情侣的仪式思路首先对每一对情侣排序按照时间顺序排序,再做判断。首先第一场婚礼必然是从头开始举行仪式,如果开始的时间点加上这场仪式的时间,再加上下一场仪式的比下一场婚礼结束的时间来的早那么则可行,需要注意的是,如果开始时间点加这场仪式的时间小于下一场婚礼开始的时间的时候,下一场仪式开始的时间应该是下一场婚礼开始的时间。代码#include<map>#include&lt

2022-02-09 16:05:03 200

原创 【贪心与动态规划】训练题H - Palindromic Subsequence

题意要求输出一个字符串的最大回文子序列,在此基础上要求字典序最前思路使用dp[j][i]表示从j到i的回文串的长度,ans[j][i]表示从j到i符合题目要求的字符串正向遍历这个串,如果新加入的字符(位置为i)正好与前面位置为j相等,则可以构成回文,dp[j][i]=dp[j+1][i-1]+2,此时ans[j][i]为s[j]+中间的串+s[i]如果不相等的话,那么不构成回文串,那么ans就不能把左右两个字母都加进去,只能放置一个,就看[j+1][i]和[j][i-1]的长度(dp

2022-02-09 14:11:50 68

原创 【贪心与动态规划】训练题E - Partitioning by Palindromes

题意(越来越顺手了 开心子)给定一个字符串,按照回文串分割,要求计算出最少的份数思路首先划分的要求是回文串,可以用二维数组ok[i][j]来表示,从i到j是否为回文串。dp【i】数组则表示,从0到i最少可分割成多少份。如果从s[j+1]到s[i]都为回文串,那么dp[i]=dp[j]+1。代码#include<map>#include<cmath>#include<stack>#include<queue>#inclu

2022-02-08 21:13:37 168

原创 【贪心与动态规划】训练题G - Children‘s Game

题意给出若干数,要求输出他们拼接成的最大的数思路这题是出乎意料的简单()主要是,不能直接根据字典序大小排列,而需要考虑的是两个串相加的大小,也就有了底下的cmp函数代码#include<map>#include<cmath>#include<stack>#include<queue>#include<cstdio>#include<vector>#include<string>#inc

2022-02-08 18:41:03 176

原创 【贪心与动态规划】训练题C- Jin Ge Jin Qu hao

题意给出几首歌的时间和所剩余的时间,加上劲歌金曲(为什么不是情歌王(bushi)),要求先满足唱尽量多的歌,其次尽量晚的离开KTV思路这首歌要么唱,要不然就得唱完,相当于01背包问题,除此之外,除了唱的歌要多以外,还要求唱的时间尽量长。如果用song[]来存每首歌的时间,不难分析出dp的方程我们用dp[j]来表示还剩j秒的时候,可以唱的最大的歌曲数。由于要达到最优解,那么必然是剩下最后一秒的时候点上劲歌金曲,所以要从t-1开始遍历因为各种小问题WA真的太搞心态了。。。代码#

2022-02-08 18:14:50 341

原创 【贪心与动态规划】训练题B - Watering Grass

题意一个矩形草地,一排洒水机,求可以覆盖这个草地最少需要打开几个洒水机思路由于洒水机的洒水的洒水范围是圆形,我们需要计算的,是洒水范围与草地相交的弦长l(通过勾股定理可以算出);那么洒水机的有效范围可以用圆心位置+-l来表示。通过比较每一次洒水机的最右端与下一个洒水机的最左端来判断哪些洒水机需要打开。注意,如果第一个洒水机的最左端大于0的话,说明必然无法覆盖,直接输出-1;最后一个洒水机的最右端如果没有超过草地的话,同样无法完全覆盖,输出-1.但是不知道为什么TLE了两次....

2022-02-08 17:14:49 69

原创 【贪心与动态规划】训练题A - Smallest Sub-Array

题意:求连续最短的子序列,是其包括【1,K】思路:一开始无脑上去暴力然后果不其然的TLE了()本题可以使用滑动窗口算法来解决

2022-02-07 19:51:46 51

原创 【树形结构】测试题D - A Simple Task

题意一个长度为n的字符串,有q条查询。两种操作:1. i,j,1 把字符串从i到j的部分升序排列2. i,j,0把字符串从i到j的部分降序排列求q次查询之后字符串的结果思路训练赛的时候这题没想出来怎么写,下来查了查题解。然后分析一波,终于理解了。就是建立26棵线段树,对应每个字母,负责记录每个字母出现的位置。每个T内ans记录的就是该字母出现的位置,而cnt统计我们要操作的那部分的那个字母出现了几次,然后因为要对那个区间更新,所以对这个区间可以先用0覆盖,然后再根据c

2022-01-29 15:44:38 1091

原创 【树形结构】训练题N - Ultra-QuickSort

题意给一个无序的数组,只能交换相邻两个数,变换成从小到大的数列,问最少需要多少次思路归并排序求逆序数,好像是一道模板题捏。(结果居然因为数组开小了而RE了一次)代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>#inclu

2022-01-27 23:11:24 630

原创 【树形结构】训练题M - 维护序列

题意一种序列,三种操作。1.从t到g 每一个乘c2.从t到g 每一个加c3.查询区间和思路这一题的变化在于要注意取模。其次,对于乘和加,需要放置两个标记,下放lazy的时候写成一个pushdown,并且做乘运算的时候,加法lazy也要有相应的改变。还有就是lazy和ans值的改变与传统线段树模板的不同代码#include<iostream>#include<cmath>#include<stack>#include<m..

2022-01-27 21:38:39 566

原创 【树形结构】训练题E - Can you answer these queries V

题意同样是求字段最大和 不过要求是i在[x1,y1]之间,j在[x2,y2]之间。思路首先是两大类情况讨论一、y1<x2二、y1>=x2其次就是一些缩短时间的方法:快读,规避掉数组读入,使用位运算,在每个函数结束后加上return(日常tle太难受了)代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queu

2022-01-26 22:44:03 277

原创 【树形结构】训练题G - Can you answer these queries IV

题意一个序列,要求完成两种操作1.要求从x到y开放2.求和思路这题主要的问题才tle风险。首先的话,开方开到1的话后面开放就不变,不用再开了。但是不知道为什么明明这样操作了但是还是报了tle最后发现是输入数组的问题,顺便加了快读函数,做了一些相应的优化代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue&gt

2022-01-26 18:47:02 401

原创 【树形结构】训练题C - Can you answer these queries III

题意在原来I的基础上 增加了单点更新操作思路和原来的A题基本一直,只需要在写一个单点更新的分函数就好了,还是比较裸的板子,除了一开始脑子一抽忘记把结构体的所有值都要更新()代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>

2022-01-25 23:19:31 78

原创 【树形结构】训练题A - Can you answer these queries I

题意就是要求一个区间的连续的最大字段和思路线段树,注意用结构体建树来的会更方便一些代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>#include<cstring>#include<algorithm

2022-01-25 22:52:11 55

原创 【树形结构】训练J - A Simple Problem with Integers

题意要求完成两个操作1.C abc 从a到b都加上c2.Q ab 计算从a到b的和思路线段树的基本操作。注意要使用懒更新:lazy标记的清除和更新以及树的数组大小要开原始数组的4倍

2022-01-25 15:48:13 69

原创 【搜索】训练题J-Maximum Product

题意给了n个数字,要求就是求出这组数按顺序相乘的最大值,如果结果不是正整数,那么答案为0思路枚举每一个点,计算往后相乘的结果,并且维护一个数字max,当相乘的结果ans大于max的时候,将ans的值赋给max。本题需要注意的是每个case结束之后要空一行代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#incl

2022-01-24 12:18:22 41

原创 【搜索】训练题M - Protect Sheep

题意一个棋盘,有sheep和wolf,要求是判断是否可以通过放置dog来保护sheep。思路其实只需要判断wolf上下左右是否有sheep或者sheep上下左右是否有wolf即可,因为不要求放置的dog的数量,最简单的方法就是用dog把棋盘铺满就可以代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#includ

2022-01-24 12:12:59 120

原创 【搜索】训练题J-山峰和山谷 Ridges and Valleys

题意棋盘每个数字表示高度,四周高中间低为山谷,反之为山峰,要求统计山峰和山谷的数量思路枚举每个点,对每个点进行对8个方向跑bfs,判断该方块周围的高度情况。代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>#include

2022-01-24 12:07:48 83

原创 【搜索】训练题H-Prime Ring Problem

题意从1到n排成一个环,要求是相邻两个数的和为素数思路对每个数dfs,符合要求就存在num数组中,如果数组最后一位+1也为素数,则符合要求,输出。代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>#include<c

2022-01-24 12:03:09 51

原创 【搜索】训练E - Crazy Robot

题意就是一个棋盘 有一个crazy robot ,对它下指令,robot就会朝非指令方向移动,同时robot无法越界和穿越障碍物,要求就是找出可以通过下指令使robot回到L的位置 并打上+标记思路因为下指令之后robot会往除了该方向以外的其他地方走,本质上相当于加了一堵墙,那么要让robot能回到L的话就需要满足条件:小于等于两条路可以走,且有一条通向L。而满足该条件的点,又可以当作新的L。所以考虑到用dfs。除此之外,通过另写一个函数wall来判断robot在该点周围的墙数会方便很多~

2022-01-24 00:41:37 123

原创 【搜索】训练题C - Computer Game

题意给出两行,判断是否能(1,1)走到(2,n)思路由于只需要判断是否能走的到就可以了,实际上,只要去的路上没有被完全“堵住”,都可以到达右下角代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>#include<cs

2022-01-24 00:16:59 216

原创 【搜索】训练题B - Knight Moves

题意计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数思路一道bfs,比较贴合模板的那种,就是一直广搜到与目标坐标相等之后把step返回就好代码#include<iostream>#include<cmath>#include<stack>#include<map>#include<queue>#include<cstdio>#include<vector>#include<c

2022-01-24 00:11:22 51

空空如也

空空如也

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

TA关注的人

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