CrossFire Round #481 div.3 978 打后感】的更多相关文章

虚拟赛,头一次打div.3感觉好TM水啊...... 一共7道题,我A了6道,第7题有思路但是没时间了. 结果还是排在700多名,可能其他人也觉得太水了吧. 逐一解析题目: A好简单,因为不想离散化我就用了个map轻松水过. B好简单,贪心每次删第三个x即可. C有点困难啊,反正我用了前缀和+二分,然后调了几个细节,A了. D仔细思考,回忆起了等比数列的性质:前两个数可以决定整个数列,于是枚举⑨种情况即可. E不太困难,但是很可耻的WA了一次,因为太心急了没想清楚,不小心输出了负数.这题只要记录…
A题,题目链接:http://codeforces.com/contest/978/problem/A 解题心得:题意就是让你将这个数列去重,重复的数只保留最右边的那个,最后按顺序打印数列.set+map. #include <bits/stdc++.h> using namespace std; const int maxn = 100; int num[maxn],n; map <int,int> map1,map2; set <int> se; int main(…
题目地址:http://codeforces.com/contest/978/problem/B 题解:一串文件名里不能出现连续的xxx,询问进行几次操作后,文件名才不会出现xxx. 方法:只要遍历一遍字符串里有几个xxx就可以了. 代码:(代码较丑,欢迎大佬们批评指正) #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<string>…
成功掉到灰,真的心太累了,orz!!!!,不是很懂那些国外大佬为什么每次都是20多分钟AK的,QAQ A. Remove Duplicates time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Petya has an array aa consisting of nn integers. He wants to remove d…
http://codeforces.com/contest/978/problem/D 题目大意: 给你一个长度为n的b(i)数组,你有如下操作: 对数组中的某个元素+1,+0,-1.并且这个元素只能修改一次 问:是否有操作能吧这个数组变成等差 如果有,请输出把他变成等差的最小步数.否则输出-1: 思路: 定等差的值即可 暴力b1和b2的+1,+0,-1,即可得到等差的值…
http://codeforces.com/contest/978/problem/G 感冒是真的受不了...敲代码都没力气... 题目大意: 期末复习周,一共持续n天,有m场考试 每场考试有如下信息: ①si表示知道第i门课的考试时间是在第si天的时候 ②di表示第i门课的考试时间 ③ci表示准备第i门课需要ci天的复习 在考试的那一天不能复习. 问n天中每一天都需要干啥? 三种情况,休息(输出0),复习(输出复习那一门科目的id),考试(输出m+1) 思路:按照di排序(即按照截止时间),然…
题目地址:http://codeforces.com/contest/978/problem/C 题解:有n个宿舍,每个宿舍人不一样多,有m封信,每封信送给对应的第m间房间,问这封信是给第几个宿舍,第几间房的. 方法:做题目的时候没有看到信的编号是不断升高的,把题目想复杂了,wa了两次.这题把寝室的房间累加在一起,然后设一个现在送到那个寝室的变量,逐步累加算法会快很多. 代码:(代码较丑,欢迎大佬们批评指正) #include<cstdio> #include<cmath> #in…
题目地址:http://codeforces.com/contest/978/problem/A 题解:给一串长度为n的数组,然后删去相同的数字(从右往左). 方法:题目n和数组ai给的范围都很小,所以可以放一个vis[1500]的数组表示1~1000内的数字是否被访问过.从右到左倒着访问,然后再把out数组倒着输出. 代码:(代码较丑,欢迎大佬们批评指正) #include<cstdio> #include<cmath> #include<algorithm> #in…
题意:有一个长度为\(n\)的序列\(a\),求这个序列中有多少比\(a_{i}\)小的数,如果某两个位置上的数有矛盾,则不能算小. 题解:用\(pair\)来记录序列中元素的位置和大小,将他们升序排序,对于每对矛盾的位置,只记录\(a[u]>a[v]\)的情况,小于等于的情况没必要考虑,然后我们遍历排序后的序列,二分查找第一个大于等于它的位置,然后减去比它小的矛盾的点的个数即为答案.时间复杂度为\(O(n*logn)\) 代码: #include <iostream> #include…
题意:有一个长度为\(n\)的序列,可以对所有元素++或--,求最少的操作次数,如果无论如何都不能构成,则输出\(-1\). 题解:一个等差数列一定由首项\(a_{1}\)和公差\(d\)来决定,而这两项可以有\(a_{1}\)和\(a_{2}\)来决定,所以我们可以直接暴力枚举\(a[1]\)和\(a[2]\),一共\(9\)种情况,每次向后枚举,判断每个位置上的数是否能得到,然后更新最小值即可. 代码: #include <iostream> #include <cstdio>…