杭电2540遮挡判断

遮挡判断

Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 907    Accepted Submission(s): 292


Problem Description
在一个广场上有一排沿着东西方向排列的石柱子,阳光从东边以一定的倾角射来(平行光)。有的柱子可能被在他东边的高大的柱子的影子给完全遮挡住了。现在你要解决的问题是求出有多少柱子是没有被完全遮挡住的。
假设每个石柱子是一根细棒,而且都垂直于地面摆放。
 

Input
输入包含多组数据。每组数据第一行是一个整数N(0<N<=100000),表示柱子的个数。N=0代表输入结束。接下来有N行,每行是两个整数,分别给出每根柱子的水平位置X和高度H(X越大,表示越在西边,0<=X<=10000000,0<H<=10000000保证不会有两根柱子在同一个X坐标上)。最后有一行,以分数的形式给出太阳光与地面的夹角的正切值T/A(1<=A,T<=10)。
 

Output
对每组数据,输出包含所求数目的一行。
 

Sample Input
  
  
4 0 3 3 1 2 2 1 1 1/1 0
 

Sample Output
  
  
2 提示: 输入数据很多,请用scanf代替cin。
 

Source
 

Recommend
lcy   |   We have carefully selected several similar problems for you:   2538  2545  2542  2541  2543 
 


当我调试了好久发现是因为分子和分母输错的时候,心中万匹草泥马奔腾而过,不说了,都是泪,附代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;//这道题好难啊
struct node//不会做怎么办 
{
	long y;//储存高度 
	long x;//储存X轴坐标 
}t[220000];
int cmp(node a,node b)//按x轴排序 
{
	return a.x<b.x;
}
long i,j,k,l,m,n;
double fz,fm;//分子和分母,就是因为这两个输入反了,才无限wa的 
int main()
{
	while(scanf("%ld",&k),k)
	{
		for(i=0;i<k;i++)
		scanf("%ld%ld",&t[i].x,&t[i].y);
		
		sort(t,t+k,cmp);
		scanf("%lf/%lf",&fz,&fm);
		long ans=0;//先算出来,被挡住的有多少 
		double Max=t[0].y*1.0;//第一栋楼一定没有被完全挡住,所以他遗留下来的高度就是它本身 
		for(i=1;i<k;i++)
		{
			if(Max-(t[i].x-t[i-1].x)*fz*1.0/fm*1.0-t[i].y>=0)//若果挡住了当前这一根 
			{
			ans++;//完全挡住的根数+1 
			Max=Max-(t[i].x-t[i-1].x)*fz*1.0/fm*1.0;//当前操作所遗留下来的最大的能遮挡下一根的高度 
			}
			else
			Max=t[i].y;
		}
		ans=k-ans;
		printf("%d\n",ans);
	}
	return 0;
}


  • 1
    点赞
  • 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、付费专栏及课程。

余额充值