算法训练
oj让我卡过一条吧
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #663 (Div. 2)比赛中做出的三题
题意场萌新认识到了手速的可怕。c题有一个坑,ab又怂担心不是真的水题,这场真的打炸了。A. Suborrays传送门:https://codeforces.ml/contest/1391/problem/A题意:给你一个n,让你写出一个n的排列,要求任意选一段长度,长度内的数按位或运算大于等于这个长度。解法:似乎你怎么输出这个排列都可以,只要这真的是个排列代码:#include<bits/stdc++.h>using namespace std;typede原创 2020-08-10 01:17:56 · 735 阅读 · 0 评论 -
Codeforces Round #662 (Div. 2) 比赛中做出的四题
刚刚结束比赛,还没hack,要是被hack了再说。A Rainbow Dash, Fluttershy and Chess Coloring传送门:https://codeforces.com/contest/1393/problem/A第一题,两个人画图,给出n*n的空白正方形,只能贴边画或者贴已经画过的画,并且必须斜着对应。没这么弄懂题意。但是看着应该是一个找规律,比如5的问题,把边贴两遍就变成3的问题。所以找个规律就行了。题意真的坑,读了十分钟读不懂就莽了。代码:#inc原创 2020-08-08 01:11:25 · 403 阅读 · 0 评论 -
Codeforces Round #659 (Div. 2)B2
B2. Koa and the Beach (Hard Version)原题:https://codeforces.ml/contest/1384/problem/B2题意:给你n,k,l,表示koa距离目标的距离、涨潮的周期和koa的高度。koa一秒只能游泳一个距离。接着n个输入涨潮之前的海水高度。涨潮的规律是k秒上涨k秒下跌。当海水超过l时,koa就会被淹死。分析:这题最重要的是建立分析思路。首先我们将koa的状态分成三种:必活、必死和量子态。必活:表示l>m+k这样无论如何涨原创 2020-07-28 19:08:02 · 202 阅读 · 0 评论 -
Codeforces Round #659 (Div. 2)A/C
这场是标标准准的自闭场。不过算是完成了上青色的目标。总之不亏吧。A. Common Prefixes原题:https://codeforces.ml/contest/1384/problem/A题意:给你一些数字,你构造一些字符串,让他们有这样数字的公共前缀解法:这题手速可以,要不是手速快点就真自闭了。构造任意字符串,然后根据数字将输入的数字所对应的字符位置改成原字符+1,如果是z就-1.这样就构造完毕了。代码:#include<bits/stdc++.h>using原创 2020-07-28 17:10:46 · 161 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2)E Mastermind(补题)
题意:两个数组,长度一样。他们中有x个是一模一样,y个经过换序可以一样。给出长度n和x,y,再给出其中一个数组,问能不能有另一个数组符合要求。有就输出YES并打印这个数组,否则输出NO。分析:以后我不做2500的题了,对自己太自信了。没有金刚钻,不去试这些玩意了。首先对数组按数值从小到大排序,然后计算相同量,每个数和前一个数相同,相同量就是前一个数+1.然后按照相同量从大到小排序,把x的指标优先配发给相同量高的数。然后从没配发的(假设长度为len)开始按数值从小到大排序,配发值为a[...原创 2020-07-23 17:22:52 · 228 阅读 · 0 评论 -
Codeforces Round #657 (Div. 2)补题D New Passenger Trams
题意:某个星球的一天有h小时,一小时有m分钟,现在有两种车要开,红色的每半小时开一次,每次要准备k分钟再开。蓝色的车有固定的时刻表,且没有准备时间,但是它与红色的车的时间重合了就会被取消掉(端点重合不取消),问你第一辆红色车的开始时间是多少才能使取消掉最小的蓝色车的数量最小。分析:小时数h肯定使没用的,因为一辆蓝车在h1发车和h2发车不会对我们产生任何影响。同理,这辆蓝车在m1发车(m1<m/2)和它在m1+m/2的时候发车也不会对结果产生影响。那么题目就可以简化成已经模了m/2的...原创 2020-07-23 02:45:54 · 200 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2) 比赛做出来的四题和差点做出来的一题
题意:找出两个字符串最短的公共子字符串分析:水题,最短一定是1,直接找一个一样的输出就行了。代码:#include <bits/stdc++.h>using namespace std;int ji[1005];int a[1005];int b[1005];void rlmn(){ int n,m; scanf("%d%d",&n,&m); for (int i=0;i<=1000;i++) ji[i]=0; for (i...原创 2020-07-22 03:22:35 · 257 阅读 · 0 评论 -
Codeforces Round #657 (Div. 2)C(补题)
题意:结婚纪念日到了,给老婆买花。花有m种,每种无数个。你要买n朵。第i种花的第一朵给你老婆ai的愉悦值,第二朵开始则是bi的愉悦值。你想让老婆愉悦值最高,求最高的方案。分析:哭了,这题我赛后看了三分钟就想到思路了。为什么赛中我不看题。其实这场比赛就a题比较不正常的卡我(其实是我zz了)首先我们要明确一个事实,这也是题目最重要的隐藏信息:买多种花的话最多只会买一种。因为如果买了两种就意味着要么是相等(可以买一种),要么不相等,那肯定有更优的解。因此只可能买一种。既然如此,策略就很清晰了。...原创 2020-07-20 14:46:04 · 188 阅读 · 0 评论 -
Codeforces Round #657 (Div. 2)A与B
这场真的是自闭场,第一题卡了一小时,第二题也wa了两发,差点爆零。。。直到最后(其实是现在)都不知道第一题wa点在哪。题意:给你一个字符串,中间有一些问号,你可以随意把这些问号换成小写字母。问最后形成的字符串能不能让abacaba变成它的子串且仅出现一次。分析:其实重点就是只出现一次。我觉得要是不考虑只出现一次倒真的像一道a题。。。由于样本比较小,我们可以直接暴力。对每个位置开始做一次分析,将待分析的这七个字母尽量往abacaba上靠(即把问号都换成对应的字母)。其他问号全部原创 2020-07-19 21:04:34 · 252 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3)G. Columns Swaps(补题)
题意:给你两行数(2行n列),交换一些列,让每行都正好有1-n这n个数。问是否可以,可以则输出至少移动多少次,否则输出-1分析:这题有人说二分图染色,有人说2-SAT。咱又不打acm,自然想用一些简单的方法去做做。我们考虑到每一列有两种状态:换或者不换。当一个数在同一行出现的时候,这个数所在的两列必须有且仅有一列交换。而当一个数在不同行出现时,这两列要么都换要么都不换。因此,如果将每一列看作一个“动物”,那么如果有数字在同一行就说明该列和另一列是“不同的种类”。如果在不同行,就说明是...原创 2020-07-18 21:44:08 · 411 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3) F. Removing Leaves(补题)
题意:有一棵树,共有n个节点。每次从同一个节点上去除k个叶子,问最多去除几次。解法:这题有些可惜了,看到做出来的人少觉得不能做,实际上不难。就是一个贪心。贪心的策略是:每次剪掉即可。因为剪去叶子不会对其他的节点产生负影响。也就是说,剪除一次以后,只会说多出一个节点可以减,不会说剪除了以后导致其他节点减不了。因此这道题根本不用考虑剪枝的先后问题,直接剪就行了。具体做法:维护每个点的出入度,可以叫做“关联度”。当每有一个点相连的时候,关联度加一。当关联度为1的时候就是叶子节点,也就是...原创 2020-07-18 18:54:07 · 254 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3) E. Directing Edges(补题)
题意:给一个图,有些是有向的有些是无向的。要求将无向的标成有向的,并且让整个图不形成环。如果可以输出YES并给出其中一种方案。否则输出NO。做不出来的原因:不会拓扑排序。思考的时候想到过使用并查集但是被一个点连着所有点的有向给否定了。其实有一个拓扑排序的意思,就是知道点的前后顺序就行了。但是还是太菜了。拓扑排序拓扑排序的算法是:将有向图的入度为0的点去掉,然后去掉它所连接的边,然后先去的排在前面,后去的排在后面,直到全部去除完毕。形成的排序就叫做拓扑排序。如果去除到最后发现仍...原创 2020-07-18 17:03:45 · 346 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3)前四题(比赛中做出来的)
A题Three Pairwise Maximums题意:给出xyz三个数,其中求abc的值或者说不存在思路:对应反推出a=min(x,y),b=min(x,z),c=min(y,z)是解之一。然后按原条件验证,符合条件就是YES否则就是NO。代码:#include <bits/stdc++.h>using namespace std;int main(){ int T; scanf("%d",&T); while (T--) { int x,y..原创 2020-07-18 01:11:48 · 320 阅读 · 0 评论 -
2018年清华大学软件学院夏令营机试题解
原题博客:https://blog.csdn.net/wangkingkingking/article/details/80666385第二题我觉得他的做法会TLE。5e9肯定只能n啊但是我这个人代码老是写错,所以希望大家指正一下。前提:a一定要小于5e9。我觉得作为一道正常的题目,a到1e7就够了吧,硬要卡MLE就是狗了思路:我的想法是,因为凸函数的任何极小值也是最小...原创 2019-06-10 18:07:17 · 1134 阅读 · 0 评论 -
记录水题破200
看着队里面的大佬都那么强。。。我这个水比直到昨天才做到200题。。。不过还是值得纪念的。。。天地良心,去年暑假的时候根本没有怎么认真做题,专门去刷poj的水题。。。要说真的好好做题,也就是最近一个月拿几十道题目。然后自己的实力好像也已经强多了。继续努力!向300题努力!...转载 2019-05-16 11:02:49 · 127 阅读 · 0 评论 -
菜狗打acm的一些感想
我从大二下入坑acm,大概花了一个多月刷题,刷了蓝桥杯省二等奖、校赛二等奖,还进了校集训队。但进了集训队后才发现,在我那个小圈子里面所谓非常强的蓝桥杯,大佬们都是当免费去北京旅游玩的。一般每场蓝桥杯都会有十几个集训队的结队去北京混吃混喝,拿不到国奖简直就是丢人,更别说我这种连北京都去不了的了。后来整个暑假都在做题和自闭中,总是打成集训队倒数,一次次被打击。就这样被打击到大三上,是真的没有去打区...原创 2019-05-13 23:04:01 · 307 阅读 · 0 评论 -
南京理工大学冬季夏令营
http://codeforces.com/group/Q3jdU0O5HE/contests原创 2019-04-28 20:36:37 · 710 阅读 · 0 评论 -
EOJ邀请赛F题
这道题比赛居然没有写出来!!!死的心都有了。垃圾水题毁我人生。只学过C实在伤不起啊!!!一定要恶补字符串。其实暴露的问题特别多,比如map用的不熟练,居然不知道string也可以当第一个值。我之前一直只把map当作超大数组用。比赛的时候,一直做不出来的原因,其实就是因为insert和erase两个函数不会用。真是令人头秃。正题这题有个坑点就是输入...原创 2019-04-28 09:39:12 · 235 阅读 · 0 评论 -
华师打铁总结
冲着金去,打了块铁,秀啊。总结一下原因吧。这场比赛还是暴露了很多问题的。第一,不会字符串处理和概率题。这个硬伤太严重了。同样有问题的是不会线段树和树状数组。作为一个马上要打省赛、西安邀请赛和蓝桥杯国赛的选手,知识还差这么多简直是一场灾难。其实模拟赛就有好多不会,已经认识了和大佬的差距--连一个位运算都不会,简直是zz。但愿以后能变强吧。...原创 2019-04-28 09:00:05 · 184 阅读 · 0 评论 -
堆排序
今天蓝桥杯练习系统炸了,正好就练习一下堆排序和快速排序。两种排序都比冒泡要高级。快排利用的是递归算法,将key指定一个数(一般指定左边的数)。然后将所有大于key的数字扔在右边,所有小于key的扔在左边。然后分成两块以后,再将左边分成两块右边分成两块如此反复直到一块只有一个数字。void kuai(int *a,int left,int right){ if (left>=right) { ...原创 2018-03-17 14:04:03 · 120 阅读 · 0 评论 -
蓝桥杯安慰奶牛
纪念一下,这是我第一次不依靠网上的代码自己写及格的一次题。虽然仍然运行超时,但是真的已经很给我这个代码小白信心了问题描述Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路。道路被用来连接N个牧场,牧场被连续地编号为1到N。每一个牧场都是一个奶牛的家。FJ计划除去P条道路中尽可能多的道路,但是还要保持牧场之间 的连通性。你首先要决定那些道路是需要保留的N-1条道路。第j条双向道...原创 2018-03-28 16:15:14 · 240 阅读 · 0 评论 -
算法训练 关联矩阵
玩树太烧脑子决定做两道水题。问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵。输入格式 第一行两个整数n、m,表示图中结点和边的数目。n<=100,m<=1000。 接下来m行,每行两个整数a、b,表示图中有(a,b)边。 注意图中可能含有重边,但不会有自环。输出格式 输出该图的关联矩阵,注意请勿改变边和结点的顺序。样例输入5 91 23 11 52 52 32 3...原创 2018-03-28 16:46:36 · 304 阅读 · 0 评论 -
算法训练 寻找数组中最大值
问题描述 对于给定整数数组a[],寻找其中最大值,并返回下标。输入格式 整数数组a[],数组元素个数小于1等于100。输出数据分作两行:第一行只有一个数,表示数组元素个数;第二行为数组的各个元素。输出格式 输出最大值,及其下标样例输入33 2 1样例输出3 0这里不知道蓝桥是不是想考验一下动态的基础。这里因为数组没有什么用处,我只要不断的记住最大值和他对应的号码牌就可以了代码:#inclu...原创 2018-03-28 16:53:28 · 1121 阅读 · 0 评论 -
算法训练 Torry的困惑(基本型)
问题描述 Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。输入格式 仅包含一个正整数n,其...原创 2018-03-28 17:23:33 · 578 阅读 · 0 评论 -
算法训练 最小乘积(基本型)
问题描述 给两组数,各n个。 请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。要求程序输出这个最小值。 例如两组数分别为:1 3 -5和-2 4 1 那么对应乘积取和的最小值应为: (-5) * 4 + 3 * (-2) + 1 * 1 = -25输入格式 第一个行一个数T表示数据组数。后面每组数据,先读入一个n,接下来两行每行n个数,每个数的绝对值小于等...原创 2018-03-28 18:34:59 · 253 阅读 · 0 评论 -
算法训练 动态数组使用
从键盘读入n个整数,使用动态数组存储所读入的整数,并计算它们的和与平均值分别输出。要求尽可能使用函数实现程序代码。平均值为小数的只保留其整数部分。样例输入: 5 3 4 0 0 2样例输出:9 1样例输入: 73 2 7 5 2 9 1样例输出:29 4真的不知道蓝桥杯在搞什么,就像复制过来还有背景一样让人难受不懂这种题目为什么要用动态存储。直接一个量就行了好不好就算你动态存储省内存但我只...原创 2018-03-28 18:41:42 · 454 阅读 · 0 评论 -
算法训练 大小写转换
问题描述 编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小写,小写字母变成大写,然后把这个新的字符串输出。 输入格式:输入一个字符串,而且这个字符串当中只包含英文字母,不包含其他类型的字符,也没有空格。 输出格式:输出经过转换后的字符串。输入输出样例样例输入AeDb样例输出aEdB这题还算有意思毕竟我忘了各个字母的代码了不过稍微...原创 2018-03-28 18:43:25 · 517 阅读 · 0 评论 -
POJ 2431
#include<stdio.h>#include<algorithm>#include<queue>using namespace std; int a[10005];int b[10005];struct stop{ int a; int b;}s[10005];bool comp(stop s1, stop s2){ return s1.a <...原创 2018-07-12 23:15:37 · 238 阅读 · 0 评论 -
POJ 1028
/*2018.8.28下午4点-2018.8.29 下午13:58这题主要考察栈,本来用数组也能做,但是可能比较麻烦,加上我想练习一下栈就用栈去写了栈主要有这些操作size、pop、push、top 就这些够用了 用两个栈去维护,当back或者forward的时候将一个栈里面的顶端给移到另一个栈的顶端注意几个细节1.back的那个栈最底层至少要有一个元素2.forward在的那个...原创 2018-08-29 14:08:49 · 527 阅读 · 0 评论 -
POJ2365
蠢了蠢了一道这么水的题目写了一晚上,就是因为把a real number翻译成了一个整数看来英语不好时硬伤因为最近在上java课,决定刷几条水水的poj练手java提交poj要注意class后面必须用Main下面附代码import java.util.Scanner;public class Main { public static void main(Strin...原创 2018-10-10 22:22:47 · 160 阅读 · 0 评论 -
POJ2365
#include<stdio.h>#include<math.h>#include<algorithm>#include <iostream>using namespace std;int main(){ int n; double r; cin>>n; cin>>r; do...原创 2018-10-10 22:28:56 · 125 阅读 · 0 评论 -
优先队列优化的dijkstra不是万能的!
今天做天梯赛训练题L2-01L2-001 紧急救援 (25 分)作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个...原创 2019-03-23 01:34:29 · 345 阅读 · 0 评论 -
vector
说实话,我也没有搞的太清楚它是干什么的。不过做题的时候,似乎只要知道可以写邻接矩阵,挺好用的。之前邻接矩阵需要这么写:int a[1005][1005];然后遍历的时候这样:for (int i=0;i<n;i++) for (int j=0;j<m;j++) a[i][j]=...这样的坏处是最多存10000的宽度,到100000数据肯定不行...原创 2019-03-23 01:42:37 · 99 阅读 · 0 评论 -
并查集
并查集是一种非常重要的数据结构。之前听的晕乎乎的,今天自己学了一下,发现很简单为什么要用并查集?因为快!可以迅速找到祖宗,非常好用!一开始,很简单,所有人都是自己的祖宗。因此for (int i=1;i<100000;i++) ren[i]=i;接着,每次输入时,有一个寻找祖宗的办法。int find(int x){ if (x!=ren[x]) re...原创 2019-03-23 01:49:38 · 143 阅读 · 0 评论 -
算法训练 区间k大数查询
问题描述给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式第一行包含一个数n,表示序列长度。第二行包含n个正整数,表示给定的序列。第三个包含一个正整数m,表示询问个数。接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。输出格式总共输出m行,每行一个数,表示询问的答案。样例输入51 2 3 4 521 ...原创 2018-03-16 09:49:11 · 158 阅读 · 0 评论