FOJ 2077 有奖月赛题

      昨天比赛时浩神写的这道题,当时我想了想,大致有了个思路,只是感觉绝对会超时,所以一直没写。没想到这道题数据弱了,浩神给过了。今天来了后试着写了一下,没想到,这一写就写了快一天。。。。。悲剧。。。已经有了思路,还是tle了几次,,题目:

Problem 2077 The tallest tree

Accept: 41    Submit: 176
Time Limit: 1000 mSec    Memory Limit : 65536 KB

 Problem Description

lzs种了n棵树,每棵树每天长高一定的高度。某一天,lzs想知道树长得怎么样了,你能求出那一天最高的树有多高吗?

 Input

有多组测试数据,每组数据第一行输入两个整数n,m(1<=n,m<=100000),接下来n行,每行两个整数a,b(0<=a,b<=100000),表示第i棵树在第0天的高度以及每天生长的高度。接下来m行,每行一个整数x(0<=x<=100000),表示询问第x天最高的树有多高。

 Output

对于每个询问输出一行,为当天最高的树的高度。

 Sample Input

1 310 4123

 Sample Output

141822
ac代码:

#include <iostream>
#include <string.h>
#include <algorithm>
#include <cstdio>
using namespace std;
const int N=100005;
struct tree{
  int jishu,xielv;
}tt[N];
int day[N],newday[N];
tree newtree[N];
long long ans[N];
bool cmp(tree a,tree b){
	if(a.jishu==b.jishu)
		return a.xielv>b.xielv;
	return (a.jishu>b.jishu&&a.xielv>b.xielv);
}
int main(){
 //freopen("11.txt","r",stdin);
  int n,t;
  while(~scanf("%d%d",&n,&t)){
    for(int i=0;i<n;++i)
		scanf("%d%d",&tt[i].jishu,&tt[i].xielv);
	sort(tt,tt+n,cmp);
	for(int i=0;i<t;++i)
	{scanf("%d",&day[i]);newday[i]=day[i];}
	sort(newday,newday+t);
	int m=n;
	long long maxvalue=tt[0].jishu,maxxielv=tt[0].xielv;
	for(int i=0;i<t;++i){
	  int x=newday[i],newpos=0,k=1;
	  for(int j=0;j<m;++j){
		  if(!(maxvalue>tt[j].jishu&&maxxielv>tt[j].xielv))
		  {newtree[newpos].jishu=tt[j].jishu;newtree[newpos++].xielv=tt[j].xielv;}
	  }
	  for(int i=0;i<newpos;++i){
	    tt[i]=newtree[i];
	  }
	  m=newpos;
	 for(int j=0;j<newpos;++j){
		  if(newtree[j].jishu+x*newtree[j].xielv>maxvalue){
		    maxvalue=newtree[j].jishu+x*newtree[j].xielv;
			maxxielv=newtree[j].xielv;
		  }
	  }
	  ans[x]=maxvalue;
	}
	for(int i=0;i<t;++i)
		printf("%lld\n",ans[day[i]]);
  }
  return 0;
}


转载于:https://www.cnblogs.com/javaspring/archive/2012/03/26/2656387.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值