JZOJ2017.07.12 C组
来源:互联网 发布:电子文件的元数据 编辑:程序博客网 时间:2024/06/05 19:51
T1
题目描述:
n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。对于每只蚂蚁,我们知道它距离竿子左端的距离xi,但不知道它当前的朝向。请计算各种情况当中,所有蚂蚁落下竿子所需的最短时间和最长时间。
思路:把反向而行看成不变方向,效果一样。
代码:
uses math;var cmin,cmax,i,n,x,l:longint;begin assign(input,'t1.in'); assign(output,'t1.out'); reset(input); rewrite(output); read(n,l); for i:=1 to n do begin read(x); cmin:=max(cmin,min(x,l-x)); cmax:=max(cmax,max(x,l-x)); end; writeln(cmin,' ',cmax); close(input); close(output);end.
T2
题目描述:
一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4,…。现在你的任务是将指定的正整数n分解成m个(m>=1)互不相同的自然数的和,且使这些自然数的乘积最大。
思路:
代码:
var ans,a:array[-10..1001] of longint; n,i,j:longint;procedure cheng(x:longint);var i,j:longint;begin j:=0; for i:=1 to ans[0] do begin ans[i]:=ans[i]*x+j; j:=ans[i] div 100; ans[i]:=ans[i] mod 100; end; ans[ans[0]+1]:=j; ans[0]:=ans[0]+1; while ans[ans[0]]=0 do dec(ans[0]);end;begin assign(input,'max.in'); assign(output,'max.out'); reset(input); rewrite(output); read(n); if n<=4 then begin writeln(n);writeln(n); halt; end; i:=2; while n-i>=0 do begin n:=n-i; a[i-1]:=i; inc(i); end; dec(i); for j:=i-1 downto i-n do begin if j>0 then inc(a[j]) else inc(a[i-1+j]); end; ans[1]:=1; ans[0]:=1; for j:=1 to i-1 do begin write(a[j],' '); cheng(a[j]); end; writeln; //for i:=ans[0] downto 1 do write(ans[i]); for i:=ans[0] downto 1 do begin if i<>ans[0] then if ans[i]<=9 then write('0'); write(ans[i]); end; close(input); close(output);end.
T3
题目描述:
一天,还是Famer KXP,他在与他的好朋友Famer John玩一个游戏,规则如下:KXP站在起点,桌子上放置着一排物品,每个物品都有它的质量和距离起点的位置。KXP的基础分=最远物品距离*2+拿的物品的质量和,最终分数=最远物品距离*2+拿的物品的质量和*Y(Y为该物品是第Y个被拿的)KXP想提前知道自己在拿X个物品时基础分最高时最终分数为多少,若在拿K个时有多种情况能达到最高基础分则只输出X小于K时的情况(即发现有多种情况就立即结束程序),希望你帮忙解决。(K不一定被询问)
思路:
不会做。。。。。。。。。
T4
题目描述:
经过刘邦的严密缉查,项羽的位置也就水落石出了。刘邦便趁机集合军队,进行对项羽的围攻。为了增加胜率,张良研究出一种全新的战法,目的就是一举打败难缠的项羽。
这种军队共有N个单位,一个接着一个排成一排,每个单位可以是士兵,或者是战车,这样的组合可以爆发出意想不到的强大战斗力;但有一点,两辆战车不能相邻,否则会发生剐蹭等不好的事故。刘邦希望知道这N个单位的军队都多少种不同的排列方法,以便在战场中随机应变。两种军队的排列方法是不同的,当且仅当某一个单位对应不同,如:第i位这种是士兵,那种是战车……
思路:
矩阵乘法![这里写图片描述](http://img.blog.csdn.net/20170803100204823?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXJpYzE1NjE3NTkzMzQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
代码:
const modn=100000007;var a,b,c:array [0..2,0..2] of int64; n:int64;procedure start;begin assign(input,'siege.in'); assign(output,'siege.out'); reset(input); rewrite(output); read(n);end;procedure ksm(x:int64);var i,j,k:longint;begin a:=b; while x>0 do begin if x mod 2=1 then begin fillchar(c,sizeof(c),0); for i:=1 to 2 do for j:=1 to 2 do for k:=1 to 2 do c[i,j]:=c[i,j]+a[i,k]*b[k,j] mod modn; a:=c; end; fillchar(c,sizeof(c),0); for i:=1 to 2 do for j:=1 to 2 do for k:=1 to 2 do c[i,j]:=c[i,j]+b[i,k]*b[k,j] mod modn; b:=c; x:=x>>1; end;end;begin start; if n<=2 then writeln(n+1) else begin b[1,1]:=0; b[1,2]:=1; b[2,1]:=1; b[2,2]:=1; ksm(n-2); write((a[1,1]*2+a[1,2]*3) mod modn); end; close(input); close(output);end.
阅读全文
1 0
- JZOJ2017.07.12 C组
- JZOJ2017.07.08 C组
- JZOJ2017.07.09 C组
- JZOJ2017.07.10 C组
- JZOJ2017.07.11 C组
- JZOJ2017.08.05 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组
- 彻底理解linux下的tar命令
- XYOJ第三次小测G区间覆盖问题
- larvel安装Debugbar
- 阿斯特astgo-完整功能介绍
- CC2640R2F BLE5.0 蓝牙协议栈逻辑链路控制和适配层协议(L2CAP)
- JZOJ2017.07.12 C组
- 项目目录结构
- 设计模式六大原则
- 使用maven创建web项目,并且整合SSM框架
- zoj 1586 QS Network
- Python_12
- 模板
- HDU 5655 CA Loves Stick
- [Cacti] 各种报错解决