首页 > 其他分享 >E. Reverse the Rivers(二分)CF984

E. Reverse the Rivers(二分)CF984

时间:2024-11-06 18:15:25浏览次数:5  
标签:Reverse rr int mid Rivers l2 l1 else CF984

题意:给定n个国家,k个地区,aij为第i个国家第j个地区,bij=a1j|a2j|---aij为第i个国家第j个地区的更新值,给出q个问题,每个问题包含m项要求,国家i必须满足m项要求:如果o=='<'必须满足bir<c否则bir>c,输出满足所有条件的最小序号的国家

分析:如果o是小于号,用二分找到右区间,如果o是大于号,用二分找到左区间左区间,找到满足条件的区间最后取最小值即可

代码:

```
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){
    int n,k,q;cin>>n>>k>>q;
    ll a[n+10][k+10];
    for(int i=1;i<=n;i++){
        for(int j=1;j<=k;j++){
            cin>>a[i][j];
        } 
    } 
    for(int j=1;j<=k;j++){
        for(int i=2;i<=n;i++){
            a[i][j]=a[i-1][j]|a[i][j];
        }
    }
    int rr;char o;ll c;
    for(int i=1;i<=q;i++){
        int m;cin>>m;
        int l=1,r=n;int f=0;
        for(int j=1;j<=m;j++){
            cin>>rr>>o>>c;
            int l1=l,r1=r;
            if(o=='<'){//
                int l2=l,r2=r;
                while(l2<r2){//右 
                int mid=(l2+r2+1)/2;
                if((a[mid][rr]<c&&o=='<')||(a[mid][rr]>c&&o=='>'))l2=mid;
                else r2=mid-1;
                }
                if(l2==l){
                if((a[l2][rr]<c&&o=='<')||(a[l2][rr]>c&&o=='>'))l2=l;
                else f=1;
                } 
                r=l2;
            }
            else{
                while(l1<r1){//左 
                int mid=(l1+r1)/2;
                if((a[mid][rr]<c&&o=='<')||(a[mid][rr]>c&&o=='>'))r1=mid;
                else l1=mid+1;
                }
                if(l1==r){
                if((a[l1][rr]<c&&o=='<')||(a[l1][rr]>c&&o=='>'))l1=r;
                else f=1;
                } 
                l=l1;
            }
        }
        if(f==0)cout<<l<<endl;
        else cout<<"-1"<<endl;
    }
}
int main() {
    int t=1;
    while(t--)sol();
    return 0;
}
```

## 

标签:Reverse,rr,int,mid,Rivers,l2,l1,else,CF984
From: https://blog.csdn.net/m0_74310050/article/details/143535322

相关文章

  • 2024网鼎杯线上赛REVERSE02(超详细)
    进入主函数分析代码发现了四段加密,一层一层进行解密第一步:打开进入main函数,然后分析代码第一个加密对dest的八个字节做了乘2加密,密文是s2伪代码下看不全在汇编下看第二步:第二块数据进行了异或加密异或key是XorrLord,然后写脚本进行解密拿到了第一段和第二......
  • [强网拟态 2024 初赛] Reverse赛题复现
    队内的爹做的太快了,完全跟不上......
  • CF1458D Flip and Reverse 题解
    思路由于它要求\(\text{01}\)数量相等,我们可以考虑站在前缀和的角度看待这个问题。我们将\(0\)看作负一,\(1\)看作一。可以把它化成一个折线图(方便观察)。观察一下它的操作实际上在干什么。容易发现,在折线图上,我们把操作的\([l,r]\)的整段折线reverse了一遍。同样的,......
  • 【有啥问啥】逆向工程(Reverse Engineering,RE):深度解析与技术方法
    逆向工程(ReverseEngineering,RE):深度解析与技术方法引言逆向工程(ReverseEngineering,简称RE),作为现代科技领域中的一项重要技术,其影响力已远远超越了传统的硬件拆解范畴。在软件安全、产品设计优化、知识产权保护,以及教育与研究等多个领域,逆向工程都展现出了其独特的价值和......
  • 92. Reverse Linked List II
    92.ReverseLinkedListII在链表头添加一个虚拟源点,可以减少特判/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):val(x),next(nullptr){......
  • 第二题Reverse 1
    注意:得到的flag请包上flag{}提交F12:查找字符串ctrl+x:交叉引用Tab键/F5:将汇编语言转为伪c语言r键:用于查看ASCII表第一步将下载并解压后的附件进行查壳然后放入IDA中·第二步F12查找wrongflag字符串进入找到字符串的位置第三步ctrl+x交叉引用第四步......
  • Reverse easyre一个非常简单的逆向
    PETools是一个Windows系统下的工具集合,主要用于分析、检测和处理Windows可执行文件(如.exe、.dll等)。其中包含的"ShellcodeAnalzyer"或"Shellcode识别器"功能,可以帮助用户检查可执行文件是否嵌入了壳码(shellcode),即一段小型的、独立于操作系统环境的程序代码,常用于恶意软件中,以......
  • [1065] Reverse geocoding in python
    ToimplementreversegeocodinginPython,youcanusethegeopylibrary,whichprovidesaconvenientinterfaceforvariousgeocodingservices.Here’sastep-by-stepguidetohelpyougetstarted:Step-by-StepGuideInstallthegeopylibrary:pipinstall......
  • DataGrip或者intellijIDEA 远程链接数据库的时候下载驱动失败 出现错误:https://downlo
    一、问题本人使用DataGrip版本:2023.1在链接数据库的时候出现这个错误,无法完全加载驱动,是因为这里的maven仓库下载驱动失败,这时候需要自己手动下载驱动二、怎么解决需要手动更改下载的镜像网址,改成阿里云的镜像网址仓库服务(aliyun.com)这三个仓库地址,可以选择其中一个......
  • C++知识点:size_t, a.at(i), reverse函数
    1.size_t`size_t`是一种在C/C++编程中非常常用的数据类型,它定义在`<stddef.h>`或者`<cstdlib>`等头文件中,通常用来表示**大小**或**长度**。###关键特性:1.**无符号类型**:`size_t`是无符号整数类型,表示它只能存储非负整数。因此,它不会用于存储负值,这使得它非常适合表示诸如......