[haoi2014]走出金字塔

在探险的过程中,考古学家Dr. Kong 无意地被困在一个金字塔中。金字塔中的每个房间都是三角形。Dr. Kong可以破壁走到相邻的房间去。

例如,如果他目前处于三角形(2,2)房间,那么他可以破壁走到三角形(2,1)、(2,3)或(1,1)房间。但破壁一面墙需要花费K分钟时间,而考古学家Dr. Kong 的体能只能支持他到S分钟。
好在Dr. Kong手中有这个金字塔地图,他发现金字塔有许多出口,一旦他进入一个有出口的三角形房间,他再用1分钟就可以走出金字塔。

现在,你能否帮助Dr. Kong找到一个走出金字塔花费时间最少的出口?若能,输出Dr. Kong走出金字塔后还剩下的体能时间(应当大于或等于0);若不能,输出-1。

这题也没什么好说的,主要思路就是找规律.

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<iomanip>
using namespace std;
#define LL long long
#define up(i,j,n) for(int i=j;i<=n;i++)
#define pii pair<int,int>
#define db double
#define eps 1e-4
#define FILE "dealing"
int read(){
	int x=0,f=1,ch=getchar();
	while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
	while(ch<=‘9‘&&ch>=‘0‘){x=(x<<1)+(x<<3)+ch-‘0‘,ch=getchar();}
	return x*f;
}
const LL maxn=22000,inf=10000000000000LL;
bool cmin(int& a,int b){return a>b?a=b,true:false;}
int n,m,k,S,flag=0;
pii s,t,p;
int main(){
	freopen(FILE".in","r",stdin);
	freopen(FILE".out","w",stdout);
	int Min=inf;
	n=read(),m=read(),k=read(),S=read();
	s.first=read(),s.second=read();
	p=s;
	up(i,1,m){
		s=p;
		int ans=0;
		t.first=read(),t.second=read();
		if(s.first>t.first)swap(s,t);
		int left=s.second,right=(t.first-s.first)*2+s.second;
		ans+=(t.first-s.first)*2;
		if(t.second>=left&&t.second<=right){
			if(t.second%2!=s.second%2)ans--;
			cmin(Min,ans);
			continue;
		}
		else {
			ans+=min(abs(t.second-right),abs(t.second-left));
			cmin(Min,ans);
			continue;
		}
	}
	LL ans=(LL)Min*k+1;
	if(ans<=S)cout<<S-ans<<endl;
	else cout<<-1<<endl;
	return 0;
}

  

时间: 2024-10-19 17:24:37

[haoi2014]走出金字塔的相关文章

JZYZOJ1536 [haoi2014]走出金字塔

http://172.20.6.3/Problem_Show.asp?id=1536 确实不难,找规律的题,开始想复杂了,分了好多情况.开始为省几个变量加了一大堆max,min,abs代码一下子复杂太多,出力不讨好.也算引以为戒,脑子越学越死了 代码 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cmath>

【HAOI2014】走出金字塔

神奇-- 原题: 在探险的过程中,考古学家Dr. Kong 无意地被困在一个金字塔中.金字塔中的每个房间都是三角形.Dr. Kong可以破壁走到相邻的房间去. 例如,如果他目前处于三角形(2,2)房间,那么他可以破壁走到三角形(2,1).(2,3)或(1,1)房间.但破壁一面墙需要花费K分钟时间,而考古学家Dr. Kong 的体能只能支持他到S分钟.好在Dr. Kong手中有这个金字塔地图,他发现金字塔有许多出口,一旦他进入一个有出口的三角形房间,他再用1分钟就可以走出金字塔.现在,你能否帮助D

软件开发从业者如何走出自己的安逸环境[转]

过去的几个月里发生的几件事情,让给政府做软件开发的人感受到压力的陡增,一些事情让我回忆起曾经作为政府程序员的经历,以及这段经历如何变成一种一直督促我努力工作的思想动力. 我曾在某个政府部门维护过一个写于1990年代的老系统.当一个新的系统启动开发来替代部分的老系统功能时,很多的程序员对开发新系统的工作产生的严重的抵制心里.起初,我并不知道为什么他们会有这么大的反感.对这个系统维护一段时间之后,我才慢慢明白,有些程序员是专门维护系统(如crm系统),时间长达15年之久.当被邀请开发新系统时,他们对

走出寂寞,变卖所有

青山原不老,为雪白头,绿水本无忧,因风邹雨.赚钱的同时,也是魔鬼侵入的时候,一位房产老板很羡慕读书的多么纯洁,美好,走上社会,轿车,孩子有了,人已经头发秃顶,已经变成老头,过早的衰老,这是我想要的生活,上帝呀,怎么会是这样,寂寞随之而来.无奈,变卖所有,轿车豪华房产变卖了,过着乡下人的生活,简朴,远离城市的硝烟.这样才踏实 走出寂寞,变卖所有,布布扣,bubuko.com

对一次系统上线的思考-走出“舒适区”

今天,本来计划是会对系统进行一次更新,将这上一周做的需求和修改的bug 发布出去,然后明天开始新的计划,本来团队已经对这个目标达成了一致,大家努力的测试,争取今天能够上线.后来有一位负责的同事说,今天要是上线更新不了,就明天吧,反正我们也没有对需求方承诺具体的上线时间,明天再测试一天,没问题在上线吧.大家一想也对,干嘛非得逼自己今天就上线呢.明天上线不也一样吗?反正我们也没承诺今天必须上线.于是乎大家就这么愉快的下班了. 但是,在回家的路上,越想越不对劲,我们什么时候开始给自己找借口了?我们什么

打破定式,突破屏障,走出自己的创意舒适区(转)

周日傍晚,天色早早的暗了下来,楼下某只狗子一直叫着:有种让人出神的宁静. 我觉得我究其一生最终所要追求的恐怕就是这种宁静.亦或是说心里早已老去了.btw,有谁听过Guns N' Roses某张知名Bootleg拼盘没?也就是所谓的不插电专辑.我在2001年冬天差不多这个时候和Allen.祥子在南开后街买到的这张,同时还有Iggy Pop的Beat'em Up等若干.呼,突然想起这里根本不会有人知道我所指的究竟是谁. 那各位会知道dianping.com,也就是我曾经工作了...说起来也是将近3个

走出浮躁的泥沼:关于技术与工作 选择与热爱

http://www.nowamagic.net/librarys/veda/detail/2339我觉得,技术与工作最理想的结合状态是,自己能学习到新的技术,这些技术也能应用到工作中:工作的内容又不那么枯燥,都那么具有挑战性. 程序员的工作首先应该是富有挑战性的 有这么一句名言: 工作,它之所以成为工作,是因为你只需要工作而不需要思考. 你也许会对这句话有异议,但是大部分人和大部分工作确实是这样的.工厂员工在流水线上机械地组装,服务员每天重复着招待客人,厨师日复一日地烹制菜肴,等等.工作,就是

ofo走出校园观察:市场定位导致产品错位?

Ofo和摩拜单车虽然同样都是做单车共享,但实际上两者在最初的市场定位是有明显的差异的,因此提供的产品方案也存在巨大的差异. 市场定位不同,导致产品方案的巨大差异 摩拜单车一开始就定位于开放市场,充分的考虑到了环境的复杂程度,人性的复杂程度,以及用户的核心痛点.因此提供产品的解决方案也主要是围绕开放市场的定位来量身打造的. 开放市场的几个特点: 1. 空间范围大:很难在短时间形成网络效应.初期车辆供应数量少的情况下如何让用户容易快速找到车辆: 2. 环境路况复杂:不确定用户会在什么样的路况和环境中

没腿也要“走”出一条路来

中国青年网太原6月13日电(记者 王子瑞 王再文 通讯员 刘绍亮)从天而降的噩耗,让一个只有唯一儿子的农村家庭悲恸不已.残酷的命运让人失落.让人消沉,却不能让年轻的张鹏飞停止前行.他用无数个日日夜夜的辛勤付出告诉世人,没腿,也能“走”出一条路. 天降噩耗 让幸福家庭天塌地陷 2005年8月的夏天,太原市一家建筑工地上,打工仔张鹏飞失足从4米多高的脚手架上跌落,造成了高位截瘫.那年他21岁. 从昏迷中清醒后,张鹏飞发现自己已经躺在医院的病床上.全身像被钉子钉在地上,腰部以下没有任何知觉. 得知儿子