SDKD 2017 Summer Team Training #12, tm ( Yet Another Median Task )

题目大意:给定一个矩阵,给你多次查询,查询一个小矩阵中的数的中位数;

解题思路:完全没往二分上想,我们可以二分枚举中位数数值,搜索矩阵中数值小于中位数的个数。

#include <cstdio>
#include <iostream>
#include <string.h>
#include <string>
#include <map>
#include <queue>
#include <vector>
#include <set>
#include <algorithm>
#include <math.h>
#include <cmath>
#include <stack>
#define mem0(a) memset(a,0,sizeof(a))
#define meminf(a) memset(a,0x3f,sizeof(a))
using namespace std;
typedef long long ll;
typedef long double ld;
const int maxn=805,inf=0x3f3f3f3f;
const ll llinf=0x3f3f3f3f3f3f3f3f;
const ld pi=acos(-1.0L);
int a[maxn][maxn];
int p[maxn*maxn];

int main() {
    int n,i,j,k,l,r,u,d,q;
    ll m=-llinf,w=llinf;
    scanf("%d%d",&n,&q);
    for (i=1;i<=n;i++) {
        for (j=1;j<=n;j++) {
            scanf("%d",&a[i][j]);
            m=max(m,(ll)a[i][j]);
            w=min(w,(ll)a[i][j]);
        }
    }
    for (i=1;i<=q;i++) {
        scanf("%d%d%d%d",&u,&l,&d,&r);
        int lc=w,rc=m,mid,tot=(r-l+1)*(d-u+1),ans;
        if (tot%2) tot/=2; else tot=tot/2-1;
        while (lc<=rc) {
        int cnt=0;
        mid=(lc+rc)/2;
        for (j=u;j<=d;j++) {
            for (k=l;k<=r;k++) {
                if (a[j][k]<mid) cnt++;
            }
        }
        if (cnt<=tot) lc=mid+1,ans=mid; else {
            rc=mid-1;
        }
        }
        printf("%d\n",ans);
    }
    return 0;
}
时间: 2024-08-24 17:12:25

SDKD 2017 Summer Team Training #12, tm ( Yet Another Median Task )的相关文章

SDKD 2017 Summer Team Training #12, tm--A(Queries )

题目大意: 给你一个数组,给你如下几种操作: s l r mod 查询区间[l,r]中模m等于mod的数字之和: + p r 将p位置的数加上r后模m: - p r 将p位置的数减去r后模m: 解题思路: 一般进行区间查询,位置操作可以使用线段树或者树状数组解决(暂时只会树状数组):这题的特殊之处就在于要求模m等值: 由于m的值较小(m<10) 因此我们可以开一个二重的树状数组,第二重保存模m后的值:其余操作就是基本的树状~ #include <iostream> #include &l

2017白条套现秒到方法(规避上征信)京东白条自己能套现

2017白条套现秒到方法(规避上征信)京东白条自己能套现 近日,京东金融在官方微博上证实,包括金条.白条.京农贷业务均已启动征信接入工作,也就是说,若开通上述业务,那么均会上报至你在人行的信用报告中. 对此,我们主要关注的是以下几点: 1.白条每月更新一次信报 比苏宁"任性付"好一点的是,京东白条不会将每一笔消费都体现在信报上,而是每月按账单更新负债情况(更正:苏宁已于 2017 年 8 月起,对客户的多笔贷款记录予以合并上报人行征信系统,不再逐笔展示客户贷款信息.).然而,京东金融官

2017年应试 | 通过软考(集成、项管)的三个关键要素

有同学咨询教程教辅.学习方法等相关的问题,我们把相关问题合并后在此一并答复.1.我们在面授过程中强调的是"框架+内容"的学习方法,所谓框架,具体的产物是攻克要塞的知识图谱,通过知识图谱形成对该门考试的全部知识点的整体性认知,知道"考什么?":而内容是一个一个的具体知识点,内容的载体就是我们的100题系列.攻克要塞系列的教辅了.因此,在教辅中,我们都给出了知识图谱,我们比较希望考生是根据知识图谱展开复习,而教辅是对知识图谱中的知识点的阐述而已. 2.我们认为通过考试的

SDKD 2017 Summer Single Training #03

今天的题目有 6 个. 第一题: CodeForces - 400D  Dima and Bacteria 这个题实际是不难的,难的可能在题意的理解上还有题干有点长,这个题很考察题意上面,知识点很熟悉,并查集和Floyd. 具体题解地址:http://www.cnblogs.com/dwtfukgv/p/7126059.html 第二题:CodeForces - 384E  Propagating tree 这个题确实是有难度的,当然主要是在时间上面,其实这个我是防AK的,然后这个题很容易理解,

2017.5.27 NOIP模拟赛(hzwer2014-5-16 NOIP模拟赛)

期望得分:100+100+60+30=290 实际得分:100+20+60+0=180 当务之急:提高一次正确率 Problem 1 双色球(ball.cpp/c/pas) [题目描述] 机房来了新一届的学弟学妹,邪恶的chenzeyu97发现一位学弟与他同名,于是他当起了善良的学长233 “来来来,学弟,我考你道水题检验一下你的水平……” 一个栈内初始有n个红色和蓝色的小球,请你按照以下规则进行操作 只要栈顶的小球是红色的,将其取出,直到栈顶的球是蓝色 然后将栈顶的蓝球变成红色 最后放入若干个

Bumped! 2017 ICPC North American Qualifier Contest (分层建图+dijstra)

题目描述 Peter returned from the recently held ACM ICPC World finals only to find that his return flight was overbooked and he was bumped from the flight! Well, at least he wasn’t beat up by the airline and he’s received a voucher for one free flight bet

Petrozavodsk Summer Training Camp 2016H(多标记线段树)题解

题意: \(n\)个草,第\(0\)天种下,高度都为\(0\),每个草每天长高\(a_i\).现给出\(q\)询问,每次给出第\(b\)天,然后把高于\(d\)的全削成\(d\),每次问你削下来的高度是多少. 思路: 能看出草的顺序和答案无关,那么按\(a_i\)排序,后面的草永远都比前面的高.然后线段树维护区间加,区间重置,区间询问. 代码: #include<set> #include<map> #include<cmath> #include<queue&g

[转] 如何应用设计模式设计你的足球引擎(三和四)----Design Football Game(Part III and IV)

原文地址:http://www.codeproject.com/KB/cpp/applyingpatterns2.aspx 作者:An 'OOP' Madhusudanan 译者:赖勇浩(http://blog.csdn.net/lanphaday ) 解决方案架构师:你的进度怎么样? 愚蠢的开发者:是的,我觉得我学会了如何应用 Observer 模式去解决所有问题 解决方案架构师:一个模式解决所有问题? 愚蠢的开发者:啊,还不够么? 介绍 关于本文 本文是这个系列的第二篇文章,在阅读本文之前,

2017年11月12日--1(ES的数据类型-应用数据)

ES标准 1引用类型 Boolean 对象是 Boolean 原始类型的引用类型. 要创建 Boolean 对象,只需要传递 Boolean 值作为参数:var oBooleanObject = new Boolean(true); var oFalseObject = new Boolean(false);var bResult = oFalseObject && true; //输出 true Number 对象正如你可能想到的,Number 对象是 Number 原始类型的引用类型.