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

BZOJ1701 : [Usaco2007 Jan]Cow School牛学校

枚举剩下的分数个数$k$,设最高的$k$个分数和的分子分母分别为$U$和$D$。

那么在选了的里面找到$A=\min(Dt[x]-Up[x])$,没选的里面找到$B=\max(Dt[x]-Up[x])$。

如果$A<B$,则可以更大。

对于$A,B$的计算,可以利用决策单调性分治求解。

时间复杂度$O(n\log n)$。

 

#include<cstdio>
#include<algorithm>
typedef long long ll;
const int N=50010;
const ll inf=1LL<<60;
int n,i,ans,q[N];ll f[N],g[N];
struct P{int t,p;}a[N],b[N];
inline bool cmp(const P&a,const P&b){return a.t*b.p>b.t*a.p;}
void getf(int l,int r,int dl,int dr){
  int m=(l+r)>>1,dm;
  f[m]=inf;
  for(int i=dl;i<=m&&i<=dr;i++){
    ll t=1LL*a[i].t*b[m].p-1LL*a[i].p*b[m].t;
    if(t<f[m])f[m]=t,dm=i;
  }
  if(l<m)getf(l,m-1,dl,dm);
  if(r>m)getf(m+1,r,dm,dr);
}
void getg(int l,int r,int dl,int dr){
  int m=(l+r)>>1,dm;
  g[m]=-inf;
  for(int i=dr;i>m&&i>=dl;i--){
    ll t=1LL*a[i].t*b[m].p-1LL*a[i].p*b[m].t;
    if(t>g[m])g[m]=t,dm=i;
  }
  if(l<m)getg(l,m-1,dl,dm);
  if(r>m)getg(m+1,r,dm,dr);
}
int main(){
  scanf("%d",&n);
  for(i=1;i<=n;i++)scanf("%d%d",&a[i].t,&a[i].p);
  std::sort(a+1,a+n+1,cmp);
  for(i=1;i<=n;i++)b[i].t=b[i-1].t+a[i].t,b[i].p=b[i-1].p+a[i].p;
  getf(1,n-1,1,n),getg(1,n-1,1,n);
  for(i=1;i<n;i++)if(f[i]<g[i])q[++ans]=n-i;
  for(printf("%d\n",ans),i=ans;i;i--)printf("%d\n",q[i]);
  return 0;
}

  

相关文章:

  • 【git】Intellij IDEA中Git插件提交内容到远程仓库
  • 本地项目上传到Github的示例方法
  • cenos下ActiveMQ关闭时出现异常
  • NOIP 2002过河卒 Label:dp
  • MongoDB概述
  • easyui设置全局分页
  • viewport
  • 程序员开发常用英语词汇
  • CodeForces 711E ZS and The Birthday Paradox
  • 深入理解javascript中的动态集合——NodeList、HTMLCollection和NamedNodeMap
  • linux把日志发送到日志服务器上
  • 缩放系列(二):所有子控件也随着缩放、手势缩放、多点触控layout
  • [20160902]rm -rf的惨案.txt
  • Xposed模块的开发
  • 使用 @font-face
  • 「译」Node.js Streams 基础
  • Babel配置的不完全指南
  • CSS3 变换
  • ES6系统学习----从Apollo Client看解构赋值
  • Java深入 - 深入理解Java集合
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • ReactNative开发常用的三方模块
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 跨域
  • 使用docker-compose进行多节点部署
  • 我建了一个叫Hello World的项目
  • 在Mac OS X上安装 Ruby运行环境
  • elasticsearch-head插件安装
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #前后端分离# 头条发布系统
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (搬运以学习)flask 上下文的实现
  • (分布式缓存)Redis分片集群
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (一)Linux+Windows下安装ffmpeg
  • (转)JAVA中的堆栈
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .“空心村”成因分析及解决对策122344
  • .gitattributes 文件
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET分布式缓存Memcached从入门到实战
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET构架之我见
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @JSONField或@JsonProperty注解使用
  • [ JavaScript ] JSON方法
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [Asp.net mvc]国际化