当前位置: 首页 > article >正文

(数学)+(二分)

cf826-C. Place for a Selfie
给n条直线和m条开口向上的抛物线,问对于每条抛物线来说,存不存在和它不相交的直线,存在的话,输出直线的斜率。
直线与抛物线联立,(b-k)^2-4ac<0则不相交,|b-k|越小越好,所以k从最接近b的范围左右查找,一旦相交就break。

struct node
{
	ll a,b,c;
}t[NN];
void check(ll i)
{
	ll aa=t[i].a,bb=t[i].b,cc=t[i].c;
	int pos=lower_bound(b,b+n+1,bb)-b;
	for(int j=pos;j<n;j++)
	{
		k=b[j];
		ll res=(bb-k)*(bb-k)-4*aa*cc;
		if(res<0)
		{
			cout<<"YES\n"<<k<<"\n";
				return;
		}
		else break;
	}
	for(int j=pos-1;j>=0;j--)
	{
		k=b[j];
		ll res=(bb-k)*(bb-k)-4*aa*cc;
		if(res<0)
		{
			cout<<"YES\n"<<k<<"\n";
			return;
		}
		else break;
	}
	cout<<"NO\n";
}
void solve()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)cin>>b[i];
	for(int i=0;i<m;i++)cin>>t[i].a>>t[i].b>>t[i].c;
	sort(b,b+n);
	b[n]=INF;
	for(int i=0;i<m;i++)
	{
		check(i);
	}
	cout<<"\n";
}

edu131-C. Schedule Management
在这里插入图片描述

bool check(ll x)
{
	ll res=0;
	for(int i=1;i<=n;i++)
	{
		ll tmp=min(x,mp[i]);
		res+=tmp+(x-tmp)/2;
		if(res>=m)return 1;
	}
	return 0;
}
void solve()
{
	mp.clear();
	cin>>n>>m;
	for(int i=0;i<m;i++)cin>>b[i],mp[b[i]]++;
	
	ll l=0,r=1e9;
	while(l<r)
	{
		ll mid=(l+r)/2;
		if(check(mid))r=mid;
		else l=mid+1;
	}
	cout<<l<<'\n';
}

http://www.kler.cn/a/37417.html

相关文章:

  • C++ Primer Plus笔记: 2023.07.14
  • 图像分类论文阅读
  • ubuntu无法定位软件包 tfpd-hpa
  • Jupyter Notebook 的快捷键
  • Ghostscript开源PDF库中发现关键漏洞
  • 初识c语言
  • node-red安全部署方式-安全登录功能
  • 音频采样器 Native Instruments Kontakt7 forMac/Windows图文安装教程
  • pycharm 配置docker: ssh连接
  • H3C-Cloud Lab实验-NAT实验
  • 《《《总结》》》PCL的42个实例整理:25~42
  • 【STM32MP135】修复10.1寸屏显示异色问题,添加极性配置
  • P5 第二章 电阻电路的等效变换
  • windows 编译libyuv
  • 奥特曼与钢铁侠【InsCode Stable Diffusion美图活动一期】
  • 【数据结构常见七大排序(二)】—选择排序篇【直接选择排序】And【堆排序】
  • 事务@transactional执行产生重复数据
  • Windows 安装 RabbitMq 和 Erlang
  • 精确长延时电路/数字式长延时电路设计
  • HTML <main> 标签