【JZOJ 4694】【HDU 5283】火神的鱼

数字IC后端PPA优化实战:Timing一致性策略与Module Region布局技巧 本文深入探讨了数字IC后端设计中的PPA优化实战,重点解析了Timing一致性问题及其解决方案。通过调整Clock Uncertainty、Timing Derate和RC Scale Factor等关键参数,使Innovus等PR工具的分析结果更接近PrimeTime签核结果。同时,文章详细介绍了Module Region布局技巧,通过为关键模块划定物理区域,优化单元摆放,有效减少线延迟,从而协同提升时序收敛效率与设计可预测性。 阅读详情

Description

火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。
池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。
他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总数。鱼的游动可以概括为两个动作:
1 l r d : 表示标号在[l,r]这个区间内的鱼向x轴正方向游动了d个单位长度。
2 l r d:表示标号在[l,r]这个区间内的鱼向y轴正方向游动了d个单位长度。
在某些时刻火神会询问你现在有多少条他关心的鱼在渔网内(边界上的也算),请你来帮助他吧。

Solution

先把题目的两个维度拆开来分析,
每个数在变化的过程中,只会不停的增加,也就是每个点最多只会进一次区间,出一次区间,
所有每个点进入区间和出区间的操作可以一个一个来做,
用线段树,线段树内存mi,mi1,分别表示x<X1的最大的x值以及位置,ma,ma1表示x<X2的最大的x以及位置,(注意,一个点可能即是ma也是mi)
y也开一颗差不多的,
同时还要记录一下当前区间x,y都合法的个数(答案),
mi,mi1的初始值为-maxlongint,
预处理时,如果一个点的x,y其中一个越过了合法的区间,很显然这个点就没有用了,它的mi,ma就没有值,
每次区间修改x,ma就有可能>X2,这样就不合法所以,因此我们要找到是哪个不合法,然后把它同时在两颗树中删掉,也有可能mi>X1,把它从mi中删掉,同时看一下它的x,y是否合法,合法就加进s,如果有很多都要做操作,则一个一个来,
修改y一样,

复杂度:O(nlog(n))

Code

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
#define OK(q,w) (X1<=(q)&&(q)<=X2&&Y1<=(w)&&(w)<=Y2)
#define B b[E]
using namespace std;
const int N=30500,INF=2147483640;
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n,ans,X1,Y1,X2,Y2;
struct qwqw{int x,y;}a[N];
struct qqww{int i,i1,a,a1,s,la;}b[2][3*N];
void merge(int q,int w,int e)
{
    fo(E,0,1)
    {
        B[q]=B[w];
        B[q].s=B[w].s+B[e].s;
        if(B[q].i<B[e].i)B[q].i=B[e].i,B[q].i1=B[e].i1;
        if(B[q].a<B[e].a)B[q].a=B[e].a,B[q].a1=B[e].a1;
    }
}
void doit(int l,int r,int e)
{
    fo(E,0,1)if(B[e].la)
    {
        if(B[e].i!=-INF)B[e].i+=B[e].la;
        B[e].a+=B[e].la;
        if(l!=r)B[e*2].la+=B[e].la,B[e*2+1].la+=B[e].la;
        B[e].la=0;
    }
}
void build(int l,int r,int e)
{
    if(l==r)
    {
        if(a[l].x<=X2&&a[l].y<=Y2)
        {
            b[0][e].a=a[l].x,b[1][e].a=a[l].y;
            b[0][e].a1=b[1][e].a1=l;
            if(OK(b[0][e].a,b[1][e].a))b[0][e].s=1;
            if(a[l].x<X1)b[0][e].i=a[l].x,b[0][e].i1=l;
            if(a[l].y<Y1)b[1][e].i=a[l].y,b[1][e].i1=l;
        }
        return;
    }
    int mid=(l+r)/2;
    build(l,mid,e*2),build(mid+1,r,e*2+1);
    merge(e,e*2,e*2+1);
}
void change(int l,int r,int e,int E,int l1,int r1,int l2)
{
    if(l==l1&&r==r1){B[e].la+=l2;doit(l,r,e);
    return;}
    int mid=(l+r)/2;
    doit(l,mid,e*2),doit(mid+1,r,e*2+1);
    if(r1<=mid)change(l,mid,e*2,E,l1,r1,l2);
        else if(mid<l1)change(mid+1,r,e*2+1,E,l1,r1,l2);
            else change(l,mid,e*2,E,l1,mid,l2),change(mid+1,r,e*2+1,E,mid+1,r1,l2);
    merge(e,e*2,e*2+1);
}
void delt(int l,int r,int e,int l2)
{
    if(l==r){b[0][e]=b[1][e]=b[0][0];return;}
    int mid=(l+r)/2;
    doit(l,mid,e*2),doit(mid+1,r,e*2+1);
    if(l2<=mid)delt(l,mid,e*2,l2);
        else delt(mid+1,r,e*2+1,l2);
    merge(e,e*2,e*2+1);
}
void join(int l,int r,int e,int l2)
{
    if(l==r)
    {
        if(OK(b[0][e].a,b[1][e].a))b[0][e].s=1;
        if(b[0][1].i>=X1)b[0][e].i=-INF,b[0][e].i1=0;
        if(b[1][1].i>=Y1)b[1][e].i=-INF,b[1][e].i1=0;
        return;
    }
    int mid=(l+r)/2;
    doit(l,mid,e*2),doit(mid+1,r,e*2+1);
    if(l2<=mid)join(l,mid,e*2,l2);
        else join(mid+1,r,e*2+1,l2);
    merge(e,e*2,e*2+1);
}
int find(int l,int r,int e,int l1,int r1)
{
    if(l==l1&&r==r1)return b[0][e].s;
    int mid=(l+r)/2;
    doit(l,mid,e*2),doit(mid+1,r,e*2+1);
    if(r1<=mid)return find(l,mid,e*2,l1,r1);
        else if(mid<l1)return find(mid+1,r,e*2+1,l1,r1);
            else return find(l,mid,e*2,l1,mid)+find(mid+1,r,e*2+1,mid+1,r1);
} 
int main()
{
    int q,w,_,l,r;
    b[0][0].i=-INF,b[0][0].a=-INF;  
    fo(i,1,3*N-10)fo(j,0,1)b[j][i]=b[0][0];
    read(_);
    while(_--)
    {
        read(n);
        read(X1),read(Y1),read(X2),read(Y2);
        fo(i,1,n)read(a[i].x),read(a[i].y);
        build(1,n,1);
        read(m);
        fo(i,1,m)
        {
            read(q),read(l),read(r);
            if(q==1)
            {
                read(w);
                change(1,n,1,0,l,r,w);
                while(b[0][1].a>X2)delt(1,n,1,b[0][1].a1);
                while(b[0][1].i>=X1)
                    join(1,n,1,b[0][1].i1);
            }
            if(q==2)
            {
                read(w);
                change(1,n,1,1,l,r,w);
                while(b[1][1].a>Y2)delt(1,n,1,b[1][1].a1);
                while(b[1][1].i>=Y1)join(1,n,1,b[1][1].i1);
            }
            if(q==3)printf("%d\n",find(1,n,1,l,r));
        }
        fo(i,1,3*n)fo(j,0,1)b[j][i]=b[0][0];
    }
    return 0;
}
5GS 协议栈 — PFCP 协议 — URR 用量上报规则 目录 文章目录目录URR 用量上报规则UEE 的参数Usage Report 的参数示例 URR 用量上报规则 29244 5.2.2 Usage Reporting Rule URR 的作用? 用来告诉 UPF 如何对 PDR 识别的 SDF 或 Application 业务进行使用量统计信息的上报。CP 收到 Report Information 后,可用于计费或者管控(e.g. 超量限速)等用途。 URR 在哪个流程里下发的? N4 会话建立流程。 N4 会话修改流程。 URR 是怎么工作 阅读详情

相关推荐

FPGA:UART串口接收(高干扰情况)

在上一篇文章中介绍过UART串口接收模块,其中一个需要优化的方向就是在高干扰情况下,如何实现可靠的UART串口接收任务。

weixin_50164178的博客 1672

HDU5283 线段树

题意就不讲了,挺好理解的。。暴力很好打。。 其实正解一眼看出来是线段树。。。 题目关键在于在 x 轴和 y 轴上,鱼的坐标变化都是单调的,因为 d 是正值。我们把在一个 矩形内部有多少个点的询问拆分成四个在某个点的左下角有多少个点的询问,然后用一棵线 段树维护鱼的 x 坐标,一棵线段树维护鱼的 y 坐标。对于移动操作,在对应的线段树上进行 区间更新,更新完成后询问该区间内的最大值,若最大值

老臣 660

nsight-system教程

参考nsight-compute使用教程-优快云博客。

youzjuer的博客 1894

【HDU5283】Senior's Fish(分块)(均摊分析)

传送门 题解: 首先是坐标切割,由于坐标移动单调,我们直接在某条鱼穿过渔网的某条线(向两端无限延伸后的)的时候重构整块。 调整块长卡常,现在是HDU rank1。 比那些写线段树的不知道快到哪里去了。 代码: #include<bits/stdc++.h> #define ll long long #define re register #define gc get_char #d...

zxyoi_dreamer的博客(不定期诈尸) 228

手把手教你用CEFSharp打造防关联指纹浏览器(附完整代码)

本文详细介绍了如何基于CEFSharp框架,从零开始构建一个企业级的防关联指纹浏览器。通过剖析核心架构、多进程隔离实现、动态指纹混淆(如Canvas、WebGL)的实战代码,以及代理集成与性能优化,为跨境电商、广告投放等场景提供了一套可控、安全的开源解决方案。

fern8的博客 963

ESP32-CAM图传小车:端边协同的嵌入式视觉系统设计

在物联网边缘智能场景中,嵌入式视觉系统需平衡实时性、算力与成本。其核心在于理解图像采集、硬件编码、低延迟传输与分层计算的基本原理——OV2640等CMOS传感器配合JPEG硬件编码可显著降低主控负载;TCP流式协议比HTTP/RTSP更适配资源受限MCU;而‘计算卸载’架构将OpenCV等重负载移至Android端,使ESP32专注实时控制与传输,既发挥FreeRTOS任务调度优势,又规避了PSRAM带宽与内存瓶颈。该模式广泛适用于教育机器人、智能巡检及DIY视觉终端等场景,本文以WiFi图传坦克小车为载体

weixin_42524864的博客 373

【HDU5283】【JZOJ4694】火神的鱼

Description火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总数。鱼的游动可

sadnohappy 905

别再瞎试了!用Python+正交设计,5分钟搞定你的多因素实验方案

本文介绍了如何利用Python和正交设计高效优化多因素实验方案。正交设计通过精心设计的正交表,用最少的实验次数覆盖所有因素的水平组合,显著提升实验效率。文章详细讲解了正交设计的核心优势、Python实现工具链、实验实施与数据分析方法,以及高级技巧与常见问题解决方案,帮助读者快速掌握这一强大的实验优化技术。

weixin_42526087的博客 336

[JZOJ4694] 火神的鱼 [HDU5283] Senior's Fish

Description 火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总

Never give in. 681

等保测评-达梦数据库

一般适用于等保测评

m0_54146694的博客 1298

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-单端信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的单端拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 417

【hdu5283】火神的鱼

Description火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总数。鱼的游动可

Facico的博客 1076

多源异构数据在线可视化ETL编排平台深度实践:基于Python与Apache Calcite的现代数据管道构建

在当今企业数据环境中,数据源呈现爆发式增长与高度异构性。传统ETL工具面对多源(MySQL、PostgreSQL、MongoDB、Hive、文件系统等)与异构(结构化、半结构化、非结构化)数据时,往往面临扩展性差、学习曲线陡峭、难以融入现代DevOps体系等问题。本文深入探讨了如何构建一个基于Python/Pandas、Apache Calcite(通过JPype桥接)以及Vue.js前端的轻量级、在线可视化ETL编排平台。

2201_76125261的博客 78

【HDU 5283】【JZOJ 4694】 火神的鱼

Description火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总数。鱼的游动可

LYD729 673

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【未知来源】火神的鱼

题意   二维平面上有 \(n\) 个点,有一个四边平行于坐标轴的渔网,同时平面上有 \(n\) 个编号为 \(1\) 到 \(n\) 点。   你需要支持 \(3\) 种操作:     1 l r d:编号在 \([l,r]\) 内的所有点向 \(x\) 轴正方向平移 \(d\) 个单位     1 l r d:编号在 \([l,r]\) 内的所有点向 \(y\) 轴正方向平移 \(d...

weixin_30954607的博客 173

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【XSY2569】火神的鱼(线段树+树状数组)

题面 Description 火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从111到nnn标号,nnn表示池塘里鱼...

ez_lcw的博客 423

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JZOJ4693. 【NOIP2016提高A组模拟8.14】疯狂的火神

Description 火神为了检验zone的力量,他决定单挑n个人。 由于火神训练时间有限,最多只有t分钟,所以他可以选择一部分人来单挑,由于有丽子的帮助,他得到了每个人特定的价值,每个人的价值由一个三元组(a,b,c)组成,表示如果火神在第x分钟单挑这个人(x指单挑完这个人的时间),他就会得到a-b*x的经验值,并且他需要c分钟来打倒这个人。 现在火神想知道,他最多可以得到多少经验值,由于

lijf2001的博客 8745

CSP-S模拟 火神的鱼(线段树)

传送门 考虑到每只鱼只会进网出网一次,于是直接建四棵线段树维护鱼的状态并建一棵树状数组维护答案即可。 注意有多组数据 代码: #include<bits/stdc++.h> #define ri register int using namespace std; const int rlen=1<<18|1; inline char gc(){ static char b...

苟为蒟蒻又何妨 369

[Contest20171028]火神的鱼

火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。他对池塘里的每条鱼都给予了一个标号,分别从$1$到$n$标号,$n$表示池塘里鱼的总数。鱼的游动可以概括为两个动作...

weixin_33751566的博客 160

HDU 5283 Senior ' s Fish

你的地方就是个海洋 有人挣扎沉向海底从此无声无息

reflash的博客 1149

【NOIP2016提高A组模拟8.14】火神的鱼

Description火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总数。鱼的游动可

Jacky35 517

BestCoder Round #47 ($) (hdu 5280 , hdu 5281 , hdu 5282 , hdu 5283)

1001 Senior’s Array这题暴力枚举替换哪一个,然后dp就行。。O(n^2)的复杂度 这题一开始看错了,一直用线段树WA了好多发,好伤。

inf_force 853

HDU OJ 5283 Senior's Fish

Senior’s Fish 原题网址 http://acm.hdu.edu.cn/showproblem.php?pid=5283 题目大意 池塘里有一些鱼和一个渔网,池塘可以看成一个二维的平面,而渔网可以看成一个与坐标轴平行的矩形。每条鱼都被给予了一个标号,分别从11到nn标号,nn表示池塘里鱼的总数。鱼的游动可以概括为两个动作: 11 ll rr dd : 表示标号在[ll,rr

XianHaoMing的博客 1800

HDU5283 SENOIR'S FISH【线段树】

介于本校oj,题面如下: SOL //一开始看错了题面,以为“网”是动态的,头脑一片空白 既然渔网不动,又是以鱼的编号为下标询问,显然不能基于鱼的坐标解决问题 考虑暴力处理每一个修改,对于鱼的x坐标,只加不减(y坐标同理)。换而言之,如果鱼已出网,便可不用考虑。 一、将 X1,Y1,X2,Y2X1,Y1,X2,Y2X1,Y1,X2,Y2看作四条分界线,用四个线段树分别维护原序列上某一段区间...

Jun 281

HDU 5283

题目大意 池塘里有一些鱼和一个渔网,池塘可以看成一个二维的平面,而渔网可以看成一个与坐标轴平行的矩形。每条鱼都被给予了一个标号,分别从1到n标号,n表示池塘里鱼的总数。鱼的游动可以概括为两个动作:  1 l r d : 表示标号在[l,r]这个区间内的鱼向x轴正方向游动了d个单位长度。  2 l r d:表示标号在[l,r]这个区间内的鱼向y轴正方向游动了d个单位长度。  还有

syyer 443

【JZOJ 3053】旅行

Description 给定一个n行m列的字符矩阵,’.’代表空地,’X’代表障碍。移动的规则是:每秒钟以上下左右四个方向之一移动一格,不能进入障碍。计算:在空地中随机选择起点和终点(可以重合,此时最短耗时为0),从起点移动到终点最短耗时的平均值。 每一行每一列至多有1个障碍,并且障碍不在对角线方向相邻。以下矩阵是不合法的: Solution 先计算出两两点的曼哈顿距离,这个可以把x,y

1176
上一篇: 【JZOJ 4686】通讯
下一篇: 【BZOJ 2144】【JZOJ 4701】Throw
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值