tyvj 中秋欢乐赛

tyvj p1006 1978 1979 1980 四道题 做的时候还一小时结束 比较坑 第一题原题 后三题admin 不知道从哪copy来的 都是比较水的 - - 到现在只做了三个题 第二题还没做 唔 先写题解 ps:排名12倍数的 30积分 我果断48名RP++ 题目比较简单- - 题解神马的就不要了... 只写了代码
背景 Background
NOIP2008年普及组第一题
描述 Description
   每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。 识别码的计算方法如下: 首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,...,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。 你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。
输入格式 Input Format
   输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
 输出格式 Output Format
   输出共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。
样例输入 Sample Input [复制数据]
【样例1】 0-670-82162-4 【样例2】 0-670-82162-0 样例输出 Sample Output [复制数据]
【样例1】 Right 【样例2】 0-670-82162-4
时间限制 Time Limitation
各个测试点1s
 注释 Hint
各个测试点1s
program tyvj1006; var s:string; p:array[1..20 ] of integer; k,i,len,t,sum,j:integer; begin k:=1;read(s); len:=13; for i:=1 to 13 do if (ord(s[i])<=ord('9')) and (ord(s[i])>=ord('0')) then begin p[k]:=ord(s[i])-ord('0'); inc(k);end; sum:=0; if s[13]='X' then j:=k-1 else j:=k-2; for i:=1 to j do sum:=sum+p[i]*i; t:=sum mod 11; if (t=p[k-1])or ((t=10) and (s[13]='X'))  then write('Right') else begin for i:=1 to len-1 do write(s[i]); if t=10 then write('X') else write(t); end; end.
描述 Description
题目背景 《思远高考绿色通道》(Green Passage, GP)是唐山一中常用的练习册之一,其题量之大深受lsz等许多oiers的痛恨,其中又以数学绿色通道为最。2007年某月某日,soon-if (数学课代表),又一次宣布收这本作业,而lsz还一点也没有写…… 题目描述 高二数学《绿色通道》总共有n道题目要写(其实是抄),编号1..n,抄每道题所花时间不一样,抄第i题要花a[i]分钟。由于lsz还要准备NOIP,显然不能成天写绿色通道。lsz决定只用不超过t分钟时间抄这个,因此必然有空着的题。每道题要么不写,要么抄完,不能写一半。一段连续的空题称为一个空题段,它的长度就是所包含的题目数。这样应付自然会引起马老师的愤怒。马老师发怒的程度(简称发怒度)等于最长的空题段长度。 现在,lsz想知道他在这t分钟内写哪些题,才能够尽量降低马老师的发怒度。由于lsz很聪明,你只要告诉他发怒度的数值就可以了,不需输出方案。(快乐融化:那么lsz怎么不自己写程序?lsz:我还在抄别的科目的作业……)
 输入格式 Input Format
第一行为两个整数n,t,代表共有n道题目,t分钟时间。 以下一行,为n个整数,依次为a[1], a[2],... a[n],意义如上所述。
输出格式 Output Format
输出仅一行,一个整数w,为最低的发怒度。
样例输入 Sample Input [复制数据]
17 11 6 4 5 2 5 3 4 5 2 3 4 5 2 3 6 3 5
样例输出 Sample Output [复制数据]3      
描述 Description
    小明有n个长度不一的小木棍,这些木棍的长度都是正整数。小明的父亲想和小明做一个游戏。他规定一个整数长度l,让小明闭着眼睛从n个木棍中随便拿出两个。如果两个木棍的长度总和小于等于l,则小明胜,否则小明的父亲胜。小明想知道他胜出的概率究竟有多大。
输入格式 Input Format
输入包含两行。第一行为两个整数n和l。第二行包含n个整数,分别为n个木棍的长度。
输出格式 Output Format
输出包含一个实数,小明胜出的概率,保留两位小数。
样例输入 Sample Input [复制数据]4 5 1 2 3 4样例输出 Sample Output [复制数据]0.67
时间限制 Time Limitation
各个测试点1s
注释 Hint
n和l都不超过100000
program zqp2; var a:array[1..100000] of longint; n,m:int64;mid,l,r,i,j:longint;tot:extended; procedure qsort(head,tail:longint); var i,j,x:longint; begin i:=head;j:=tail;x:=a[i]; while i<j do begin while (i<j) and (a[j]>=x) do dec(j); a[i]:=a[j]; while (i<j) and (a[i]<=x) do inc(i); a[j]:=a[i]; end; a[i]:=x; if head<i-1 then qsort(head,i-1); if tail>i+1 then qsort(i+1,tail); end; begin readln(n,m); tot:=0; for i:=1 to n do read(a[i]); qsort(1,n); for i:=1 to n-1 do begin l:=i+1;r:=n; while (l<=r) do begin mid:=(l+r) div 2; if a[mid]+a[i]=m then break; if a[mid]+a[i]>m then r:=mid-1; if a[mid]+a[i]<m then l:=mid+1; end; mid:=(l+r) div 2; tot:=tot+mid-i; end; tot:=tot*2/((n-1)*n); writeln(tot:0:2); end.
背景 Background
    大家都知道胖子是一名机械工程师,他很胖,然而最近遇到了一件烦心事,这件事是如此的烦心,以至于他的体重锐减20%! 烦心事来自一位设计师瘦子给胖子的机器3D设计图纸,瘦子是如此的没有力气,以至于将图纸画得模糊不清,而且这个方形机器中居然没有除工件外的空位,胖子800度的视力受到严重考验,于是他终日食之不得下咽。 胖子终于无法忍受,决定求助于最新科技——电脑,他买来一台联想电脑(带闪联),借助它进行图纸辨别,但是电脑上没有这样的软件,于是胖子以1斤肉作为奖励,希望你帮他设计一个软件。
描述 Description
    胖子说:“我的图纸是三维的(先进吧),用坐标系分了网格,每个工件包含相邻的一些网格部分,由于万恶的瘦子很愚蠢,我不得不认为模糊程度相差在一定范围的相邻两格是同一工件,你就帮我看看总共有多少个工件吧”。
输入格式 Input Format
第一行3个整数l,w,h (l,w,h<=50) 表示三维图纸的长宽高; 第二行1个整数m(0<=m<=255)表示模糊程度的最大允许差值; 后面有一行l*w*h个0~255的非负整数,按照空间坐标从小到大给出瘦子画每一格的模糊程度(坐标大小比较,按长,宽,高的优先顺序)。
输出格式 Output Format
一个整数,工件个数。
样例输入 Sample Input [复制数据]2 2 2 0 1 1 1 1 2 2 2 2样例输出 Sample Output [复制数据]2
program zhongqiup4; var a:array[0..51,0..51,0..51 ] of integer; dx:array[1..6] of integer=(0,0,0,0,1,-1); dy:array[1..6] of integer=(0,0,-1,1,0,0); dz:array[1..6] of integer=(1,-1,0,0,0,0); mark:array[0..51,0..51,0..51] of boolean; l,h,w,i,j,k,max,sum:integer; procedure dfs(l,h,w:integer); var i:integer; begin mark[l,h,w]:=true; for i:=1 to 6 do begin if (not(mark[l+dx[i],h+dy[i],w+dz[i]])) and(abs(a[l,h,w]-a[l+dx[i],h+dy[i],w+dz[i]])<=max) then begin mark[l+dx[i],h+dy[i],w+dz[i]]:=true; dfs(l+dx[i],h+dy[i],w+dz[i]); end; end; end; begin readln(l,w,h); readln(max); fillchar(mark,sizeof(mark),true); for i:=1 to l do for j:=1 to w do for k:=1 to h do begin read(a[i,j,k]); mark[i,j,k]:=false; end; sum:=0; for i:=1 to l do for j:=1 to w do for k:=1 to h do if not mark[i,j,k] then begin inc(sum); dfs(i,j,k); end; writeln(sum); end.

posted on 2012-10-03 01:58  馒头~blue  阅读(212)  评论(0编辑  收藏  举报

导航