题目链接

T1

1e18 内的立方数有 1e6个

直接枚举可过

二分最优

考场用set  死慢。。

#include <cstdio>
int t;
long long p;
int main(int argc,char *argv[])
{
    freopen("cubic.in","r",stdin);
    freopen("cubic.out","w",stdout);
    scanf("%d",&t);
    while(t--)
    {
        scanf("%I64d",&p);
        ,r=;
        for(long long mid;l<=r;)
        {
            mid=(l+r)>>;
            ;
            ;
            else {puts("YES");goto flag;}
        }
        puts("NO");
        flag:;
    }
    fclose(stdin); fclose(stdout);
    ;
}

T2

p=a^3-b^3

由立方差公式 a^3-b^3=(a-b)*(a^2+ab+b^2)

因为p是素数 所以 a-b=1;

二分即可

#include <cstdio>
int t;
long long p;
int main(int argc,char *argv[])
{
    freopen("cubicp.in","r",stdin);
    freopen("cubicp.out","w",stdout);
    scanf("%d",&t);
    while(t--)
    {
        scanf("%I64d",&p);
        ,r=;
        for(long long mid;l<=r;)
        {
            mid=(l+r)>>;
            )+(mid+)*(mid+)>p) r=mid-;
            )+(mid+)*(mid+)<p) l=mid+;
            else {puts("YES");goto flag;}
        }
        puts("NO");
        flag:;
    }
    fclose(stdin); fclose(stdout);
    ;
}

T3

二分答案

线段树维护区间

#include <algorithm>
#include <cctype>
#include <cstdio>
#define N 1000005
using namespace std;

struct node
{
    int l,r,x,t;
    bool operator<(node a)const
    {
        return x>a.x;
    }
}a[N],b[N];
inline void read(int &x)
{
    register char ch=getchar();
    ;!isdigit(ch);ch=getchar());
    +ch-',ch=getchar());
}
|],val[N<<|];
void build(int k,int l,int r)
{
    flag[k]=;
    ;return;}
    ;
    build(k<<,l,mid);
    build(k<<|,mid+,r);
    val[k]=min(val[k<<],val[k<<|]);
}
void down(int k)
{
    val[k<<]=flag[k];
    val[k<<|]=flag[k];
    flag[k<<]=flag[k];
    flag[k<<|]=flag[k];
    flag[k]=;
}
int query(int k,int l,int r,int x,int y)
{
    if(l>=x&&r<=y) return val[k];
    ,ret=0x7fffffff;
    if(flag[k]) down(k);
    ,l,mid,x,y));
    |,mid+,r,x,y));
    val[k]=min(val[k<<],val[k<<|]);
    return ret;
}
void modify(int k,int l,int r,int x,int y,int v)
{
    if(l>=x&&r<=y) {flag[k]=val[k]=v;return;}
    ;
    if(flag[k]) down(k);
    ,l,mid,x,y,v);
    |,mid+,r,x,y,v);
    val[k]=min(val[k<<],val[k<<|]);
}
bool check(int k)
{
    build(,,n);
    ;i<=k;++i) b[i]=a[i];
    sort(b+,b++k);
    int lmax,lmin,rmax,rmin;
    ;i<=k;)
    {
        int j,x=b[i].x;
        lmax=b[i].l,rmax=b[i].r,lmin=b[i].l,rmin=b[i].r;
        ;b[j].x==x&&j<=k;++j)
        {
            lmax=max(lmax,b[j].l);
            lmin=min(lmin,b[j].l);
            rmin=min(rmin,b[j].r);
            rmax=max(rmax,b[j].r);
            if(lmax>rmin) return true;
        }
        ,,n,lmin,rmax);
        if(re) return true;
        modify(,,n,lmin,rmax,b[i].x); i=j;
    }
    return false;
}
int main(int argc,char *argv[])
{
    freopen("number.in","r",stdin);
    freopen("number.out","w",stdout);
    read(n); read(t);
    ;i<=t;++i)
    {
        read(a[i].l); read(a[i].r); read(a[i].x);
        a[i].t=i;
    }
    ,l=,r=t;
    for(int mid;l<=r;)
    {
        mid=(l+r)>>;
        ;
        ;
    }
    printf("%d",ans);
    fclose(stdin); fclose(stdout);
    ;
}
#include <cstdio>
#include <iostream>
#include <algorithm>
#define N 1000011
#define min(x, y) ((x) < (y) ? (x) : (y))
#define max(x, y) ((x) > (y) ? (x) : (y))
using namespace std;
int n, q, ans;
int f[N];

struct node
{
    int x, y, z;
}p[N], t[N];

inline int read()
{
    , f = ;
    char ch = getchar();
    ;
    ) + (x << ) + ch - ';
    return x * f;
}

inline bool cmp(node x, node y)
{
    return x.z > y.z;
}

inline int find(int x)
{
    return x == f[x] ? x : f[x] = find(f[x]);
}

inline bool check(int k)
{
    int i, j, x, y, lmin, lmax, rmin, rmax;
    ; i <= n + ; i++) f[i] = i;
    ; i <= k; i++) t[i] = p[i];
    std::sort(t + , t + k + , cmp);
    lmin = lmax = t[].x;
    rmin = rmax = t[].y;
    ; i <= k; i++)
    {
        ].z)
        {
            ;
            for(j = find(lmin); j <= rmax; j++)
                f[find(j)] = find(rmax + );
            lmin = lmax = t[i].x;
            rmin = rmax = t[i].y;
        }
        else
        {
            lmin = min(lmin, t[i].x);
            lmax = max(lmax, t[i].x);
            rmin = min(rmin, t[i].y);
            rmax = max(rmax, t[i].y);
            ;
        }
    }
//    cout<<find(1)<<endl;
    ;
    ;
}

int main()
{
    freopen("number.in","r",stdin);
    freopen("number.out","w",stdout);
    int i, x, y, mid;
    n = read();
    q = read();
    ; i <= q; i++)
        p[i].x = read(), p[i].y = read(), p[i].z = read();
    x = , y = q;
    //cout<<check(2)<<endl;
    //return 0;
    ans = q + ;
    while(x <= y)
    {
        mid = (x + y) >> ;
        ;
        ;
    }
    printf("%d\n", ans);
    ;
}

std并查集维护

2017.10.28 QB模拟赛 —— 上午的更多相关文章

  1. 2017.10.28 QB模拟赛 —— 下午

    题目链接 T1 按x值排序 遇到第二种牌插入 遇到第一种牌 查询<=y 的最小值 删除他 splay multiset cys大佬说 multiset就是不去重的set, #include &l ...

  2. 2017 10.25 NOIP模拟赛

    期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w    O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意, ...

  3. 2017.10.7 QBXT 模拟赛

    题目链接 T1 容斥原理,根据奇偶性进行加减 #include<iostream> #include<cstdio> using namespace std; typedef ...

  4. 2017.10.3 QBXT 模拟赛

    题目链接 T1 模拟 #include <cstring> #include <cstdio> #define N 105000 int L,R; char s[N]; int ...

  5. 2017.10.6 QBXT 模拟赛

    题目链接 T1 Sort 一下与原数组比较 ,若有两个数或者没有数发生位置交换 ,则输出YES ,否则输出NO #include <algorithm> #include <ccty ...

  6. 2017.10.5 QBXT 模拟赛

    题目链接 T1 从小到大排序,用sum记录前缀和,然后枚举1~n个数 ,如果当前的前缀和 + 1小于a[i]的话 那么 sum + 1永远不可能拼出来 直接输出sum + 1 ,否则统计前缀和.最后如 ...

  7. 2017.10.4 QBXT 模拟赛

    题目链接 T1 维护一个单调栈 #include <iostream> #include <cstdio> #define N 500000 #define rep(a,b,c ...

  8. 2017.10.2 QBXT 模拟赛

    题目链接 T1 我们所要求得是(a*b)|x 也就是 使(a*b)的倍数小于x的个数之和 1<=x<=n 我们可以 找一个c使得 (a*b*c)<=x 由于我们所求的是一个三元有序对 ...

  9. 2017.10.1 QBXT 模拟赛

    题目链接 T1 枚举右端点,前缀和优化.对于当前点x,答案为 sum[x][r]-sum[x][l-1]-(sum[z][r]-sum[z][l-1]) 整理为 sum[x][r]-sum[z][r] ...

随机推荐

  1. C语言中的头文件

    1.头文件#include <> :表示引用标准库头文件,编译器会从系统配置的库环境中去寻找 2.头文件#include "":一般表示用户自己定义使用的头文件,编译器 ...

  2. P5019 铺设道路 (NOIP2018)

    传送门 NOIP2013原题 貌似官方数据都是一模一样的 以前写过竟然毫无印象? 考场上自己瞎JB推结论 显然,如果连续的两端区间可以左边区间减 k 次,右边区间也减 k 次 那么把两个区间合并起来一 ...

  3. 阿里云 Ubuntu14.04 部署 LAMP

    1.更新软件源 sudo apt-get update 2.安装Apache sudo apt-get install apache2 3.查看Apache是否安装成功 apache2 –v 如下所示 ...

  4. Autel MaxiSys Pro Description

    Autel MaxiSys pro MS908P is an evolutionary smart solution for specialized automotive diagnosis and ...

  5. CSS background 属性全家桶

    介绍我们都知道css的background属性是一个复合属性,可以简写成一行代码,也可以将每个属性分开来写. background 简写属性在一个声明中设置所有的背景属性.如:body{ backgr ...

  6. edis Cluster实现原理

    一.Redis Cluster主要特性和设计     集群目标 1)高性能和线性扩展,最大可以支撑到1000个节点:Cluster架构中无Proxy层,Master与slave之间使用异步replic ...

  7. Xshell设置主机名高亮

    修改后的效果: 操作步骤: 情况①:如果是Ubuntu或者Debian,按照下面的流程,两步解决: 打开~/.bashrc. 修改参数force_color_prompt=yes去掉前面的注释#. 情 ...

  8. Robotframework测试相关库

    一. 官网地址 http://robotframework.org/#libraries 二.几类测试所用到的常用库初步整理 1. UI自动化测试 Selenium2Library.BuiltIn(自 ...

  9. mysql忘记密码时,重新修改密码

    错误描述 1045 access denied for user 'root'@'localhost' using password yes 1045 access denied for user ' ...

  10. java语言编程实现两个时间相差多少天、多少小时、多少分、多少秒

    不多说,直接上干货! DateDistance.java package zhouls.bigdata.DataFeatureSelection.test; import java.text.Date ...