T1 立方数(cubic)

Time Limit:1000ms   Memory Limit:128MB

题目描述

LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数,例如1,8,27就是最小的3个立方数。

现在给定一个数P,LYK想要知道这个数是不是立方数。

当然你有可能随机输出一些莫名其妙的东西来骗分,因此LYK有T次询问~

输入格式(cubic.in)

第一行一个数T,表示有T组数据。

接下来T行,每行一个数P。

输出格式(cubic.out)

输出T行,对于每个数如果是立方数,输出“YES”,否则输出“NO”。

输入样例

3

8

27

28

输出样例

YES

YES

NO

数据范围

对于30%的数据p<=100。

对于60%的数据p<=10^6。

对于100%的数据p<=10^18,T<=100。

二分是否存在使p为立方数的数

 #include <cstdio>

 #define LL long long
inline void read(LL &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
LL L,R,Mid,tot; int Presist()
{
// freopen("1.txt","r",stdin);
freopen("cubic.in","r",stdin);
freopen("cubic.out","w",stdout);
LL t; read(t);
for(LL p; t--; )
{
read(p);bool flag=;
for(L=,R=1e6+; L<=R; )
{
Mid=L+R>>;
tot=Mid*Mid*Mid;
if(tot==p)
{
flag=;
break;
}
else if(tot<p) L=Mid+;
else if(tot>p) R=Mid-;
}
if(flag) puts("YES");
else puts("NO");
}
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}

AC

T2 立方数2(cubicp)

Time Limit:1000ms   Memory Limit:128MB

题目描述

LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数,例如1,8,27就是最小的3个立方数。

LYK还定义了一个数叫“立方差数”,若一个数可以被写作是两个立方数的差,则这个数就是“立方差数”,例如7(8-1),26(27-1),19(27-8)都是立方差数。

现在给定一个数P,LYK想要知道这个数是不是立方差数。

当然你有可能随机输出一些莫名其妙的东西,因此LYK有T次询问~

这个问题可能太难了…… 因此LYK规定P是个质数!

输入格式(cubicp.in)

第一行一个数T,表示有T组数据。

接下来T行,每行一个数P。

输出格式(cubicp.out)

输出T行,对于每个数如果是立方差数,输出“YES”,否则输出“NO”。

输入样例

5

2

3

5

7

11

输出样例

NO

NO

NO

YES

NO

数据范围

对于30%的数据p<=100。

对于60%的数据p<=10^6。

对于100%的数据p<=10^12,T<=100。

 #include <cstdio>

 #define LL long long
inline void read(LL &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
LL L,R,Mid,l,r,mid,tmp,x,y; inline int check(LL oo)
{
LL ret=;
for(l=,r=1e4+; l<=r; )
{
mid=l+r>>;
x=mid*mid*mid;
if(x==oo) return ;
else if(oo>x) l=mid+,ret=;
else if(oo<x) r=mid-,ret=-;
}
return ret;
} int Presist()
{
// freopen("1.txt","r",stdin);
// freopen("cubicp.in","r",stdin);
// freopen("cubicp.out","w",stdout);
LL t; read(t);
for(LL p; t--; )
{
read(p);bool flag=;
for(L=,R=1e4+; L<=R; )
{
Mid=L+R>>;
y=Mid*Mid*Mid;
tmp=check(y-p);
if(tmp==)
{
flag=;
break;
}
else if(tmp>) R=Mid-;
else if(tmp<) L=Mid+;
}
if(flag) puts("YES");
else puts("NO");
}
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}

考试的逗比二分

p=x^3-y^3=(x-y)*(x^2+x*y+y^2),因为p为素数,

所以x-y=1,所以x=y+1,可以枚举y,检验是否存在p

 #include <cstdio>

 #define LL long long
inline void read(LL &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} int Presist()
{
// freopen("cubicp.in","r",stdin);
freopen("cubicp.out","w",stdout);
LL t,tmp; read(t);
for(LL p; t--; )
{
read(p);bool flag=;
for(int y=; y<=1e6+; ++y)
{
tmp=3ll*y*y+3ll*y+;
if(tmp==p) { flag=;break; }
else if(tmp>p) break;
}
if(flag) puts("YES");
else puts("NO");
}
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}

AC

T3 猜数字(number)

Time Limit:1000ms   Memory Limit:128MB

题目描述

LYK在玩猜数字游戏。

总共有n个互不相同的正整数,LYK每次猜一段区间的最小值。形如[li,ri]这段区间的数字的最小值一定等于xi。

我们总能构造出一种方案使得LYK满意。直到…… LYK自己猜的就是矛盾的!

例如LYK猜[1,3]的最小值是2,[1,4]的最小值是3,这显然就是矛盾的。

你需要告诉LYK,它第几次猜数字开始就已经矛盾了。

输入格式(number.in)

第一行两个数n和T,表示有n个数字,LYK猜了T次。
    接下来T行,每行三个数分别表示li,ri和xi。

输出格式(number.out)

输出一个数表示第几次开始出现矛盾,如果一直没出现矛盾输出T+1。

输入样例

20 4

1 10 7

5 19 7

3 12 8

1 20 1

输出样例

3

数据范围

对于50%的数据n<=8,T<=10。

对于80%的数据n<=1000,T<=1000。

对于100%的数据1<=n,T<=1000000,1<=li<=ri<=n,1<=xi<=n(但并不保证一开始的所有数都是1~n的)。

二分不可行的最早次数,从大到小枚举x,

对于一段区间,如果被>x的数覆盖过,则不可行,

判断比xi大的区间的并集是否完全覆盖当前区间,xi相等时,更新区间的交

可以用并查集,将确定最小值的区间放到一个并查集里,

 #include <algorithm>
#include <cstdio> #define min(a,b) (a<b?a:b)
#define max(a,b) (a>b?a:b) inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
const int N();
int n,q;
struct Node {
int l,r,x;
bool operator < (const Node&a)const
{
return x>a.x;
}
}g[N],tmp[N]; int L,R,Mid,ans;
int fa[N],lmin,lmax,rmin,rmax;
int find(int x)
{
return fa[x]==x ?x :fa[x]=find(fa[x]);
}
inline bool check(int t)
{
for(int i=; i<=n+; ++i) fa[i]=i;
for(int i=; i<=t; ++i) tmp[i]=g[i];
std:: sort(tmp+,tmp+t+);
lmin=lmax=tmp[].l, rmin=rmax=tmp[].r;
for(int i=,j,k; i<=t; ++i)
{
if(tmp[i].x<tmp[i-].x)
{
if(find(lmax)>rmin) return ;
j=find(lmin), k=find(rmax+);
for(; j<=rmax; ++j) fa[find(j)]=k;
lmax=lmin=tmp[i].l;
rmax=rmin=tmp[i].r;
}
else
{
lmin=min(lmin,tmp[i].l);
lmax=max(lmax,tmp[i].l);
rmin=min(rmin,tmp[i].r);
rmax=max(rmax,tmp[i].r);
if(lmax>rmin) return ;
}
}
return find(lmax)>rmin;
} int Presist()
{
freopen("number.in","r",stdin);
freopen("number.out","w",stdout); read(n),read(q);
for(int i=; i<=q; ++i)
read(g[i].l),read(g[i].r),read(g[i].x);
for(R=n; L<=R; )
{
Mid=L+R>>;
if(check(Mid))
{
ans=Mid;
R=Mid-;
}
else L=Mid+;
}
printf("%d\n",ans);
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}

AC

2017-10-28-morning-清北模拟赛的更多相关文章

  1. 2017.10.1 国庆清北 D1T1 zhx的字符串题

    题目背景 2017国庆清北D1T1 题目描述 你是能看到第一题的 friends 呢. ——hja 何大爷对字符串十分有研究,于是天天出字符串题虐杀 zhx.何大爷今天为 字符串定义了新的权值计算方法 ...

  2. 2017.10.3北京清北综合强化班DAY3

    括号序列(bracket) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一个括号序列,但这个序列不一定合法. 一个合法的括号序列如下: ()是合法的 ...

  3. 2017.10.4北京清北综合强化班DAY4

    财富(treasure) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是以 ...

  4. 2017.10.7北京清北综合强化班DAY7

    1.计数 (count.cpp/c/pas) 时间限制:1s 内存限制:256MB [问题描述] 给出m个数a[1],a[2],…,a[m] 求1~n中有多少数不是a[1],a[2],…,a[m]的倍 ...

  5. 2017.10.6北京清北综合强化班DAY6

    题目大意:改变一个数的位置 把一个序列变成不下降序列 题解: 设置一个pre,如果破坏单调性,就把‘删除’这个.否则把pre修改为当前元素的值. 考试时这样得了90分,是因为我的做法只能过这样的数据 ...

  6. 2017.10.5北京清北综合强化班DAY5

    拼不出的数lost.in/.out/.cpp[问题描述]3 个元素的集合{5, 1,2} 的所有子集的和分别是0,1, 2, 3, 5, 6, 7, 8.发现最小的不能由该集合子集拼出的数字是4.现在 ...

  7. 2017.10.1北京清北综合强化班DAY1

    a[问题描述]你是能看到第一题的 friends 呢.——hja何大爷对字符串十分有研究,于是天天出字符串题虐杀 zhx. 何大爷今天为字符串定义了新的权值计算方法.一个字符串 由小写字母组成,字符串 ...

  8. 2017.10.4 国庆清北 D4T2 正方形

    题目描述 在一个10000*10000的二维平面上,有n颗糖果. LYK喜欢吃糖果!并且它给自己立了规定,一定要吃其中的至少C颗糖果! 事与愿违,LYK只被允许圈出一个正方形,它只能吃在正方形里面的糖 ...

  9. 2017.10.6 国庆清北 D6T2 同余方程组

    题目描述 求关于x 的同余方程组 x%a1 = b1 x%a2 = b2 x%a3 = b3 x%a4 = b4 的大于等于0 的最小整数解. 输入输出格式 输入格式: 一行8 个整数,表示a1; b ...

  10. 2017.10.6 国庆清北 D6T1 排序

    题目描述 小Z 有一个数字序列a1; a2; .... ; an,长度为n,小Z 只有一个操作:选 定p(1<p<n),然后把ap 从序列中拿出,然后再插⼊到序列中任意位置. 比如a 序列 ...

随机推荐

  1. Bootstrap历练实例:小的按钮

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  2. Bootstrap历练实例:大的按钮

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  3. vsftp配置日志及其启用本地时间

    vsftp配置日志及其启用本地时间 1. 启用vsftp日志 xferlog_enable=YES xferlog_std_format=YES xferlog_file=/var/log/xferl ...

  4. 低性能3张图片轮播React组件

    import React from 'react'; import {getSwipeWay} from '../utils/swipe'; class Carousel extends React. ...

  5. 167. Two Sum II - Input array is sorted@python

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  6. DOM事件总结

    1.DOM事件: DOM0: element.onclick=function(){} DOM2: element.addEventListener(‘click’,function(){}) add ...

  7. perl之更多的控制结构

    1.unless/if结构 unless 条件为假的时候 才执行语句块. eg: unless($fred =~ /^[A-Z_]\w*$/i){ print "The value of \ ...

  8. Linux 特殊权限位简介

    suid.guid suid 针对二进制命令或者程序,让其拥有root或者属主权限执行 一.setsuid : chmod 4755 二进制命令或者程序 chmod u+s   二进制命令或者程序 示 ...

  9. ERROR! The server quit without updating PID file (/usr/local/var/mysql/bogon.pid).

    本文转载自http://www.jb51.net/article/48625.htm 今天网站web页面提交内容到数据库,发现出错了,一直提交不了,数找了下原因,发现数据写不进去!第一反应,重启mys ...

  10. C#学习基础概念二十五问

    C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...