![OnlineJudge例题讲解.ppt_第1页](http://file.renrendoc.com/FileRoot1/2019-1/12/938105ee-11c4-4933-9b69-674d3584a429/938105ee-11c4-4933-9b69-674d3584a4291.gif)
![OnlineJudge例题讲解.ppt_第2页](http://file.renrendoc.com/FileRoot1/2019-1/12/938105ee-11c4-4933-9b69-674d3584a429/938105ee-11c4-4933-9b69-674d3584a4292.gif)
![OnlineJudge例题讲解.ppt_第3页](http://file.renrendoc.com/FileRoot1/2019-1/12/938105ee-11c4-4933-9b69-674d3584a429/938105ee-11c4-4933-9b69-674d3584a4293.gif)
![OnlineJudge例题讲解.ppt_第4页](http://file.renrendoc.com/FileRoot1/2019-1/12/938105ee-11c4-4933-9b69-674d3584a429/938105ee-11c4-4933-9b69-674d3584a4294.gif)
![OnlineJudge例题讲解.ppt_第5页](http://file.renrendoc.com/FileRoot1/2019-1/12/938105ee-11c4-4933-9b69-674d3584a429/938105ee-11c4-4933-9b69-674d3584a4295.gif)
已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Online Judge例题讲解,南开ACM协会 ,1002: NKPC1Lucy的难题,f(n) 当 n=50025002 的时候,f(n)=n-5;当 n50025002 的时候,f(n)=f(f(n+2005)。现在请您试试编程解决Lucy的难题! 初步想法: int f(int n) if(n50025002) return f(f(n+2005); return n-5; ,Runtime Error,1002: NKPC1Lucy的难题,错误原因:递归层数太多,栈溢出 简单的改进 - 递归化为循环 用m表示f的层数,f(m,n)表示参数n嵌套了m层f,例如 f(3,n)=f(f(f(n) f(1,n)=f(n) f(0,n)=n,while(1=scanf(“%d“, ,1002: NKPC1Lucy的难题,进一步改进 设k=50025002 f(1,k)=f(2,k+2005)=f(1,k+2000) 也即f(k)=f(k+2000) 设k+2005*m=50025002时有 f(1,k) =f(1,k+2000),1002: NKPC1Lucy的难题,当k+2005*(m+1)=50025002时 f(1,k) =f(2,k+2005)=f(2,k+2005+2000*t) =f(1,k+2000*(t+1) 进一步可知f(k)=f(k+2000)仍然成立 这样得到一个简单的方法,如果n50025002,将n累加2000,直到超过50025002即可,代码略,1263: 粗心的物理学家,计算1+1/2+1/3+1/n 其中n=5*106 输入n 输出计算结果,保留12位小数 double s;/记录最终计算结果 int i,j;,1263: 粗心的物理学家,while(scanf(“%d“, ,Wrong Answer,为什么?,1263: 粗心的物理学家,精度问题 利用C+计算1e10+1e-10并保留12位小数:printf(“%.12lfn”,1e10+1e-10); 结果为10000000000.000000000000 原因是double本身精度有限 如果将上述程序中的循环改为 for(i=j;i=1;-i) s+=1./i; 则AC,1023: A+B+C+D+. 的挑战,输入有多行数据,每行有若干整数,这些整数数以空格分割,请分别求出每行整数的和。 Sample Input 100 200 4 45 45 Sample Output 304 90,1023: A+B+C+D+. 的挑战,如果用普通的读入方法读入整数,则无法知道什么时候是一行的结束 有很多处理方法,这里介绍用getchar() getchar()无参数,它读入一个字符,可以是转义字符,返回值为int型,表示ASCII 思考:getchar()返回值为什么不是char?,1023: A+B+C+D+. 的挑战,int sum,a; char ch; /sum为结果,a为当前数 ch=getchar()反复读入字符,有以下几种情况 1,ch=0 a=0,1023: A+B+C+D+. 的挑战,也可以利用cin.getline函数读入一整行,包括空格,或者gets函数也可以得到相同效果 读入一整行之后,可以同样采取上述方法解题,但如果熟悉strtok函数的话实际上还有更好的做法,留作自学,1046: 正整数划分问题,将一个正整数n表示成一系列正整数的和,如: N=n1+n2+nk (其中n1n2nk1, k1) 正整数n的一个这种表示成为正整数n的一个划分。 现在给出一个正整数n(80n1),求n的不同划分一共有多少种。,1046: 正整数划分问题,假设n已经划分出一个数字为n1,则n-n1的划分成为一个子问题,因此可以考虑动态规划(Dynamic Programming = DP) 但是n-n1的划分必须满足一个条件:划分出的最大数字不超过n1,因此我们可以设dpij表示将i进行划分,划分出的最大数字不超过j的种类,1046: 正整数划分问题,初始值 a1i=1,ai1=1(i=1) a0i=1(i=0) 思考这里为什么不设为=0 递推 aij=sumai-kk /ji 输出ann即可,a00=1; for(i=1;iN;+i) ai1=a1i=a0i=1; for(i=2;iN;+i) for(j=2;j=i;+j) for(k=1;k=i ,Other Problems,互动 请说出你在Online Judge上面感兴趣的题目一起讨论,welcome to NKOJ,进入Ranklist Top 20 并不困难 每天来到NKOJ,体会AC的乐趣 AC=Accepted WA(哇)=Wrong Answer TLE=Time Limit Exceeded,NKPC介绍,也即南开大学程序设计竞赛我为程序狂 每年四月举行,已举办三届 中英文两版试题,英文试题早公布 10道题目,10-14天时间,将代码提交到指定地址,不看代码内容,只根据测试数据打分,每个数据9分,10组全对另加10分 颁发奖状、奖品 计划下一届公开征题,针对低年级单独评奖,有奖解题,准备近期办一次有奖解题 低年级单独评奖,奖品以算法相关书籍为主 1-2题,难度不大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 10 我们当地的风俗 第1课时(教学设计)2023-2024学年统编版道德与法治四年级下册
- 23梅兰芳蓄须(教学设计)2024-2025学年-统编版语文四年级上册
- 桥架安装合同范本
- 4 月相变化的规律(教学设计)-2023-2024学年三年级科学下册 教科版
- 14《普罗米修斯》(教学设计)2024-2025学年-统编版语文四年级上册
- 水电管护合同范本
- 墙纸施工合同范本格式
- 10父母多爱我-父母的爱默默的(第1课时)(教学设计)2023-2024学年统编版道德与法治三年级上册
- 6 摸一摸 教学设计-2024-2025学年科学一年级上册青岛版
- 出售搅拌混凝土合同范本
- 我的物品我做主班会
- 《外科护理学(第七版)》考试复习题库-上(单选题)
- 二次供水清洗消毒卫生管理制度
- 外汇行业汇率风险管理方案
- 司法考试2024年知识点背诵版-民法
- 电子产品组装工艺流程手册
- 25 黄帝的传说 公开课一等奖创新教案
- 人教版音乐三年级下册第一单元 朝景 教案
- 幼儿园教职工开展预防性侵
- 医疗机构消毒记录表清洁消毒日检查记录表
- 2024年巴西脉冲灌洗系统市场机会及渠道调研报告
评论
0/150
提交评论