首页 > 其他分享 >赛克oj The diameter of a rectangle(笛卡尔树)

赛克oj The diameter of a rectangle(笛卡尔树)

时间:2024-05-25 22:33:28浏览次数:29  
标签:diameter oj rs int ll res1 笛卡尔 赛克 define

赛氪OJ-专注于算法竞赛的在线评测系统 (saikr.com)

这题是hduoj 1506的加强版,区别在于宽度不是固定为1了,思路差不多,也是使用笛卡尔树。参考hduoj 1506(笛卡尔树) - Venux - 博客园 (cnblogs.com)

 1 #define IO std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
 2 #define bug(x) cout<<#x<<" is "<<x<<endl
 3 #include <bits/stdc++.h>
 4 #define iter ::iterator
 5 using namespace  std;
 6 typedef long long ll;
 7 typedef pair<int,int>P;
 8 #define pb push_back
 9 #define mk make_pair
10 #define se second
11 #define fi first
12 // #define rs o*2+1
13 // #define ls o*2
14 const int N=1e5+5;
15 int n;
16 ll a[N],b[N];
17 int st[N],ls[N],rs[N];
18 ll ans;
19 ll dfs(int u){
20     if(!u)return 0;
21     ll res=dfs(ls[u])+dfs(rs[u])+b[u];
22     ll res1=min(res,a[u]);
23     res1*=res1;
24     ans=max(ans,res1);
25     return res;
26 }
27 int main(){
28     IO;
29     
30     cin>>n;
31         
32     for(int i=1;i<=n;i++)cin>>a[i]>>b[i];
33     int h=0;
34     for(int i=1;i<=n;i++){
35         int k=h;
36         while(k>0&&a[st[k]]>a[i])k--;
37         if(k>0)rs[st[k]]=i;
38         if(k<h) ls[i]=st[k+1];
39         st[++k]=i;
40         h=k;
41     }
42     //bug(st[1]);
43     ans=0;
44     dfs(st[1]);
45     cout<<ans<<endl;
46     
47 }
48 /*
49 11
50 9 3 7 1 8 12 10 20 15 18 5
51 
52 */

 

   

标签:diameter,oj,rs,int,ll,res1,笛卡尔,赛克,define
From: https://www.cnblogs.com/ccsu-kid/p/18213088

相关文章

  • hduoj 1506(笛卡尔树)
    Problem-1506(hdu.edu.cn)题意坐标轴给定一些矩形,紧密排在一起,每个矩形宽度固定为1,问形成的图案中最大可以组成的矩形面积。思路常规思路是可以用单调栈分别找两边的合法边界,这里使用笛卡尔树。笛卡尔树实现了堆的性质,并且对原数组建立的笛卡尔树进行中序遍历为原数组的顺......
  • Golang初学:项目目录结构,project-layout 项目
    goversiongo1.22.1windows/amd64Windows11+amd64x86_64x86_64GNU/Linux--- 序章golang项目的代码要怎么组织?怎么放比较简洁易读?看下面这个项目就晓得了。 project-layouthttps://github.com/golang-standards/project-layout注,有时访问失败。特写文记录。......
  • LibreOJ 3818 「CEOI2022」Parking
    考虑把这个停车位当作栈来考虑,每次可以取出栈顶放到另一个栈,并且要保证另一个栈\(sz\le2\),且当\(sz=2\)时要保证栈顶栈底都是同一种元素。令\((x,y)\)表示\(x\)为栈顶\(y\)为栈底,\((0,x)\)表示栈中元素只有\(x\)。考虑对于\((x,y)\),连一条\(x\toy\)的边,若......
  • [lnsyoj121/luoguP4513]小白逛公园
    题意原题链接给定序列\(a\),要求处理单点修改和查询区间最大子段和sol单点修改,区间查询,考虑线段树UPDATE操作对于一个区间,其最大子段和的位置只会有三种情况:在左子区间在右子区间在左右两区间都有如果是前两种情况,那么答案就是对应子区间的最大子段和如果是第三种情况......
  • QDU-OJ数据恢复
    实际需求:从旧机子换到新机子,需要将原来的数据迁移到新机子上,本帖进行了实践验证。前提(Ubuntu环境):旧机子系统正常运行,新机子部署了系统,可正常访问运行。方案直接复制data文件夹到新的机子覆盖即可操作旧、新机子都停用docker服务dockerstop$(dockerps-aq)备......
  • [lnsyoj282/luoguP2122]还教室
    题意原题链接给定序列a,要求处理区间加,区间查平均值,区间查方差sol显然线段树区间加操作请参考[lnsyoj281/luoguP2023/AHOI2009]维护序列区间查平均值由于$$\overlinea=\frac{\sum_{i=1}^{n}a_i}{n}$$所以只需记录区间和即可区间查方差由于$$S^2=\frac{\sum_{i=1}^{......
  • loj#575. 「LibreOJ NOI Round #2」不等关系
    记事件\(A\)为「当\(s_i=\texttt<\)时\(p_i<p_{i+1}\)」,事件\(B\)为「当\(s_i=\texttt<\)时\(p_i<p_{i+1}\),且存在\(s_j=\texttt>\),满足\(p_i<p_{i+1}\)。所求即\(n(A)-n(B)\)。\(n(A)\)是好求的,相当于部分定序排列,记每个递增段的长度为\(a_1......
  • PROJECT_SOURCE_DIR 和 CMAKE_SOURCE_DIR
    PROJECT_SOURCE_DIR和CMAKE_SOURCE_DIR对比在CMake中,PROJECT_SOURCE_DIR和CMAKE_SOURCE_DIR是两个非常重要的变量,它们都指向项目的源代码目录,但在多项目(子项目或多个CMakeLists.txt文件)的情况下,它们的值有所不同。CMAKE_SOURCE_DIR定义:CMAKE_SOURCE_DIR 指向最顶层的C......
  • CF1085D Minimum Diameter Tree 题解
    CF1085DMinimumDiameterTree题解比较水的一道绿题观察样例可以发现,边权都平分在叶子节点唯一的一条连边上,由此猜到联想到可以把贪心地将边权全部平均分配到这些边上,这样写出来就能AC了。如何证明先来一张图方便理解:利用反证法:假设按上述做法分配边权后可以至少修改一次......
  • 题目:SHMIP The subglacial hydrology model intercomparison Project
    SHMIP(冰下水文模型比较计划)是一个致力于解决冰下水文多种理论方法问题的项目。该计划通过构建一系列综合模拟实验,并对运行这些模拟的各参与模型的结果进行比较,以达到其目标。这将有助于潜在的模型用户更加明智地为特定应用选择合适的模型。同时,对于模型开发人员来说,这将有助于他们......