CodeForces 609D Gadgets for dollars and pounds
2024-10-20 00:44:45
二分天数+验证
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; const int maxn=+;
int n,m,k;
long long s;
long long a[maxn],b[maxn],c[maxn];
int t[maxn];
long long A[maxn],B[maxn];
int preA[maxn],preB[maxn];
struct Tmp
{
int id;
long long val;
int day;
} tmp[maxn]; bool cmp(const Tmp&a,const Tmp&b)
{
return a.val<b.val;
} int main()
{
scanf("%d%d%d%lld",&n,&m,&k,&s);
for(int i=; i<=n; i++) scanf("%lld",&a[i]);
for(int i=; i<=n; i++) scanf("%lld",&b[i]);
for(int i=; i<=m; i++) scanf("%d%lld",&t[i],&c[i]); A[]=a[];
preA[]=;
for(int i=; i<=n; i++)
{
A[i]=min(A[i-],a[i]);
if(A[i-]<=a[i]) preA[i]=preA[i-];
else preA[i]=i;
} B[]=b[];
preB[]=;
for(int i=; i<=n; i++)
{
B[i]=min(B[i-],b[i]);
if(B[i-]<=b[i]) preB[i]=preB[i-];
else preB[i]=i;
} int l=,r=n;
int mid;
int ansDay=-;
while(l<=r)
{
mid=(l+r)/;
for(int i=; i<=m; i++)
{
tmp[i].id=i;
if(t[i]==) tmp[i].val=A[mid]*c[i];
else tmp[i].val=B[mid]*c[i];
}
sort(tmp+,tmp++m,cmp);
long long sum=;
for(int i=; i<=k; i++) sum=sum+tmp[i].val;
if(sum<=s)
{
ansDay=mid;
r=mid-;
}
else l=mid+;
}
printf("%d\n",ansDay);
if(ansDay!=-)
{
for(int i=; i<=m; i++)
{
tmp[i].id=i;
if(t[i]==) tmp[i].val=A[mid]*c[i];
else tmp[i].val=B[mid]*c[i]; if(t[i]==) tmp[i].day=preA[ansDay];
else tmp[i].day=preB[ansDay];
}
sort(tmp+,tmp++m,cmp);
for(int i=; i<=k; i++)
printf("%d %d\n",tmp[i].id,tmp[i].day);
}
return ;
}
最新文章
- Linux系统实战项目——sudo日志审计
- AOPR软件最小化消失了
- 阐述ArrayList、Vector、LinkedList的存储性能和特性。
- 【转载】Ansys中的阻尼
- Hive 的分桶 &; Parquet 概念
- PAT (Basic Level) Practise:1026. 程序运行时间
- Ajax请求在IE和Google Chrome中可以响应,在Firefox中无法响应
- jquery ajax事件
- find a filename from a filehandle in Perl
- 多项式逼近remes算法
- 【Hibernate】--实体状体与主键生成策略
- node初始
- Android使用AIDL跨进程通信
- git 的安装及使用
- oracle 11.2.0.1 rman异机恢复 11.2.0.3(windows X64)
- Python - 3MySQL 数据库连接
- sql查询两条记录的时间差
- JS (function (window, document, undefined) {})(window, document)的真正含义
- java学习笔记—Tomcat(9)
- CodeForces 803D Magazine Ad
热门文章
- 二分 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D
- 移植Iperf到android 用来学习linux移植到安卓的例子
- MySql 插入10位以上长度的字符报错or截断
- 巧妙利用ToArray()函数移除集合中的元素
- OpenGL-------状态机
- 使用Core Animation对象来实现动画
- linux command----vi
- 初识Jmeter(一)
- HttpURLConnection请求网络数据的GET请求
- svn 设置文件可执行权限