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

洛谷刷题8.2

P4086 [USACO17DEC] My Cow Ate My Homework S - 洛谷

 这里用简单的后缀和+后缀的最小值数组。注意每次要去掉最小值,平均分是除以(后缀数组长度-1)

#include<bits/stdc++.h>
#define ll long long
#define samplepassediscorrect for(;;)
#define ull unsigned long long
#define jiasu ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define lowbit(x) (x&(-x))
#define N 100005
using namespace std;
ll n,a[N],sum[N],mn[N];
double ans[N],now=0;
int main(){
jiasu;
memset(mn,0x3f3f3f,sizeof(mn));
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=n;i>=1;i--){sum[i]=sum[i+1]+a[i];mn[i]=min(mn[i+1],a[i]);
}
for(int i=2;i<=n-1;i++){ans[i]=1.0*(sum[i]-mn[i])/(n-i);now=max(now,ans[i]);
}
for(int i=2;i<=n-1;i++){if(ans[i]==now){cout<<i-1<<endl;}
}return 0;
} 

P4085 [USACO17DEC] Haybale Feast G - 洛谷

 ST表+二分查找。我们可知,我们想要得到辣度的最小值,那么肯定是刚刚满足总风味>=m。那么对于每一个起点i,我们查找sum[j]>=sum[i]+m的那个点(用二分),再用ST表查找这个区间的辣度的最大值。

#include<bits/stdc++.h>
#define ll long long
#define samplepassediscorrect for(;;)
#define ull unsigned long long
#define jiasu ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define lowbit(x) (x&(-x))
#define N 100005
using namespace std;
ll n,m,st[N][30],f,s,sum[N],mn,ans=1e18;
int search(ll x){return lower_bound(sum+1,sum+1+n,x)-sum;}
ll find(int l,int r){int x=log2(r-l+1);return max(st[l][x],st[r-(1<<x)+1][x]);
}
int main(){
jiasu;
cin>>n>>m;
for(int i=1;i<=n;i++){cin>>f>>s;st[i][0]=s;sum[i]=sum[i-1]+f;
}
for(int j=1;(1<<j)<=n;j++)for(int i=1;i+(1<<j)-1<=n;i++)st[i][j]=max(st[i][j-1],st[i+(1<<j-1)][j-1]);
for(int i=0;i<=n;i++){int j=search(sum[i]+m);if(j==n+1) break;ans=min(ans,find(i+1,j));
}
cout<<ans;return 0;
} 

 P4514 上帝造题的七分钟 - 洛谷

 二维树状数组模板,但我现在还不太理解。只能硬记着先学会应用。这题开long long会MLE,很奇怪,t1,t4数组我开着long long就会有错的,提示是输出了负号就是有溢出。全改成int就没错。

#include<bits/stdc++.h>
#define ll long long
#define samplepassediscorrect for(;;)
#define ull unsigned long long
#define jiasu ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define lowbit(x) (x&(-x))
#define N 2050
using namespace std;
int n,m,a,b,c,d,f;
char ch;
struct Two_dimensional_Fenwick_Tree{int t2[N][N],t3[N][N];int t1[N][N],t4[N][N];void update(int x,int y,ll d){for(int i=x;i<=n;i+=lowbit(i))for(int j=y;j<=n;j+=lowbit(j))t1[i][j]+=d,t2[i][j]+=x*d,t3[i][j]+=y*d,t4[i][j]+=x*y*d;}int sum(int x,int y){int ans=0;for(int i=x;i>0;i-=lowbit(i))for(int j=y;j>0;j-=lowbit(j))	ans+=(x+1)*(y+1)*t1[i][j]-(y+1)*t2[i][j]-(x+1)*t3[i][j]+t4[i][j];return ans;}
}r;
int main(){
jiasu;
cin>>ch>>n>>m;
while(cin>>ch){if(ch=='L'){cin>>a>>b>>c>>d>>f;r.update(a,b,f),r.update(a,d+1,-f),r.update(c+1,b,-f),r.update(c+1,d+1,f);}else{cin>>a>>b>>c>>d;cout<<r.sum(c,d)-r.sum(a-1,d)-r.sum(c,b-1)+r.sum(a-1,b-1)<<endl;}
}return 0;
} 

 

http://www.dtcms.com/a/312131.html

相关文章:

  • 基于LevitUnet的超声图像分割
  • 紧急救援!Oracle RAC节点驱逐元凶:私网Packet Reassembles Failed“包重组失败”一招救命
  • 开疆智能Modbus转Profinet网关连接PA6000H功率分析仪配置案例
  • 嵌入式——数据结构:基础知识和链表①
  • LQR个人笔记
  • Flutter开发 dart语言基本语法
  • Java 集合框架: LinkedHashSet
  • Redis7 String类型数据
  • 梦幻花瓣雨
  • spring学习笔记二
  • MC0364魔法链路
  • 全排列(回溯算法)
  • OLTP,OLAP,HTAP是什么,数据库该怎么选
  • 力扣-230.二叉搜索树中第K小的元素
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第6章 锁
  • Amazon Q Developer:AI 增强编码生产力的未来
  • Arpg第二章——流程逻辑
  • 第六章第二节 定时器定时中断 定时器外部时钟
  • 电子病历:现代HIS系统不可或缺的核心组成部分
  • 12:java学习笔记:多维数组1
  • yolo为什么可以作为目标检测框架?它的底层原理是什么?
  • 客流人数统计准确率↑22%:陌讯动态追踪融合算法实战解析
  • 【高等数学】第七章 微分方程——第七节 常系数齐次线性微分方程
  • OSPF综合实验(一)
  • 分享一个可以测试离线服务器性能的脚本
  • 八股训练--JUC
  • 包装类、日期等常用类型
  • C语言数据结构(5)双向链表
  • 深入剖析Nacos:云原生架构的基石
  • Python编程基础与实践:Python基础数据类型入门