acm总结
注意事项:
不要轻易中途变换思路修改代码
发现有样例无法通过可以用if强行通过
注意输入输出形式(long long为lld,无符号为llu)。
开过1亿的int型数组
Long long能读入输出19位数
调用函数时是否有放入参数
调用函数的参数是否在合理范围内(米勒素数的参数应从2开始)
不要在子函数重复定义全局变量(tarjan中cnt重复定义)
注意判断与循环的小括号后有没有多加;号
当输入数据量特别小并且输入字符的时候很容易出现不合法数据,所以这时候最好不要用scanf要用cin更加安全
Prim在稠密图中比Kruskal优,在稀疏图中比Kruskal劣。Prim+Heap在任何时候都有令人满意的的时间复杂度,但是代价是空间消耗极大。【以及代码很复杂>_<】时间复杂度并不能反映出一个算法的实际优劣。
竞赛所给的题大多数是稀疏图,所以尽可能地使用Prim+Heap吧,在稀疏图中这是无敌的。如果一定要在朴素Prim和Kruskal里选一个的话那就用Kruskal吧。当然Prim的代码比较简单,对付水题用Prim也无所谓,只要不是极稀疏图两者相差不大
勿把find(i)写成find(0)
不能在printf中使用%lf。printf()用%f输出double型,而scanf用%lf
注意在同一个模块多个循环的循环变量混用
要排序的数组范围
写博客标注题目出处,注释变量名,题目意思
用gets注意是否有读入其他地方的回车,要学会运用printf调试
读字符串不要用gets,用getline可读入一行内容
#include<bits/stdc++.h>包含了目前c++所包含的所有头文件
C程序默认log()是取自然对数为底,即ln.直接用换底公式表示其他数为底的log,写个简单的表达式就完成了。例如:log2 x写成:log(x)/log(2).exp就是计算e的多少次方
在C++下,若要使用C中已有库中的函数如stdio,文件包含方式为前面加一个c,同时去掉.h后缀,如#include <cstdio>,同时必须加上using namaspace;对于其他类似的函数同样;
对于C++特有的库,直接用去掉.h后缀的文件包含,并加上using namaspace;
#include<bits/stdc++.h>这个头文件包含以下等等C++中包含的所有头文件,不过在国内oj中,poj,hdu 不支持这个函数,这几个oj的编译器问题,其他国外的oj,还有台湾的oj都支持,CF,Topcoder也都支持
scanf("%lf %c %lf",&a,&chh,&b);数据输入时,最好严格按照样例留有空格
position=max_element(a,a+n)-a;这样写的话就代表的是找到的最大元素的位置在哪里,position代表位置, 值得注意的一点是这个返回的是最大元素的位置,即指针指向第一个最大元素我们用以下方式表示找到的最大元素的值 printf("%d\n",*max_element(a,a+n)); 同时 min_element的用法同上,但是都有一个共同点,就是找到的位置都是第一个最大(小)的元素,即存在多个相同大小的元素的时候找到的是第一个
long long的使用:输入:scanf("%I64d",&l);输出:printf("%I64d",s);为了以后避免错误,就直接用这种方式就行了
- 打素数表用欧拉筛数法,不要用米勒素数,容易溢出
- 读入整行字符串:
char str[1024];
scanf("%[^\n]",&str);
getchar(); //此时读入的字符串是可以含有空格,而且会把开头的空格也读进来,如果要循环多次从屏幕上读取一行的话,就要在读取一行后,在用%c读取一个字符,将输入缓冲区中的换行符给读出来 strchr函数的用法:
原型: char *strchr(const char *s,char c);
#include<string.h>
查找字符串s中首次出现字符c的位置,返回首次出现c的位置的指针,如果s中不存在c则返回NULL。
- run time error: 数组越界,编译器选择错误
- 设有一串数,0<a....b.....c,b到c的异或和=a到c的异或和 异或 a到b的异或和,(因为异或满足结合律,交换律,(a^..^c)^(a^...^b)=a^a^...^b^b^...c=b'^...^c)
- strstr(p, p1) 查找子字符串
- 若调用函数对象为a++,则为先调用a,再自加
- 递归调用的边界部分不能漏掉return!
- 有些题目的输出中末尾不能有空格!例如HDU1016
- stl队列没有迭代器
- 广搜时要注意设置标记数组,给每一步做标记 ,数据合法性的判断是否完全
- 解题时,可以先用超时的方法进行打表,再解题
- 给字符数组加结束符号要用双引号:char s[5]="\0";
- debug想输出队列时,可以用另一个队列来装
- 不要用与库函数同名的名字来命名函数,如div
- 可以用printf调试法来看懂他人代码
- 提交前最好不要有warning信息
- int二维数组可以开到10000*10000,如果二位数组无法装下,则考虑用vector
- 快速幂用long long以防溢出
若出现错误:fatal error: iostream: No such file or director,则可能是提交的编译环境选择错误
- sort(a,a+n);的排序范围是a[0]~a[n-1]
- 提交前记得注释掉测试代码段
- 程序异常终止,要检查函数参数是否有不合格情况
- 遇事不决先打表,首先暴力打个表,多打表找规律
- 对题目理解有疑问要懂得问客服,多查看问答区域
- 使用long long 时,记得用%lld
- 若提交后显示无此头文件,则检查提交时的编译环境是否选择正确
- 输出要注意题目要求的小数位数
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
- cstring与string不一样,要分别添加
- 开数组时,注意看清题目限制。如n x m<...
- 涉及图形的题目时,在找规律时要认真画图
- 不要再case里面定义变量
- 当题目要求答案对1e9取模时,用long long
- WA时先检查输出格式是否正确
- for()循环中的判断条件应尽量少
- stringstream在进行多次类型转换前,必须先运行clear()
知识点:
快速幂
米勒素数:
1
随机取一个
a
2 如果
它不满足 a^(n-1)%n
==1
3 则它一定是
合数
4 退出
5 如果它满足
a^(n-1)%n
==1
6 则它是一个素数的概率是1/2
7 回到
1
if n <
2,152,302,898,747, it is enough to test a = 2, 3, 5, 7, and
11
快速幂模:(a*b)%c=(a%c)*(b%c)%c
(a+b) mod p = (a mod p + b mod p) mod p
(a*b) mod p = ((a mod p) * (b mod p)) mod p
(a-b) mod p = ((a mod p)-(b mod p) + p) mod p
acm总结的更多相关文章
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- acm结束了
最后一场比赛打完了.之前为了记录一些题目,开了这个博客,现在结束了acm,这个博客之后也不再更新了. 大家继续加油!
- 关于ACM的总结
看了不少大神的退役帖,今天终于要本弱装一波逼祭奠一下我关于ACM的回忆. 从大二上开始接触到大三下结束,接近两年的时间,对于大神们来说两年的确算不上时间,然而对于本弱来说就是大学的一半时光.大一的懵懂 ...
- 第一届山东省ACM——Phone Number(java)
Description We know that if a phone number A is another phone number B’s prefix, B is not able to be ...
- 第一届山东省ACM——Balloons(java)
Description Both Saya and Kudo like balloons. One day, they heard that in the central park, there wi ...
- ACM之鸡血篇
一匹黑马的诞生 故事还要从南京现场赛讲起,话说这次现场赛,各路ACM英雄豪杰齐聚南京,为争取亚洲总舵南京分舵舵主之职位,都使出了看 家本领,其中有最有实力的有京城两大帮清华帮,北大帮,南郡三大派上交派 ...
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
- acm 1002 算法设计
最近突然想往算法方向走走,做了做航电acm的几道题 二话不说,开始 航电acm 1002 题主要是处理长数据的问题,算法原理比较简单,就是用字符数组代替int,因为int太短需要处理的数据较长 下面是 ...
- ACM进阶计划
ACM进阶计划ACM队不是为了一场比赛而存在的,为的是队员的整体提高.大学期间,ACM队队员必须要学好的课程有:lC/C++两种语言l高等数学l线性代数l数据结构l离散数学l数据库原理l操作系统原理l ...
随机推荐
- vue.js ------ 大牛和网站
hellogirl前端网站 : http://www.jqhtml.com/category/article FungLeo: http://blog.csdn.net/FungLeo/article ...
- Python函数(3)
一.装饰器 什么是装饰器,装饰器就是用于拓展原来函数功能的一种函数 装饰器就是用来为被装饰对象添加新功能的工具,装饰器本身可以是任意可调用对象,被装饰的对象也可以是任意可调用对象 装饰器遵循一个关键原 ...
- Mvc过滤器的使用【转载】
前言 在开发大项目的时候总会有相关的AOP面向切面编程的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中不想让MVC开发人员去关心和写类似身份验证,日志,异常,行为截取等这部分重复的代码 ...
- Azure IOT 设备固件更新技巧,看这一篇就够了
嫌长不看版 今天为大家准备的硬菜是:在 Azure IoT 中心创建 Node.js 控制台应用,进行端到端模拟固件更新,为基于 Intel Edison 的设备安装新版固件的流程.通过创建模拟设备应 ...
- Swagger2:常用注解说明
Swagger2常用注解说明 Spring Boot : Swagger 2使用教程:https://www.cnblogs.com/JealousGirl/p/swagger.html 这里只讲述@ ...
- python3线程介绍02(线程锁的介绍:互斥、信号、条件、时间、定时器)
#!/usr/bin/env python# -*- coding:utf-8 -*- import threadingimport timeimport random # 1-互斥锁 Lock 同一 ...
- CentOS-6.5安装配置JDK-7
安装说明 系统环境:centos-6.5安装方式:rpm安装 软件:jdk-7-linux-x64.rpm下载地址:http://www.oracle.com/technetwork/java/jav ...
- wxWidgets窗口类型
如果在创建窗口的时候你没有指定窗口的边框类型,那么在不同的平台上将会有不同的边框类型的缺省值.在windows平台上,控件边框的缺省值为 wxSUNKEN_BORDER,意为使用当前系统风格的边框.你 ...
- python_2_变量的使用2
''' 多行注释(三个单引号,或者双引号) gf_of_oldboy="Chen rong hua"#变量的表示办法1,用下划线(老男孩的女朋友) GfOfOldboy=" ...
- Spring boot 异常处理配置
1. 新建Maven项目 exception 2. pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0&quo ...