- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CUGB ACM/ICPC GROUP CUGB ACM/ICPC GROUP 1、数组越界 2、数值越界 3、运算符操作 4、输入输出 5、main函数 6、精度误差 7、初始化 新手常见问题 1、关于数组越界 N的值不大于100,你的数组可以开到105或110,防止临界值发生错误。 其次,要注意数组下标是从0开始的,到N-1。 比赛内存限制一般为64MB。相当于int数组能开1000万以上。所以平时大家不要再吝啬数组大小了…… 2、数值溢出 Char类型范围:-128~127 int类型范围: -2^31——2^31-1 (即-2147483648~2147483647,2.14*10^9) Double范围:约在-10^308~10^308,并提供15~16位有效数字. 3、运算符操作 除号 / 的使用:1、两个整数相除,结果还是整数 2、必须强制转换类型才能得到浮点数 sqrt的使用:math.h头文件里,sqrt(x),其中x必须为浮点数.sqrt(3.0),sqrt(double(x)); 优先级的问题。翻看课本…… 各种输入输出案例 推荐使用scanf和printf,时间效率高很多 单个字符输入建议cin 4、输入输出 5、main函数 建议统一使用: #include iostream using namespace std; int main() { return 0;} 6、精度问题 竞赛中如果不考虑内存限制,尽量都使用double。 关于eps,最小精度误差。 #define eps 1e-8 if (fabs(a-b)eps) //相当于a==b { } 7、初始化 全局变量和局部变量 int a;//全局变量,建议做题比赛尽量用全局变量 int x;//数组开很大没有问题 int main(){ int b,c=0,d(0); int arr;//数组太大栈溢出 printf(“%d %d”,a,b);//a会输出0,b是不确定值 } 关于memset://数组的初始化 int a[101]; memset(a,0,sizeof(a));//int类型只有-1和0有效 二、一些解题技巧 __int64和long long的使用 范围均为-2^63~2^63-1//19位 __int64 a;//C++环境,VC6识别 long long b;//G++环境,VS等识别 scanf(“%I64d”,a); scanf(“%lld”,b); printf(“%I64d”,a); printf(“%lld”,b); Double 的输入输入 字符串函数 char st[101],str[101]; scanf(“%s”,st); cinstr; int len=strlen(st);//获取字符串长度 if (strcmp(st,str)==0) //比较字符串大小-1为小,1为大于 strcpy(str,st);//将st赋值给str. strcat,strstr,strrev等自己翻阅课本或C函数查询程序 字符串函数 string类型,在string.h中(#include string) string st,t; cinst;//建议不超时情况用cin char str[101]; scanf(“%s”,str); t=str; int len=st.length();//长度 int pos=st.find(t);//t串在st中第一次位置,-1为找不到 if (st==t)//字符串可以直接比较,,,==等 t=st;//可直接赋值. st=‘a’+t+’a’;//相加进行拼接 reverse(st.begin(),st.end());//字符串翻转,回文 //更多函数自行百度Google 筛(选)法求素数 bool NoPrime[10007]; int i,j; memset(NoPrime,0,sizeof(NoPrime)); NoPrime[0]=NoPrime[1]=1; for (i=2;i10000;i++) if (NoPrime[i]==0) for (j=i*2;j10000;j+=i) NoPrime[j]=1; //预处理完后NoPrime[i]==0,则i为素数 //关于原理自行百度Google 打表思想 顾名思义,就是手工写出一个答案表,然后直接输出。省去很多计算时间…… 详情请做这套题:09级训练赛第一场 或者1007,1008,1018,1174,1175都是可以打表的题。 打表思想的拓展就是预处理思想。提前将
文档评论(0)