
算法
文章平均质量分 55
安特尼
知不可乎骤得,托遗响于悲风。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2025CCPC河北省赛题解
2025CCPC中国大学生程序设计竞赛河北省赛题解(H,M,J,K,A,D,I)原创 2025-05-27 18:51:54 · 309 阅读 · 0 评论 -
2023CCPC东北四省赛题解
2023 CCPC东北四省赛VP记录(A,D,E,G,H,I,K,M)。原创 2025-05-22 20:42:32 · 816 阅读 · 0 评论 -
2025ICPC南昌邀请赛题解
2025ICPC南昌邀请赛由XDU和WHU联合出题的ICPC南昌邀请赛,榜单显示8题金、6题银、5题铜。原创 2025-05-20 15:54:38 · 845 阅读 · 0 评论 -
2020CCPC河南省赛题解
2020CCPC河南省赛前8题题解。原创 2025-05-17 21:41:13 · 939 阅读 · 0 评论 -
2025ICPC陕西省赛题解
本文提供了七个编程问题的解决方案,分别涉及矩阵处理、最大公约数、学生出队规则、字符串匹配和颜色涂色问题。每个问题都通过C++代码实现,并附有简要的解题思路。例如,L. easy问题通过选择每行最小的两个数并处理奇数情况来求解;C. gcd问题通过寻找b的因数且不是a的因数来解决;G. student问题通过分析最大值和最小值的位置来确定出队规则;J. Win问题通过贪心算法计算需要补充的字母数量;A. Color问题通过贪心策略优化颜色涂色成本。这些解决方案展示了如何通过算法和数据结构高效解决实际问题。原创 2025-05-15 21:32:50 · 887 阅读 · 0 评论 -
Codeforces Round 1024 (Div. 2)
这题不要想当然直接奇数位偶数位分别排序,每次四个数是需要同时操作的,可以从逆序对的角度去考虑,奇偶位置逆序对的相对性是不变的。如果都是奇数个或偶数个逆序对,直接排序即可,否则就交换a[n],a[n-2],代价最小。(写了一个很暴力的模拟,不知道有没有更好的方法。2.大于a[1]的数大于(n+1)/2-1个,拿出这部分数和a[1]设置为负数。1.大于a[1]的数大于n/2个,这样将多余的数设置为负数。全部看作正数,如果a[1]能够成为中值数,有两种情况。蛇形填入顺序,左,下,右,上。每转两次方向,步数加1。原创 2025-05-12 16:55:13 · 544 阅读 · 3 评论 -
Codeforces Round 1012 (Div. 2)
感觉这道题需要对脑电波,一开始猜的是“2 1 3 4 5 6 7...”,写了对拍到50都没有问题就交了。然后越想越不对,然后发现规律好像是"x , x - 1 , x + 1 , x + 2 , x + 3...",为了凑尽可能多对,x选择最接近n/2的质数。a[i]==1时,这个人要选最近的没人坐的桌子,a[i]==0时,这个人要选最近的没人坐的椅子。n最大为50000,也就是最多会坐50000个桌子。直接用BFS,维护桌子和椅子两个set。如果某行或者某列是合法的,那么一定是从这行这列开始连着的1。原创 2025-05-08 17:34:23 · 192 阅读 · 0 评论 -
Codeforces Round 1023 (Div. 2)
如果一开始不管tom怎么拿,max-min>k,那么tom输,否则,就一定可以拿完所有的苹果,统计数量即可。如果不满足以上两种情况则说明有答案。我们只需要改变s中第一个0位置的数,这时可以用二分的方法填充该位置。如果有0,则我们先把所有对应位置填上-1e15,如果这个时候最大子段和大于k,则输出"No"。首先我们先统计s中是否有0,如果没有只要最大子段和不为k则输出"No"。其他情况均成立,所以将最大值单独分为一组即可。将数组分为不为空的两组,要求每组gcd不同。维护树的最长直径,注意不要重复搜索。原创 2025-05-06 15:17:50 · 405 阅读 · 0 评论 -
2025CCPC北京市赛 C题 砝码
从二进制角度考虑,先判断$m$个硬币是否可以凑出$n$,因为$n \leq 10^9$,所以我们从$1$开始枚举先利用最优策略拼凑出多少数值,再将剩下的数值平分到剩余的硬币中。原创 2025-04-24 10:42:44 · 352 阅读 · 0 评论 -
Educational Codeforces Round 177 (Rated for Div. 2)
每次将一个数置为0,需要修改所有与之相关的位置(如4,2,3,1,将第一个位置置为0,则需要修改1和4位置),所以可以用并查集维护是否在一个集合和集合中个数的数量。排列组合题,考察逆元和DP,预处理出fac和infac数组。在遍历每个字母数量时,采用01背包的思想。原创 2025-05-05 21:53:41 · 329 阅读 · 0 评论 -
2024 十五届蓝桥杯省赛Python B组
2024 十五届蓝桥杯省赛Python B组原创 2024-04-14 10:29:12 · 3260 阅读 · 5 评论 -
PAT 2024年春季(甲级)
对于PTA(包括天梯赛、睿抗、PAT等等)中常考的描述文字和要求较多的问题,我们拆分成多个问题,分别求解,对于姓名和五个数字的匹配,我们用map来储存(进而可以直接用map判断考生是否存在),用结构体来存这五个数字。因为数据可能存在因重叠而导致的重复计算情况,所以我们要遍历每一个3*2的矩阵,注意输出的格式问题。用d数组来存储每个点的度数,取min,再去遍历,即可得到度数最小的点。1.度数最小的点的度数不为0,无法进行拓扑,则不存在唯一的拓扑序。再计算只有左子节点的根的数量和只有右子节点的根的数量的差值。原创 2024-03-13 11:29:33 · 995 阅读 · 1 评论 -
PAT 2024年春季(乙级)
再从大小判断,n个不同的偶数组成的数最小是 (2 + 2 * n)* n / 2 = (1 + n) * n ,m个奇数组成的最小的数是 (1 + 2 * m - 1) * m / 2 = m * m。对于PTA(包括天梯赛、睿抗、PAT等等)中常考的描述文字和要求较多的问题,我们拆分成多个问题,分别求解,对于姓名和五个数字的匹配,我们用map来储存(进而可以直接用map判断考生是否存在),用结构体来存这五个数字。给定n和m,让我们判断能不能由n个不同的偶数和m个不同的奇数组成2024。原创 2024-03-12 21:18:52 · 1299 阅读 · 1 评论 -
Codeforces Round 642 (Div. 3) D. Constructing the Array
每次选择,我们要先选择最长的字段,在长度相等的情况下选择最靠左边的。我们可以将最靠左边的这个条件转换为右边剩余长度最长的,这样字段和剩余长度的增减性相同,我们可以用pair来存储字段长度和剩余长度,用大根堆来存储每个线段,每次取出队头元素,得到答案。我们可以发现每次填充一个数之后,我们就得到两段新的线段。所以按照题目所说的方法,我们模拟就可以得到答案。但我们需要把更新控制到nlog(n)以内。题意:根据所示方法构造数组。原创 2024-01-07 00:36:40 · 456 阅读 · 0 评论 -
Codeforces Round 646 (Div. 2) C. Game On Leaves
题意:给定一颗树和一个节点x,每次从这棵树上删除一个叶子节点及其任何一条连接的边,Ayush先手,问谁先取到节点x。不难发现,当节点x相连的节点及其子节点有奇数个时,Ayush胜利,反之,Ashish胜利。对于样例一,不管Ayush先选择去掉哪一个节点,节点x都会被Ashish拿走。我们可以得出对于Ayush如果节点x本来就是叶子节点,那他就可以直接取走。Ayush可以先取节点4,然后将必败态留给Ashish,一定胜利。对于样例二,Ayush可以直接拿走节点x。1.节点x的节点及其子节点有奇数个。原创 2024-01-06 17:30:30 · 484 阅读 · 0 评论 -
Codeforces Round 635 (Div. 1) A. Linova and Kingdom
首先,这个节点对答案的正贡献是到根节点的距离deep,因为我们选择一个节点就一定会选择他的子节点,所以选择这个点会让他所有的子孙节点的贡献-1,所以负贡献为s[i](s数组表示该节点子孙节点的数量),总的贡献就是 deep - s[i] ,将每个点的贡献排序,从大到小选择k个,即为最大值。对于任意一个父节点,我们如果选择父节点而不选择他的子节点,那么一定不如选择他的子节点,可以得到更大的数。题意:给定一棵树,选择k个点,求每个点到根(1是根节点)之间最短路径上非选择点数量之和的最大值。原创 2024-01-05 19:20:05 · 875 阅读 · 0 评论 -
Codeforces Round 723 (Div. 2) C2. Potions (Hard Version)
当碰到负数时,如果加上这个负数,我们的值仍然是非负数,那么本着贪心的原则,能贪则贪,我们就选择这个。对于这道题就是当我们遇上加上这个数是负数时,如果之前有比这个数更小的负数,我们就删去之前更小的那个负数,选择这个数。反悔贪心也就是指我当前阶段觉得这个可以贪,那我就贪,但当我走到下一个阶段发现贪当前这个远胜于贪之前那个的时候就反悔,不再要之前贪的那个了,俗称“渣男”。题意:给定长度为n的数组,每个元素可选择要或者不要,初始值为0,要求在保证得到的值始终不为负的情况下,能选择的最多的个数。原创 2024-01-04 22:34:16 · 470 阅读 · 0 评论 -
Codeforces Beta Round 1 B. Spreadsheets
对于BC23转为R23C55,我们只需要顺序遍历就可以得到C对应的值,即B为(B - A)* pow(26 , 1) + (C - A)* pow(26 , 0)。对于R23C55转换成BC23则需要注意,在这种表示方法中并不存在0的表示,所以我们在每次取模之后,如果遇到0,则需要把他转换为26,同时在 除以26的时候减一。观察BC23和R23C55,发现第二种表示方法仅有RC两个字母,并且不相邻,因此我们可以判断出当前的表示方法是那种。题意:完成两种表示方式之间的转换。因此我们需要用"Z"来表示0,原创 2024-01-03 10:56:04 · 505 阅读 · 0 评论 -
树与二分图-2022RoboCom 世界机器人开发者大赛-本科组(省赛)
2022RoboCom 世界机器人开发者大赛-本科组(省赛)第五题(二分图的应用)。原创 2022-08-01 22:29:58 · 728 阅读 · 1 评论 -
三值序列排序问题
三值排序的贪心问题原创 2022-04-02 21:42:59 · 581 阅读 · 0 评论 -
Dijkstra求最短路
最短路径,dijkstra原创 2022-02-23 15:25:13 · 140 阅读 · 0 评论 -
货币系统(闫氏DP分析法求解DP问题)
给定 V 种货币(单位:元),每种货币使用的次数不限。不同种类的货币,面值可能是相同的。现在,要你用这 V 种货币凑出 N 元钱,请问共有多少种不同的凑法。输入格式第一行包含两个整数 V 和 N。接下来的若干行,将一共输出 V 个整数,每个整数表示一种货币的面值。输出格式输出一个整数,表示所求总方案数。数据范围1≤V≤251≤N≤10000答案保证在long long范围内。输入样例:3 101 2 5输出样例:10难度:简单 ..原创 2022-01-26 11:33:21 · 234 阅读 · 0 评论 -
奶牛棒球(枚举与双指针)
农夫约翰的N头奶牛排成一排,每头奶牛都位于数轴中的不同位置上。它们正在练习投掷棒球。农夫约翰观看时,观察到一组三头牛(X,Y,Z)(X,Y,Z)完成了两次成功的投掷。牛X把球扔给她右边的牛Y,然后牛Y把球扔给她右边的牛Z。约翰指出,第二次投掷的距离不少于第一次投掷的距离,也不超过第一次投掷的距离的两倍。请计算共有多少组牛(X,Y,Z)(X,Y,Z)可能是约翰所看到的。输入格式第一行包含整数N。接下来N行,每行描述一头牛的位置。输出格式输出奶...原创 2022-01-17 12:46:09 · 411 阅读 · 0 评论 -
dfs-递归实现指数型枚举
dfs——深度优先搜索。用一张图来表示的话,应该是这样,先向深处搜索,当搜索到最后一个时再回溯。就是按照这样的顺序进行搜索。以下面这道题为例:从1∼n1∼n这nn个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数nn。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好11个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤151≤n≤15...原创 2021-12-28 08:48:25 · 250 阅读 · 0 评论