![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
acm
文章平均质量分 57
vaeloverforever
黑暗总会过去的
展开
-
两种find函数—复杂度不一样!!!差别很大
原创 2018-08-22 20:54:06 · 4343 阅读 · 0 评论 -
set容器重载去重、排序、查找规则
struct node{ string val; int num,rnk; friend bool operator < (const node a, const node b){ if(a.val == b.val) return false; //按照val进行去重 return a.val < b.val; //按照val进行排序 } frien...原创 2018-08-22 20:48:56 · 997 阅读 · 1 评论 -
大数问题--超大数(10000以内)的阶乘
问题分析:很容易发现,由于N的范围很大,一般简单的阶乘算法肯定会溢出,因为当20!已经接近long long的上限了。所以得用大数问题的解法,就是模拟运算:下面基于上面的思想,给出此题的两种代码实现:①事先制表: #include<bits/stdc++.h>using namespace std;#define N 10005vector&...原创 2018-08-26 20:51:09 · 18693 阅读 · 5 评论 -
对拍程序--每个输入文件可以用少点样例,甚至只用一个样例,只要多次生成运行就行
以前用对拍,都是生成一个很大的输入文件,然后再写一个pat批处理文件,可是每次对拍成功还好,要是对拍失败的话,由于输入文件很大,也没法在输入文件定位,也很难找到到底是哪个样例出了问题。所以一直觉得对拍这个技能很鸡肋,所以几乎不怎么用。直到在《算法竞赛进阶指南》看了书上的对拍技巧,才发现,原来对拍是这样用的呀。soga~书上对拍是用C++代码实现的,而不是写一个批处理文件,这样用起来就很方便了。...原创 2018-08-26 20:43:53 · 189 阅读 · 0 评论 -
memset有毒 神坑!!!! Educational Codeforces Round 49 (Rated for Div. 2)(C题)
昨天打cf,写到C题,转化题意之后,写了一个只包含几个一重循环的代码,外加一个排序,也就是O(n)+O(nlogn)的算法,复杂度也就是O(nlogn),心想n也就是1e6,时间给了两秒,妥妥的够啊,于是过了样例,就交了一发,结果。。。T了???!!!当时那叫一个纳闷啊,你说你判我wa了,我也认了,结果我一个nlogn的代码,T了?。。。于是就立即检查是否范围不够啊,检查数组范围是够的,数据范...原创 2018-08-19 19:39:26 · 270 阅读 · 0 评论 -
关于容斥定理、勾股数公式、排列组合置换公式的总结
原创 2018-08-26 13:58:53 · 624 阅读 · 0 评论 -
写题过程中的debug总结
0️⃣写题之前①仔细读题,要尽力理解透彻题意②确定数据范围,如果数据达到1e9,就用long long③确定算法④确定数据结构 1️⃣样例都没过:①检查输入:检查变量类型 检查是否正确输入②仔细读一遍程序:尤其注意循环变量,==,以及多组测试时初始化问题,除零,下标越界③仔细读一遍题目,摈弃之前的观念,避免思维定式2️⃣样例过了①检查输出格式是否正确 例...原创 2018-08-17 22:26:49 · 326 阅读 · 0 评论 -
2018杭电多校联合比赛第一场 Time Zone----读入以及double运算问题
题目:hdu6308 地址:http://acm.hdu.edu.cn/showproblem.php?pid=6308 题解:就是时区转换,难点在读入数据,以及对小数的处理。 思路:首先是如何如何,特别是后面的UTC那串字符,一开始采用字符串读入的,后来发现还要讨论是否有小数点,以及小数点前面有几位数,还有就是要把字符转换为数字,比较麻烦。就采用了fscanf...原创 2018-07-25 11:05:14 · 356 阅读 · 0 评论 -
紫书第四章例题--UVa1587
题目:UVa1587 地址:https://vjudge.net/problem/UVA-1587 题意:给定两个字符串,判断能否把其中一个字符串各个字母重排,然后对26个字母做一个一一映射,使得两个字符串相同。 思路:既然字母可以重排,那么每一个字母的位置不再重要,重要的是各个字母出现的次数。所以可以统计各个字符串中每个字母出现的次数,如果可以一一映射的话,那么这两个字符串各个字母出现的次数应该...原创 2018-05-23 23:55:06 · 272 阅读 · 0 评论 -
紫书第三章例题--UVa1584
题目:UVa1584 地址:https://vjudge.net/problem/UVA-1584 题解:给你一个字符串,它构成一个环,可以以任意位置作为起点构成一个新的字符串,问你其中字典序最小的字符串是多少。 思路:直接遍历每个位置,以此作为起点构造字符串,求出当中最小的并输出。 编程技巧:① min函数默认可以按照字典序比较两个字符串 AC代码:#include<iostream>...原创 2018-05-23 00:16:47 · 146 阅读 · 0 评论 -
紫书第三章例题--UVa1583
题目:UVa1583 地址:https://vjudge.net/problem/UVA-1583 题解:如果x加上x的各个位上的数字后得到y,就说x是y的生成元。给出n(1<=n<=100000),求最小生成元(若没有生成元,就输出0)。例如,n=216,输出198,n=121,输出0。 思路:对于一个n,不难发现它的生成元肯定是小于n,那么知道它的生成元的范围后,可以直接暴力枚举呀...原创 2018-05-22 22:20:31 · 200 阅读 · 0 评论 -
紫书第三章例题--UVa340
题目:UVa340 地址:https://vjudge.net/problem/UVA-340 题解:先给你一个标准答案序列,然后再给你一个等长的序列,让你判断两个序列有多少位对应相等,又有多少位相同只是位置不同。 思路:题目要求的第一个比较好求,只要把两个序列对应位置的数字比较,就可以直接得到答案,至于第二个所要求的,可以先抛下位置的束缚,找出两个序列有多少位数字相同(不管位置是否对应),即对于...原创 2018-05-22 20:56:57 · 194 阅读 · 0 评论 -
紫书第三章例题--UVa401
题目:UVa401 地址:https://vjudge.net/problem/UVA-401 题解:给你一个字符串,让你判断它是否具有回文性质、镜像性质。 思路: 根据题意,直接首尾判断就行。 编程技巧:① 可以用常量字符数组读入镜像表 AC代码:#include<iostream>#include<cstdio>#include<algorithm>...原创 2018-05-22 18:15:33 · 152 阅读 · 0 评论 -
紫书第三章课后习题--UVa10340
题目:UVa10340 地址:https://vjudge.net/problem/UVA-10340 题解:给你俩字符串s1、s2,问你s2是否包含s1。 思路:一开始写的代码写的是遍历s1每一个字符,在s2中进行寻找,记录在s2中的下标,并与上次得到的下标进行比较,判断是否比上次得到的下标来的小。后来发现,在找s1的字符时,并不需要每次都遍历一遍s2,可以从上次查找到的位置的下一个开始查找。这...原创 2018-05-22 16:05:26 · 307 阅读 · 0 评论 -
KMP总结归纳 题型汇总(kuangbin带你飞专题16)
前序:花了好几天才把带你飞系列的KMP专题(地址:https://vjudge.net/contest/246969#overview搞定,刷了很多题,发现KMP可以用来解决这几类问题:①单个字符串匹配问题(s1在s2中匹配):这个用strstr(const char* big, const char* small)函数也可以,这个函数返回small在big函数中首次出现的地址,没有出现就返回...原创 2018-08-27 10:21:52 · 671 阅读 · 0 评论 -
求一个数的约数个数--分解定理
原创 2018-08-23 10:29:32 · 1413 阅读 · 2 评论 -
UVA - 10305 --- 拓扑排序
题目链接:https://vjudge.net/problem/UVA-10305#author=acmparand题目:就是裸的输出拓扑序列算法介绍:几个术语:(参考《大话数据结构 第七章 图 7.8 拓扑排序)AOV网(Activity On Vertex Network):用一个图表示一个工程前后执行顺序(又如:各个课程之间的选修次序),用顶点表示活动,用弧表示活动之间的优先...原创 2019-05-16 22:27:41 · 318 阅读 · 0 评论 -
freopen使流重新回到控制台上
freopen("CON","r",stdin);原创 2018-11-18 20:44:05 · 612 阅读 · 0 评论 -
叉乘坐标公式--求面积
故已知三角形三点坐标为(x1,y1) (x2,y2) (x3,y3)则三角形面积为=(1/2)*[(x2y3-x3y2)-(x1y3-x3y1)+(x1y2-x2y1)]原创 2018-10-06 23:38:02 · 31104 阅读 · 9 评论 -
最小最大表示法--O(n)
int getsmall(char s[]){ int m = strlen(s); int i,j,k; i = 0; j = 1; k = 0; while (i < m && j < m && k < m) { if(s[(i+k)%m] > s[(j+k)%m]){ ...原创 2018-09-21 22:22:46 · 520 阅读 · 1 评论 -
最大最小表示法
循环字符串的最小表示法的问题可以这样描述:对于一个字符串S,求S的循环的同构字符串S’中字典序最小的一个。由于语言能力有限,还是用实际例子来解释比较容易:设S=bcad,且S’是S的循环同构的串。S’可以是bcad或者cadb,adbc,dbca。而且最小表示的S’是adbc。对于字符串循环同构的最小表示法,其问题实质是求S串的一个位置,从这个位置开始循环输出S,得到的S’字典序...转载 2018-09-21 14:41:45 · 175 阅读 · 0 评论 -
简单搜索总结--kuangbin带你飞专题一
今天网络赛又被虐了,哎,还是太菜,还是忘了吧,重要的是努力,是提升,黑暗总会过去的!!!希望一直都有,只要你肯坚持!从现在做起,重拾信心,重拾希望,不要企图一步登天,不要想那些虚无缥缈的未来,脚踏实地,向前进!现在就把前阵子写的专题一做个总结吧。bfs:递归实现,所以容易超时爆栈,而且判重、标记要么都在中间,要么都在开头(根据写法类型而定,“先判再走”or"走后再判")【见A题】。回溯恢复...原创 2018-09-16 10:39:37 · 269 阅读 · 0 评论 -
前缀和的应用---①求区间和 ②求若干次区间整体变化后的个体变化量
应用1:给你若干数,问你某一段区间的和是多少?策略:通过O(n)遍历一遍后,求出每个位置的前缀和,然后可以通过前缀和相减的方式求得某个区间的和,例如求2~5的区间和,只要用S5-S1就行。举个栗子:1~5的区间和=S5=92~6的区间和=S6-S1=14-1=13 应用2:给你若干数,以及若干区间的整体变化之后,数组各个值为多少?策略:可以开一个变化数组change...原创 2018-09-09 09:49:24 · 488 阅读 · 0 评论 -
Poj--3263 Tallest Cow(区间修改问题+前缀和思想)
链接:https://vjudge.net/problem/CodeForces-375D#author=634579757题意:n头牛站一排,两头牛能相互看见,当且仅当它们中间的牛的身高都比它们矮。已知它们中最高的牛的身高是H,并且她是第P头牛,还知道M对关系,每一对关系都指明两头牛Ai和Bi可以相互看见。求每头牛的身高最大可能是多少?思路:可以用一个数组height表示各头牛的身高,但...原创 2018-09-03 00:35:23 · 331 阅读 · 0 评论 -
Powerful array – CF Div1 D(莫队算法)
题目链接:https://vjudge.net/problem/CodeForces-86D题意:给你一连串的数,有很多的询问区间,记一个区间的一个数(x)的个数为num,求num*num*x。思路:这种涉及很多区间中数字个数统计的查询,并且不涉及区间的修改操作时,可以直接用莫队算法。莫队的核心就是充分利用上一次的查询结果(其实就是通过上一次查询后的cnt数组的变化,充分利用上一次询问...原创 2018-09-02 13:19:32 · 392 阅读 · 0 评论 -
Manthan, Codefest 18 (rated, Div. 1 + Div. 2)----论AC的正确打开方式
前言:这场cf我当晚给忘了,事后补的,补了4题,没有一道题是1a的,很难受,痛定思痛,发现自己的思维存在一些问题,现结合这些问题,总结ac的正确打开方式。链接:http://codeforces.com/contest/1037A题:一开始看到tourist大神,一分钟就a了此题,心想肯定是规律题,于是写了前几个之后,就草草,猜了一个规律(貌似是n+C(n,2)),结果wa了,后来就老...原创 2018-09-04 21:07:18 · 1633 阅读 · 0 评论 -
acm--读入挂
基于cin太慢,scanf打起来太慢,而大量数据时,scanf有时候还是不够,可以采用读入挂,快速而且调用方便!居家必备啊!!!有木有!!!以后只要是读入整数,干脆直接都用读入挂算了注意点:只能读入整数!!!代码:inline int read(){ int sgn = 1; int cnt = 0; //sgn表示正负号 cnt表示读取的数字 char ch =...原创 2018-09-02 00:44:28 · 996 阅读 · 0 评论 -
初识莫队算法--例题:HH的项链
莫队算法:①适用问题:大量区间的个数统计问题,由于莫队是典型的离线算法,故不能解决区间存在修改的问题。比较典型的问题有“给定一个大小为N的数组,数组中所有元素的大小<=N。你需要回答M个查询。每个查询的形式是L,R。你需要回答在范围[ L,R ]中至少重复3次的数字(或者至少重复一次的数,即这个区间中不同的数)的个数。 ”②基本思想:其实莫队就是基于暴力大法而进行的优化,先来介绍...原创 2018-09-02 00:39:48 · 224 阅读 · 0 评论 -
字符串、字符数组的截取函数:strncpy、strsub
字符数组的截取函数:字符串截取函数:原创 2018-08-25 10:06:01 · 14627 阅读 · 0 评论 -
Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)
比赛地址:http://codeforces.com/contest/1025A题:题意:给你一串字符串,要求最后把字符串通过一定数量的操作后,变成同一个字母,操作是选择一个字母x(这个字母必须在字符串中出现不止一次),然后把字符串中所有的x变为y(任意字母),这个操作可以进行无限次。问你能否完成要求,能就输出"Yes",否则输出"No"。思路:读懂题意之后,很容易想到,只要字符串...原创 2018-08-20 15:49:07 · 140 阅读 · 0 评论 -
紫书第三章课后习题--UVa1587
题目:UVa1587 地址:https://vjudge.net/problem/UVA-1587 题解:题意很简单,就是给你六个长方形,问你能否构造成长方体。 思路:就是把六个长方形两两配对,可以先对这六个矩形进行排序,先按长排序,然后再对宽排序。排序后,先比较前四个矩形的长是否相同,然后比较前12、34这两组的宽是否相同,再比较最后两个矩形的是否相同,最后把56这一组的矩形与前两组的宽相比较。...原创 2018-05-21 23:37:24 · 143 阅读 · 0 评论 -
紫书第三章书后习题--UVa1368
题目:UVa1368 地址:https://vjudge.net/problem/UVA-1368 题解:这一题定义了一个汉明距离:两个字符串有n个对应的位置不同,那么汉明距离就为n。然后给你一些字符串,要求找出一个字符串,使它到各个字符串的汉明距离之和最小。 思路:一开始困于汉明距离的定义,一直想按照定义求出这个汉明距离,然后就没有然后了。。。想过暴力枚举可能的字符串,然后求出最小汉明距离之和的...原创 2018-05-21 22:08:19 · 194 阅读 · 0 评论 -
紫书第三章课后习题——UVa202
题目:UVa202 地址:https://vjudge.net/problem/UVA-202 题解:题意很简单,就是求一个循环小数的循环节的长度。 思路: 思路嘛,结合输出格式,不难想到把这个小数的每一位存进一个数组中,然后问题来了,要存储多少位才停止,换句话说,也就是如何确定一个循环节,一开始打算,对于每一个位向前匹配,可是匹配多少位才能确定一个循环节呢。后来手算了一下样例,发现小数部分...原创 2018-05-21 20:39:31 · 239 阅读 · 0 评论 -
初学acmer--c++的泛型库(一)向量
1.元素的插入#include#includeusing namespace std;int main(){vector v(3);//注意声明vector容器个数时用的是"()",不是"[]",区分下面的v[0]!!! vector::iterator it;v[0]=2;v[1]=7;v[2]=9;for(it=v.begin();it!=v.end原创 2017-09-16 16:09:40 · 248 阅读 · 0 评论 -
初学acmer--《算法竞赛经典入门》读书笔记(暴力专题)P182
题目:DivisionWrite a program that finds and displays all pairs of 5-digit numbers that between them use the digits 0 through 9 once each, such that the first number divided by the second is equa原创 2017-09-11 15:42:45 · 509 阅读 · 0 评论 -
c++-algorithm 头文件排序sort
想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~std::sort()函数的功能很强大,且可以对类,结构体等元素进行排序。C++sort参考手册所以自己总结了一下,首先看sort函数见下表:参考csdn函数名功能描述sort对给定区间所有元素进行排序stable_sor转载 2017-09-14 16:49:13 · 2336 阅读 · 0 评论 -
初学acmer--读《算法算法竞赛入门经典》笔记(12) P73-74
题目:古老的密码(Ancinet Cipher,NEERC 2004,UVa1339)给定两个长度相同且不超过100的字符串,判断是否能把其中一个字符串的各个字母重排,然后对26个字母做一个一一映射,使得两个字符串相同。例如,JWPUDJSTVP重排后可以得到WJDUPSJPVT,然后把每个字母映射到它前一个字母(B->A,C->B,...,Z->Y,A->Z),得到VICTORIOUS。输入原创 2017-08-23 17:33:18 · 376 阅读 · 1 评论 -
初学acmer--读《算法竞赛入门经典》笔记(11)P61-65
1.为什么main函数,我们总是让它返回0?答:main函数作为整个程序的入口,有一个“其他的程序”来调用它--如操作系统、IDE、调试器、甚至自动评估系统。这个零表示“正常结束”,即返回给调用者。在算法竞赛中,除了特殊要求以外,请总让它返回零,以免评估系统错误地认为程序异常退出了。2.题目:计算组合数,编写一个函数,参数是两个非负整数n和m,返回组合数C_n^m=n!/m!*(n-m原创 2017-08-15 11:54:47 · 232 阅读 · 0 评论 -
初学acmer--读《算法竞赛入门经典》笔记(五)P41-45
题目:竖式问题:找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应该有编号,之后有一个空行。最后输出解的总数。具体格式见样例(样例中空格用小数点表示,但程序中应该输出空格,而非小数点)样例输入;2357样例输出:。。775x 。。33-----。2325原创 2017-08-07 21:18:22 · 282 阅读 · 0 评论 -
初学acmer--读《算法竞赛入门经典》笔记<四>(p36-41)
1.下面的程序运行结果是什么?(p36)#includeint main() { double i; for(i=9.9;i!=10;i+=0.1) { printf("%.lf\n",i); } return 0;}根据自己主观感觉,以为结果是9.9运行发现是101010101010101111111111111原创 2017-08-04 09:39:10 · 200 阅读 · 0 评论