当前位置: 首页 > 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.lryc.cn/news/608297.html

相关文章:

  • 【AI学习】RadioDiff:代码学习
  • 福彩双色球第2025088期篮球号码分析
  • Leetcode-141.环形链表
  • 面试-python单例模式实现
  • 谈谈WebAssembly、PWA、Web Workers的作用和场景
  • 【机器学习】两大线性分类算法:逻辑回归与线性判别分析:找到分界线的艺术
  • uniapp倒计时计算
  • InfluxDB 与 Node.js 框架:Express 集成方案(一)
  • Oracle 11g RAC集群部署手册(一)
  • 电力系统分析学习笔记
  • Angular初学者入门第一课——搭建并改造项目(精品)
  • 学习笔记:无锁队列的原理以及c++实现
  • 基于Dockerfile 部署一个 Flask 应用
  • Orange的运维学习日记--25.Linux文件系统基本管理
  • 【BTC】挖矿
  • 优选算法 力扣1089.复写零 双指针 原地修改 C++解题思路 每日一题
  • Git 的基本使用指南(1)
  • Arpg第二章——流程逻辑
  • 自动驾驶中的传感器技术15——Camera(6)
  • 数字化转型驱动中小制造企业的质量管理升级
  • TFS-2022《A Novel Data-Driven Approach to Autonomous Fuzzy Clustering》
  • 【深度学习②】| DNN篇
  • 编译器与解释器:核心原理与工程实践
  • 基于Postman进行http的请求和响应
  • 操作系统:远程过程调用( Remote Procedure Call,RPC)
  • Jupyter notebook如何显示行号?
  • SQL Server从入门到项目实践(超值版)读书笔记 22
  • Spring事务失效场景
  • kotlin小记(1)
  • 集合框架(重点)