首页 > 其他分享 >P8667 [蓝桥杯 2018 省 B] 递增三元组

P8667 [蓝桥杯 2018 省 B] 递增三元组

时间:2024-02-13 23:33:26浏览次数:38  
标签:int mid long 三元组 蓝桥 2018 include

二分计数

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string>
#define For(i, j, n) for(int i = j ; i <= n ; ++i)
using namespace std;

const int N = 1e5 + 5;

int n, arr[3][N], base[N];
long long ans;

int findless(int a[], int x) //返回最大的小于x的数的下标
{
    int l = 0, r = n + 1;
    while(l < r)
    {
        int mid = l + r + 1 >> 1;
        if(a[mid] < x) l = mid;
        else r = mid - 1;
    }
    return l;
}

int findgreater(int a[], int x) // 返回最小的大于x的数的下标
{
    int l = 0, r = n + 1;
    while(l < r)
    {
        int mid = l + r >> 1;
        if(a[mid] > x) r = mid;
        else l = mid + 1;
    }
    return l;
}

int main()
{
    scanf("%d", &n);
    for(int i = 0; i < 3; i++)
    {
        arr[i][n + 1] = N;
        for(int j = 1; j <= n; j++)
            scanf("%d", &arr[i][j]);
    }
    for(int i = 0; i < 3; i++)
        sort(arr[i] + 1, arr[i] + n + 1);
    for(int i = 1; i <= n; i++)
    {
        base[i] = findless(arr[0], arr[1][i]);
    }
    for(int i = 1; i <= n; i++)
    {
        ans += (long long)base[i] * (n - findgreater(arr[2], arr[1][i]) + 1);
    }
    printf("%lld\n", ans);
    return 0;
}

要注意

for(int i = 1; i <= n; i++)
    {
        ans += (long long)base[i] * (n - findgreater(arr[2], arr[1][i]) + 1);
    }

这里的long long强转,因为不仅仅是ans本身,这个累加式也有可能爆int

标签:int,mid,long,三元组,蓝桥,2018,include
From: https://www.cnblogs.com/smartljy/p/18014944

相关文章

  • P4559 [JSOI2018] 列队 题解
    题目链接:列队半年前mark的题,结果现在一下子就会做了。顺便写写我的手玩过程和复杂度说明。考虑比较特殊的情况:比较特殊的,发现从黑色到红色区间我们无论咋选择,由于\(\left|a_{right}-a_{left}\right|\),这玩意如果\(right\)表示红色的一边,那么这个绝对值可以直接拆掉,那么......
  • P8674 [蓝桥杯 2018 国 B] 调手表
    原题链接题解一道思维题由于闹钟是圆的,所以从任意一个分钟数调到另外任意一个分钟数最多要按多少次相当于从点0调到1~n-1任意一点最多要按多少次可以把1~n看成一个一个点,就相当于单源最短路了md,好巧妙code#include<bits/stdc++.h>usingnamespacestd;structrefresh{......
  • JOISC 2018 题解
    JOISC2018loj上有几乎全部的题目,写了题意的就是loj上没有的。D1T1简单题。根据颜色段均摊的结论,每个点到根的路径上颜色段的总和是\(O(n\logn)\)的,于是直接每次暴力找颜色段即可。复杂度\(O(n\log^2n)\)。提交记录D1T2又是计算几何。我们需要画出一条闭合折线,并且......
  • P8670 [蓝桥杯 2018 国 B] 矩阵求和 题解
    题目传送门前置知识欧拉函数解法欧拉反演,简单地推下式子即可。\(\begin{aligned}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\gcd(i,j)^{2}&=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\sum\limits_{d=1}^{n}d^{2}[\gcd(i,j)=d]\\&=\sum\limits_{i=1}^{n}\sum......
  • P8666 [蓝桥杯 2018 省 A] 三体攻击
    这道题好像数据有问题?有些题解也会WA#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#include<string>#include<vector>#defineFor(i,j,n)for(inti=j;i<=n;++i)usingnamespacestd;constint......
  • Beaver triples/乘法三元组/乘法加密
    本文由BingAI/NewBing/Sydney根据这篇文章总结得出。首先,我们假设有两个参与方S1和S2,他们分别持有秘密值x和y的加法分享值x1和x2,y1和y2。也就是说,x=x1+x2,y=y1+y2。他们想要计算x和y的乘积,但是不想暴露自己的分享值。为了实现这个目的,他们需要在离线阶段预先生成一个......
  • 蓝桥杯考纲
    第十五届蓝桥杯大赛(软件赛)C&C++和Java组竞赛规则及说明.pdf(1)int能到10的9次方longlong能到10的19次方(2)(3)k=10^3Kilo(千)M=10^6Mega(百万)G=10^9Giga(十亿)T=10^12Tera(兆)P=10^15Peta(千兆)E=10^18Exa(百京)B=10^21Bronto(十垓)1TB=1024GB1GB=1024MB1MB=1024KB1KB=1024By......
  • 2.6 蓝桥杯练习5题
    2.6蓝桥杯练习5题1.[P3951NOIP2017提高组]小凯的疑惑/[蓝桥杯2013省]买不到的数目题意:小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的......
  • 2.5 蓝桥杯练习4题
    2.5蓝桥杯练习4题昨天忘记写题解啦,今天补上。1.[P8687蓝桥杯2019省A]糖果题意:糖果店的老板一共有\(M\)种口味的糖果出售。为了方便描述,我们将\(M\)种口味编号\(1\)∼\(M\)。小明希望能品尝到所有口味的糖果。遗憾的是老板并不单独出售糖果,而是\(K\)颗一包整包......
  • [BUUCTF 2018]Online Tool
    [BUUCTF2018]OnlineTool打开环境后显示如下的代码<?phpif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$_SERVER['REMOTE_ADDR']=$_SERVER['HTTP_X_FORWARDED_FOR'];}if(!isset($_GET['host'])){highlight_file(__FILE......