JZOJ2017.08.05 C组
来源:互联网 发布:java执行sql语句 编辑:程序博客网 时间:2024/06/07 00:26
T1
题目描述
假如说一场比赛包含8道不同分值的题目,每位选手可以自己选择所要做的题目。但是,他们的最后总得分是其中得分最高的5个题目的分数之和。现在给出某位选手每道题目的得分,请算出这位选手的最后总得分,同时列出得分最高的5个题目的序号,序号按照从小到大排列。
思路:排序,水题一道。。。。。。
代码:
var a,b:array[-1..11] of longint; i,j:longint;begin assign(input,'najboljih5.in'); assign(output,'najboljih5.out'); reset(input); rewrite(output); for i:=1 to 8 do begin read(a[i]); b[i]:=i; end; for i:=1 to 7 do for j:=i+1 to 8 do if a[i]<a[j] then begin a[0]:=a[i]; a[i]:=a[j]; a[j]:=a[0]; b[0]:=b[i]; b[i]:=b[j]; b[j]:=b[0]; end; for i:=1 to 4 do for j:=i+1 to 5 do if b[i]>b[j] then begin //a[0]:=a[i]; a[i]:=a[j]; a[j]:=a[0]; b[0]:=b[i]; b[i]:=b[j]; b[j]:=b[0]; end; write(a[1]+a[2]+a[3]+a[4]+a[5]); writeln; for i:=1 to 5 do write(b[i],' '); close(input); close(output);end.
T2
题目描述
Mirko 刚开始学车,因此他还不会在一个很狭窄的地方掉头,所以他想找一个不需要掉头的地方学车。Mirko马上发现他想找的地方必须没有死胡同,因为死胡同是不可能出来的,除非掉头(假设Mirko也不会倒车)。现在,你需要写一个程序,来分析一个地方的地图,研究是否这个地方适合Mirko练习开车。这张地图是包含R*C个单元格的,单元格中的“X”代表一个建筑物,单元格中的“.”代表路面。从一个路面单元格,Mirko可以向旁边上下左右四个方向的单元格开去,只要开过去的地方同样也是路面。最后,我们要得出这个地图是否包含死胡同,假如从任意一个路面单元格出发,沿着任何一个可以行驶的方向,我们可以不用掉头就能返回到出发点,那么这个地图就是没有死胡同的。
思路:
一开始的思路是dfs,结果只得了90。其实有更简单的方法,判断空地上下左右有多少'x',<=2则不是死胡同
代码:
var a:array[0..11,0..11] of char; n,m,i,j,t:longint;procedure quit;begin close(input); close(output); halt;end;begin assign(input,'okret.in'); assign(output,'okret.out'); reset(input); rewrite(output); readln(n,m); for i:=1 to n do begin for j:=1 to m do read(a[i,j]); readln; end; for i:=1 to n do for j:=1 to m do if(a[i,j]='.') then begin t:=0; if a[i+1,j]<>'.' then inc(t); if a[i-1,j]<>'.' then inc(t); if a[i,j+1]<>'.' then inc(t); if a[i,j-1]<>'.' then inc(t); if t>2 then begin write(1); quit; end; end; write(0); quit;end.
T3
题目描述
Mirko最近收到了一个家庭作业,作业的任务是计算两个数A和B的最大公约数。由于这两个数太大了,我们给出了N个数,他们的乘积是A,给出M个数,他们的乘积是B。Mirko想要验算自己的答案,所以他想找你写一个程序来解决这个问题。如果这个最大公约数超过了9位数,那么只需要输出最后9位就可以了。
思路:
1.分解质因数可是x<=1000000000,会爆。。。。。。2.两两求质因数,再相乘可是不知为啥我只有20分
T4
题目描述
在顺利完成家庭作业以后,Mirko感到非常的厌倦。所以,他列出了N个数,这些数中有些数对他是喜欢的,有些数对他是不喜欢的。他喜欢的数对叫做友好数对,如果两个数至少有一个相同的数字(不要求在相同的位置),那么这两个数就是友好数对。请帮助Mirko在这N个数找出有多少友好数对。
思路:
容斥原理先把数拆分,用二进制表示再用容斥原理求解
代码:
var ans:int64; // a:array[0..11] of longint; b:array[0..10000] of longint;procedure init;var i,n,t,s,j,k:longint; x:int64;begin assign(input,'kompici.in'); assign(output,'kompici.out'); reset(input); rewrite(output); read(n); for i:=1 to n do begin s:=0; t:=0; //fillchar(a,sizeof(a) ,0); read(x); while x>0 do begin t:=x mod 10; x:=x div 10; s:=s or (1 shl t); end; inc(b[s]); end;end;procedure rc;var i,j:longint;begin for i:=1 to 1023 do begin if b[i]=0 then continue; for j:=1 to 1023 do begin if (i and j=0)or(b[j]=0)or(i=j) then continue; ans:=ans+b[i]*b[j]; end; ans:=ans+b[i]*(b[i]-1); end; ans:=ans div 2;end;begin init; rc; write(ans); close(input); close(output);end.
阅读全文
1 0
- JZOJ2017.08.05 C组
- JZOJ2017.07.08 C组
- JZOJ2017.07.09 C组
- JZOJ2017.07.10 C组
- JZOJ2017.07.11 C组
- JZOJ2017.07.12 C组
- JZOJ2017.08.06 C组
- JZOJ2017.08.08 C组
- JZOJ2017.08.07 C组
- JZOJ2017.08.10 C组
- JZOJ2017.08.11 C组
- JZOJ2017.08.14 C组
- JZOJ2017.08.15 C组
- JZOJ2017.08.16 C组
- JZOJ2017.08.12 C组
- JZOJ2017.08.14 B组
- JZOJ2017.08.06 B组
- JZOJ2017.08.07 B组
- 继承和多态
- GAWK 学习:AWK 语言基础
- 使用回调函数实现一个简单的计算器;
- Java8中内置的四大核心函数式接口
- [挖坑][uoj]多项式乘法 FFT
- JZOJ2017.08.05 C组
- 【凸包 Graham法 极角排序】poj 2007 Scrambled Polygon
- 1.在win10中搭建Java环境
- 练习 2-6 编写一个函数 setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
- PHP基础教程-12 课后作业02
- Maximum GCD 读入
- 关于listview或者recyclerview里面的edittext数据保存问题
- windows安装gensim
- logstash(一):搭建syslog测试环境