ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:50.54KB ,
资源ID:2778458      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2778458.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(2012福建省信息学奥林匹克CCF-NOIP夏令营第一天训练(附解题思路及参考程序).doc)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

2012福建省信息学奥林匹克CCF-NOIP夏令营第一天训练(附解题思路及参考程序).doc

1、完整版)2012福建省信息学奥林匹克CCF NOIP夏令营第一天训练(附解题思路及参考程序) 2012福建省信息学奥林匹克CCF NOIP夏令营第一天训练 (附解题思路及参考程序) 问题名称 文件名 输入文件 输出文件 时限 分值 足球 football football .in football.out 1s 100 数列排序 seqsort seqsort。in seqsort.out 1s 100 计算概率 calculate calculate。in calculate.out 1s 100

2、 三角形牧场 pasture pasture。in pasture.out 1s 100 数列 seq seq.in seq。out 1s 100 内存限制均为256M 足球(football) 【问题描述】 我们当中有很多热爱中国足球的同学,我们都知道中超(中国足球超级联赛)的规则: 一场比赛中,若获胜(即你的得分严格大于对手得分)则获得3的积分,若打平(即你的得分等于对手得分)则获得1分,若失败(即你的得分严格小于对手得分)获得0积分. 这个问题很简单,假设N轮比赛中你一共攻入S个球,丢掉T个球,那么你可能获得的最大得分和最小得分是多少? 【输入文

3、件】 多组数据,每组数据一行: 一行三个整数S、T、N(S、T 〉= 0,N >= 1)。 【输出文件】 对于每组数据输出一行,两个整数表示最大得分和最小得分。 【样例输入】 1 1 1 1 1 2 【样例输出】 1 1 3 2 数列排序(seqsort) 【问题描述】 给定一个数列{an},这个数列满足ai≠aj(i≠j),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? 【输入文件】 第一行,正整数n (n〈=100,000)。 以下若干行,一共n个数,用空格分隔开,表示数列{an},任意-231

4、〈ai〈231。 【输出文件】 只有一行,包含一个数,表示最少的交换次数。 【样例输入】 8 8 23 4 16 77 -5 53 100 【样例输出】 5 计算概率(calculate) 【问题描述】 小明有n个长度不一的小木棍,这些木棍的长度都是正整数。小明的父亲想和小明做一个游戏。他规定一个整数长度l,让小明闭着眼睛从n个木棍中随便拿出两个。如果两个木棍的长度总和小于等于l,则小明胜,否则小明的父亲胜。小明想知道他胜出的概率究竟有多大。 【输入文件】 输入包含两行.第一行为两个整数n和l,其中n和l都不超过100000。第二行包含n个整数,分别为n

5、个木棍的长度。 【输出文件】 输出包含一个实数,小明胜出的概率,保留两位小数。 【输入样例】 4 5 1 2 3 4 【输出样例】 0。67 三角形牧场(pasture) 【问题描述】 和所有人一样,奶牛喜欢变化。它们正在设想新造型的牧场。奶牛建筑师hei想建造围有漂亮白色栅栏的三角形牧场。她拥有N(3≤N≤40)块木板,每块的长度Li(1≤Li≤40)都是整数,她想用所有的木板围成一个三角形使得牧场面积最大。 请帮助Hei小姐构造这样的牧场,并计算出这个最大牧场的面积。 【输入文件】 第1行:一个整数N 第2。。N+1行:每行包含一个整数,即是木板的长度。 【输

6、出文件】 仅一个整数:最大牧场面积乘以100然后舍尾的结果。 如果无法构建,输出-1。 【输入样例】 5 1 1 3 3 4 【输出样例】 692 数列(seq) 【问题描述】 有这样一种数列A1、A2、A3、……An,其中A1=0,且对任意一项Ai满足|Ai—Ai+1|=1(1〈=i

7、隔开。 【输出文件】 第1行一个整数t(0<=t<=263-1),表示满足条件的数列总数. 接下来每行输出一个数列,数列各项之间用一个空格隔开. 若满足条件的数列数目不满100个,全部输出即可。 【样例输入】 4 0 【样例输出】 2 0 —1 0 1 0 1 0 -1 足球 先全部分配进球数到每场 有不够的就把失球全部放在那一场里 否则将进球与失球抵消 反之亦然 参考程序: const inf = ''; ouf = '’; maxS = 10; maxT

8、 = 10; maxN = 20; var s, t, n : int64; p, q : int64; begin assign(input, 'football.in'); assign(output, 'football.out'); reset(input); rewrite(output); while not seekeof do begin readln(s, t, n); if n = 1 then

9、 if s = t then writeln(’1 1') else if s 〉 t then writeln(’3 3’) else writeln('0 0’) else if s + t = 0 then writeln(n, ’ ', n) else begin if s = 0 then begin p := n - 1; if n 〈= t then q := 0 else q := n - t;

10、 end else if t = 0 then begin if n 〈= s then p := 3 * n else p := 3 * s + n — s; q := 3 + (n - 1); end else if s 〈= t then begin if n <= s + 1 then p := (n — 1) * 3 else p := s * 3 + n - (s + 1);

11、 if (s = 1) and (n 〉= t) then q := 1 + n — t else if n 〈= t - s then q := 0 else if n = t - s + 1 then q := 1 else if n = t - s + 2 then q := 2 else if n <= t + 1 then q := 3 else q := n - (t + 1) + 3; end els

12、e begin if n <= s - t then p := 3 * n else if n = s — t + 1 then p := 3 * (s - t) + 1 else if n 〈= s + 1 then p := (n — 1) * 3 else p := 3 * s + n - (s + 1); if n 〈= t + 1 then q := 3 else q := n - (t + 1) + 3; end;

13、 writeln(p, ’ ', q); end; end; close(input); close(output); end。 数列排序 将序列排序 找出所有的循环,即错误位置调换的循环 如 2 4 1 3 循环为 2—>4-〉3->1-〉2 Ans=sigma 循环长度—1 参考程序: var a,b:array[0.。1000000]of longint; n,i,j,tot,t,ans:longint; use:array[0.。1000000]of boolean; procedure

14、qsort(l,r:longint); var i,j,x,t:longint; begin i:=l; j:=r; x:=a[random(r-l+1)+l]; repeat while a[i]〈x do inc(i); while a[j]>x do dec(j); if i〈=j then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; t:=b[i]; b[i]:=b[j]; b[j]:=t; inc(i); dec(j);

15、 end; until i>j; if i〈r then qsort(i,r); if l〈j then qsort(l,j); end; begin assign(input,'seqsort。in’); reset(input); readln(n); for i:=1 to n do begin read(a[i]); b[i]:=i; end; close(input); qsort(1,n); for i:=1 to n do a[i]:=i;

16、 for i:=1 to n do if not use[i] then begin t:=i; tot:=0; while not use[t] do begin use[t]:=true; inc(tot); t:=b[t]; end; ans:=ans+tot-1; end; assign(output,'seqsort.out’); re

17、write(output); writeln(ans); close(output); end. 计算概率 由于l的范围并不大,且长度又都是整数,故而可以将每个长度单位的木棍个数都记录下来,然后计算两根木棍长度和小于等于l的组数,最后计算出概率。 用一长度为l的数组记录长度为数组下标的木棍个数,然后可以用O(n)的复杂度计算出组数,最后除以n(n-1)/2得出概率。 j:=1; k:=l—1; s:=0; ans:=0; while k>j do begin inc(s,a[j]); inc(ans,a

18、[k]*s); dec(k); inc(j); end; 参考程序: var i,j,k,n,l:longint; s,ans:int64; a:array[1..100000] of longint; r:real; procedure setup; begin assign(input,'calculate.in’); reset(input); assign(output,’calculate.out’); rewrite(output); end; proce

19、dure endit; begin close(input); close(output); end; begin setup; fillchar(a,sizeof(a),0); readln(n,l); for i:=1 to n do begin read(k); if k〈=l then inc(a[k]); end; j:=1; k:=l-1; s:=0; ans:=0; while k>j do begin inc(s,a[j

20、]); inc(ans,a[k]*s); dec(k); inc(j); end; if j=k then inc(s,a[j]); inc(ans,s*(s-1) div 2); r:=2*ans/n/(n-1); writeln(r:0:2); endit; end. 三角形牧场 二位背包+海伦公式 f[i][j][k]表示前i个木板,能否加出第一条边为j,第二条边为k的三角形。 参考程序: #include #include #include〈cstdli

21、b〉 #include〈cstring> #include using namespace std; int i,n,t1,t2,t3,Tot; int a[50],g[2][1601][1601]; long double p,s,ans; main(){ freopen("Pasture。in”,”r”,stdin); freopen("Pasture.out”,"w”,stdout); scanf(”%d",&n); for (i=1;i〈=n;i++) scanf(”%d”,&a[i]); memset

22、g,0,sizeof(g)); g[0][0][0]=1;Tot=0; for (i=1;i〈=n;i++){ for (t1=0;t1<=Tot;t1++) for (t2=0;t2〈=Tot—t1;t2++) if (g[(i—1)%2][t1][t2]==1){ g[i%2][t1+a[i]][t2]=1;g[i%2][t1][t2+a[i]]=1;g[i%2][t1][t2]=1; } Tot+=a[i]; } ans=—1; for (t1=0;t1<=Tot;t1++) for (t2=0;t2<=Tot-

23、t1;t2++) if (g[n%2][t1][t2]==1){ t3=Tot-t1—t2; if (t1+t2>t3&&t1+t3〉t2&&t2+t3〉t1){ p=double(Tot)/2; s=sqrt(p*(p-t1)*(p—t2)*(p—t3)); if (s>ans) ans=s; } } if (ans<0.5) printf("—1\n");else printf("%ld\n”,long(ans*100)); } 数列 我们开始时可以假设所有数都是0

24、每次判断当前数是比前一个数大1还是小1 加入是大1,相当于之后每个数都加了1 F[i,j]表示 前i个数 和为j 的种类数 F[i+1,j+i+1]:=F[i+1,j+i+1]+F[i,j]; F[i+1,j-i—1]:=F[i+1,j-i—1]+F[i,j]; 参考程序: type index=Longint; var num,N,S,i,j:index; tot:int64; F:array[0..200,-10000.。10000]of int64; a:array[0.。200]of boolean; Procedure DFS(T:inde

25、x); var i,tmp:index; Begin if (T=0)and(tot〉0)and(num=0) then Begin dec(tot); write(0); tmp:=0; For i:=N-1 downto 1 do Begin if a[i] then inc(tmp) else dec(tmp); write(’ ’,tmp); End; writeln; Exit; End;

26、 if T=0 then Exit; if (tot=0)or(F[T,num]=0) then Exit; a[T]:=False; num:=num+T; DFS(T-1); a[T]:=True; num:=num-2*T; DFS(T-1); num:=num+T; End; Begin Assign(Input,'seq.in’); Reset(Input); Assign(Output,'seq.out’); Rewrite(Output); Readln(N,S); Fil

27、lchar(F,sizeof(F),0); F[1,1]:=1; F[1,—1]:=1; For i:=1 to N—2 do For j:=—10000 to 10000 do Begin if F[i,j]>0 then Begin F[i+1,j+i+1]:=F[i+1,j+i+1]+F[i,j]; F[i+1,j-i—1]:=F[i+1,j-i—1]+F[i,j]; End; End; writeln(F[N-1,S]); tot:=F[N-1,S]; if tot>100 then tot:=100; num:=S; DFS(N-1); Close(Input); Close(Output); End.

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服