ACM——【百练习题备忘录】
1. 在做百练2807题:两倍时,错将判断语句写成 a/b ==2,正确写法是:a == b*2
因为C/C++int型做除法时自动舍入,如:5/2 == 2,但是 5 =/= 2*2。
2. 在做百练2715题:谁拿了最多奖学金时,一直Wrong Answer,最后才发现真的是自己算错了,在判断语句中>85写成了>80
3. 在做百练2713: 肿瘤面积时,一开始提交显示 Runtime Error,一看是数组开小了,可能的数据是n不大于1000,我定义的时候是105;修改数组大小后再次提交显示Wrong Answer。
4. 百练2798:2进制转化为16进制没做出来。
5. 百练2818:密码,
1)Wrong Answer:结果错误
2)Time Limit Exceeded:暴力求解,超时
3)Presentation Error:每一个块结束都要输出换行符'\n'
4)Runtime Error:数组越界,数组开的太小
6. 百练2972:确定进制,注意k进制数N的每一位都比k小。
7. C++调用iostream中的ios::sync_with_stdio(false)以提高I/O效率
8. 百练2974:487-3279,Runtime Error,数组开小了
9. 百练2798:2进制转化为16进制:
int num = len % ;
int base=;
for(int i=num-;i>=;i--){
ch += (bin[i]-'')*base;
base *= ;
}
printf("%X",ch);
当num=0时,按照逻辑,后面的代码不应该输出,因此出错,解决方法是判断num不为0即可,或num为整数。
10. 百练题目2705:用算术式子再做一次。
11. 百练2707:别人的代码:
#include <cstdio>
#include <cmath>
int main()
{
int n;
scanf("%d",&n);
while(n--){
double a,b,c;
double pd;
double part1,part2;
scanf("%lf %lf %lf",&a,&b,&c);
if (a < ){
a = - a;
b = - b;
c = - c;
}
pd=b*b-*a*c;
part1 = ( - b)/ ( * a);
if(pd>){
part2 = sqrt(pd)/( * a);
printf("x1=%.5lf;x2=%.5lf\n",part1+part2,part1-part2);
}else if(fabs(pd)<1e-){
printf("x1=x2=%.5lf\n",part1);
}else{
part2 = sqrt( - pd)/ ( * a);
printf("x1=%.5lf+%.5lfi;x2=%.5lf-%.5lfi\n",part1,part2,part1,part2);
}
}
return ;
}
来源:http://www.cnblogs.com/xzt6/p/5730697.html
对于以下问题:

实测情况为:
- -b/(2*a)即可;
- b=0时,若将结果分成real和img,则不存在上述问题;
- -0.00000似乎不影响结果正确性。
总上所述,关键是用double类型取代float类型和对delta判等用一个极小值例如1e-8。
12. 百练2724:可以用C++<map>实现,代码量更少。
13.百练2856:输出用
printf("%g\n",0.8+0.5*fmax(w-,0.0)+(exp=='y'?:));
14. 百练2683:该数列一开始看成是Fibonacci数列中的后一项/前一项,所以实现时用fibonacci数列进行模拟,发现对于次数99来说,无论是int型还是long型,都有数据溢出。看两年前的提交记录,才发现,该数列满足:a[n] = 1/a[n-1] + 1,于是用此思路迎刃而解。还是感叹人在不同时候的思路是很不同的。此题给人的警示是:当循环有数据溢出时,可以考虑发现数列的通项公式。
15. 百练2697:题目出错了,x = (x1+x2)/2,而不是x = (x2-x1)/2;是f(0)>0而不是f(a)>0。真想骂人,出题能不能走点心。
16. 百练2868:题目出错了,输入不是一个数,而是若干输入,需要用 while(EOF!=scanf("%lf",&num)) ,不然会报 Wrong Answer ,真心觉得出题人谨慎点行不行,POJ本来就不给出错案例,要想Accepted,就必须考虑所有边界条件,就必须严格按照题目要求进行输入输出,这下好了,输入条件都不明确,还怎么做题!
17. 百练2682:循环移动这道题很经典,可以用三次reverse操作来实现。
18. 百练2938:交换两个整数可以用:
a = a^b;
b = a^b;
a = a^b;
来实现。
19. switch后面只能跟整型变量和字符型变量,不能接字符串。
20. a%b时,b一定非0.
21. 输出浮点数时,若对精度无要求,建议使用"%g"修饰符。
参考资料:
ACM——【百练习题备忘录】的更多相关文章
- 全世界最强的算法平台codeforces究竟有什么魅力?
大家好,之前说过由于和LeetCode结了梁子,所以周末的LeetCode专题取消了,给大家写点其他专题的算法问题.目前选择的是国外著名的编程竞赛平台--codeforces.它在竞赛圈名气比较大,对 ...
- 【第一期百题计划进行中,快来打卡学习】吃透java、细化到知识点的练习题及笔试题,助你轻松搞定java
[快来免费打卡学习]参与方式 本期百题计划开始时间:2022-02-09,今日打卡题已在文中标红. 0.本文文末评论区打卡,需要登录才可以打卡以及查看其他人的打卡记录 1.以下练习题,请用对应的知识点 ...
- ACM/ICPC 之 两道dijkstra练习题(ZOJ1053(POJ1122)-ZOJ1053)
两道较为典型的单源最短路径问题,采用dijkstra解法 本来是四道练习题,后来发现后面两道用dijkstra来解的话总觉得有点冗余了,因此暂且分成三篇博客(本篇以及后两篇). ZOJ1053(POJ ...
- ACM/ICPC 之 递归(POJ2663-完全覆盖+POJ1057(百练2775)-旧式文件结构图)
POJ2663-完全覆盖 题解见首注释 //简单递推-三个米诺牌(3*2)为一个单位打草稿得出规律 //题意-3*n块方格能被1*2的米诺牌以多少种情况完全覆盖 //Memory 132K Time: ...
- java练习题:输出100以内与7有关的数、百马百担、打分(去掉最高、最低分)、二分法查找数据
1.输出100以内与7有关的数 注: 这些数分为三类:(1)7的倍数,(2)个位数字是7的数,(3)十位数字是7的数 int i=1; System.out.println("输出100以内 ...
- ACM/ICPC 之 Bellman Ford练习题(ZOJ1791(POJ1613))
这道题稍复杂一些,需要掌握字符串输入的处理+限制了可以行走的时间. ZOJ1791(POJ1613)-Cave Raider //限制行走时间的最短路 //POJ1613-ZOJ1791 //Time ...
- ACM/ICPC 之 四道MST-Kruskal解法-练习题(POJ1251-POJ1287-POJ2031-POJ2421)
由于题目简单,部分题意写在代码中(简单题就应该多练英文...),且较少给注释,需要注意的地方会写在代码中,虽然四个题意各有千秋,但万变不离其宗,细细思考一番会发现四道题都属于很直接的最小生成树问题,由 ...
- 百道Python入门级练习题(新手友好)第一回合——矩阵乘法
题目描述 [问题描述] 编写程序,完成3*4矩阵和4*3整数矩阵的乘法,输出结果矩阵. [输入形式] 一行,供24个整数.以先行后列顺序输入第一个矩阵,而后输入第二个矩阵. [输出形式] 先行后列顺序 ...
- ACM学习
转:ACM大量习题题库 ACM大量习题题库 现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库. US ...
随机推荐
- QoS专题-第2期-QoS实现工具之MQC
QoS实现工具之MQC QoS技术可以对网络中报文进行分类处理,根据优先级提供不同的差分服务,如何实现这种差分服务呢?我们有一种强大的配置方法-模块化QoS命令行MQC(Modular QoS Com ...
- 【WebAPI】新手入门WebAPI
一.前言 工作也有一年多了,从进入公司就一直进行BIM(建筑信息模型)C/S产品的研发,平时写的最多的就是Dev WPF.一个偶然的时机,产品需要做支付宝扫码与微信扫码,所以需要了解产品服 ...
- 《剑指offer》— JavaScript(6)旋转数组的最小数字
旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2, ...
- C++类间转换之dynamic_cast
当在C++的基类与派生类之间转换时,其多态性充分显现出来: 本次只讨论 dynamic_cast 的用法. 在查阅资料后发现百度百科关于 dynamic_cast (以及static_cast ...
- 大自然的搬运工:Ubuntu环境下gedit的一些个简单配置
gedit是Ubuntu默认的文本编辑器,个人觉得还是不错的,用它来编程写一些小的demo也很方便,原谅我比较菜,vim用起来感觉打字速度真的很慢呀. 下面对gedit做一些简单配置,方便编程. 一. ...
- mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)错误解决办法
我的电脑是win10,所用的是mysql5.7.14 近期在学习mysql数据库的时候,遇到了这个错误,我的密码错误了.突如其来的问题,很是蒙蔽,因为我没对数据库设置过密码.通过网上查询,可以通过进入 ...
- 手脱FSG 2.0 -> bart/xt
声明: 只为纪录自己的脱壳历程,高手勿喷 1.在入口的第二行ESP定律下硬件断点然后F9运行8次(因为第9次就跑飞了) 0040955C > pushad 0040955D EB jmp //E ...
- varchar字段
varchar 最长26000多,实际使用最好不要超过255,会占内存 可以考虑text
- git查看/修改 用户名和邮箱
用户名和邮箱地址的作用 用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变. 每次commit都会用用户名和邮箱纪录. github的contributions统计就是按邮箱来统计的. ...
- python--生成器协程运算
生成器 一.yield运行方式 我们定义一个如下的生成器: def put_on(name): print("Hi {}, 货物来了,准备搬到仓库!".format(name)) ...