P1086 花生采摘

将植株按花生数从大到小排序,然后按排序后的顺序摘,每次摘前计算能否在摘后回到路边,如果能就将ans加上该植株花生数,如果不能就直接输出当前ans并退出。

var a:array[1..405,1..3] of integer;
i,j,x,y,m,n,k,n1,t1,ans,time:longint;
procedure sort(l,r:longint);
var i,j,m,t:longint;
begin
i:=l;j:=r;
m:=a[(l+r) div 2,1];
repeat
while a[i,1]>m do inc(i);
while a[j,1]<m do dec(j);
if (i<=j) then
begin
t:=a[i,1];a[i,1]:=a[j,1];a[j,1]:=t;
t:=a[i,2];a[i,2]:=a[j,2];a[j,2]:=t;
t:=a[i,3];a[i,3]:=a[j,3];a[j,3]:=t;
inc(i);dec(j);
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end; begin
readln(m,n,k);
for i:=1 to m do
for j:=1 to n do
begin
read(x);
if x<>0
then
begin
inc(n1);
a[n1,1]:=x;
a[n1,2]:=i;
a[n1,3]:=j;
end;
end;
sort(1,n1);
x:=0;y:=a[1,3];
for i:=1 to n1 do
begin
t1:=time+abs(a[i,2]-x)+abs(a[i,3]-y)+1;
if t1+a[i,2]<=k
then
begin
time:=t1;
x:=a[i,2];
y:=a[i,3];
ans:=ans+a[i,1];
end
else
begin
writeln(ans);
exit;
end;
end;
writeln(ans);
end.

最新文章

  1. [LeetCode] Convert Sorted Array to Binary Search Tree 将有序数组转为二叉搜索树
  2. C#中调用user32.dll库的keybd_Event函数,操作键盘
  3. nginx执行文件替换掉之后重启提示permission denied
  4. java中数据类型转换
  5. ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值
  6. 小米1S MIUI V5刷回V4教程
  7. [BZOJ 1221] [HNOI2001] 软件开发 【费用流 || 三分】
  8. JWS-webservice 与Axis2-webservice的高速实现
  9. JavaScript 网页链接调用Android程序
  10. BZOJ 2006 NOI2010 超级钢琴 划分树+堆
  11. Canvas translate- 平移
  12. maxscale读写分离
  13. Ubuntu 16.04安装JDK/JRE并配置环境变量
  14. 3、jeecg 笔记之 模糊查询
  15. vi相关
  16. win7下oracle的安装
  17. PHP无限极分类 - 2 - 无限极评论
  18. 【SSH学习笔记】用Struts2实现简单的用户登录
  19. Nginx反向代理与负载简单实现
  20. MongoDB数据库设计中6条重要的经验法则

热门文章

  1. 深入浅出剖析C语言函数指针与回调函数(一)【转】
  2. bzoj4485: [Jsoi2015]圈地
  3. 关于redis的思考
  4. 通用方法解决UITextFiled输入的时候,键盘遮挡问题
  5. iOS-个人开发者账号转公司开发者账号(邓白氏码申请教程)
  6. 字面量(literal)与 C 语言复合字面量(compound literals)
  7. windows查看与清理dns缓存
  8. Python使用multiprocessing实现一个最简单的分布式作业调度系统
  9. Linux下使用《du》命令查看某文件及目录的大小
  10. 写出高效优美的单片机C语言代码