上午发挥强差人意.心态不好,编译器一直报错,心里比较慌。

t1 每一个P枚举底数 .可二分

T2 暴力30  打标60

x^3-y^3=(x-y)*(x^2+xy+y^2). x-y==1.  !

p不是素数,枚举x-y=d。

T3 二分 或 枚举看是否可行难得

  判定:是否有矛盾,贪心 X排 从大到小

    对样例  x相同的合并

        线段树,交区间没被覆盖,并区间赋值1,最小值。n logn^2

    并查集操作f[i]右边空位,n logn 小于等于R

  二分

  50分枚举某个数

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。

思路:

  如果允许的话,你可以打一个10^6的表。

  不打表的话,可以预处理1~0^18以内的立方数,也就10^6个。

  然后判断 所给的数P是否在这些数中。

我不得不吐槽一下,本来是这样想的,但是lower_bound()。一直在报错,还有许多地方报错。我就蒙了,心理素质太差。!!!.

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#include<vector>
#include<cmath>
#include<ctime>
using namespace std;
long long t,p,x;
const int N=1e4;
long long a[N+]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,};
struct node{
long long p;
int id;
bool is;
}q[];
bool cmp(node a,node b)
{ return a.p<b.p;}
bool cmpp(node a,node b)
{ return a.id<b.id;}
inline long long read()
{
long long x = , f = ;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -;
for(; isdigit(ch); ch = getchar()) x = (x << ) + (x << ) + ch - '';
return x * f;
} int main()
{
freopen("cubic.in","r",stdin);
freopen("cubic.out","w",stdout);
scanf("%lld",&t);
for(int i=;i<=t;i++)
scanf("%lld",&q[i].p),q[i].id =i;
sort(q+,q++t,cmp);
for(int i=,j=;i<=t;i++)
{
for(j;j<=N;j++)
{
if(a[j]>q[i].p) break;
}
if(a[j-]==q[i].p) q[i].is=;
}
sort(q+,q++t,cmpp);
for(int i=;i<=t;i++)
if(q[i].is)
printf("YES\n");
else printf("NO\n");
return ;
}

第一遍60分

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#include<vector>
#include<cmath>
#include<ctime>
using namespace std;
const int N=1e6;
long long f[N+],x;
int t,wh;
int main()
{
freopen("cubic.in","r",stdin);
freopen("cubic.out","w",stdout);
for(int i=;i<=N;i++)
f[i]=1LL*i*i*i;
scanf("%d",&t);
for(int i=;i<=t;i++)
{
scanf("%lld",&x);
wh=lower_bound(f+,f+N+,x)-f;
if(f[wh]==x) printf("YES\n");
else printf("NO\n"); }
return ;
}

AC

立方数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 <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>
#include<set>
#include<string>
using namespace std;
int t;
long long x;
const int N=1e6+;
bool ok=;
int main()
{
freopen("cubicp.in","r",stdin);
freopen("cubicp.out","w",stdout);
scanf("%d",&t);
for(int i=;i<=t;i++)
{
scanf("%lld",&x);
ok=;
for(int i=;i<=N;i++)
{
if(3LL*i*i-3LL*i+==x)
{
ok=;
break;
}
if(3LL*i*i-3LL*i+>x) break;
}
if(ok) printf("YES\n");
else printf("NO\n");
}
return ;
}

AC

猜数字(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的)。

Hint

建议使用读入优化

inline int read()

{

int
x = 0, f = 1;

char
ch = getchar();

for(;
!isdigit(ch); ch = getchar()) if(ch == '-') f = -1;

for(;
isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';

return
x * f;

a#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#include<vector>
#include<cmath>
#include<ctime>
using namespace std;
const int N=;
int f[N];
struct node{
int l,r;
int x;
}q[N],t[N];
int n,T;
bool cmp(node a,node b)
{ return a.x>b.x;}
int find(int x)
{
while(x!=f[x])
x=f[x]=f[f[x]];
return x;
}
bool check(int k)
{ for(int i=;i<=n;i++) f[i]=i;
for(int i=;i<=k;i++) t[i]=q[i];
sort(t+,t++k,cmp);
int lmin,lmax,rmin,rmax;
lmin=lmax=t[].l; rmax=rmin=t[].r;
for(int i=;i<=k;i++)
{
if(t[i].x<t[i-].x)
{
if(find(lmax)>rmin) return ;
for(int j=find(lmin);j<=rmax;j++)
f[find(j)]=find(rmax+);
lmax=lmin=t[i].l;
rmax=rmin=t[i].r;
}else
{
lmax=max(lmax,t[i].l);
lmin=min(lmin,t[i].l);
rmin=min(rmin,t[i].r);
rmax=max(rmax,t[i].r);
if(lmax>rmin) return ;
}
}
if(find(lmax)>rmin) return ;
return ;
}
int main()
{
// freopen("number.in","r",stdin);
// freopen("number.out","w",stdout);
scanf("%d%d",&n,&T);
for(int i=;i<=T;i++)
scanf("%d%d%d",&q[i].l ,&q[i].r,&q[i].x);
int L,R,mid;
L=,R=T+;
while(L<=R)
{
mid=(L+R)>>;
if(check(mid)) R=mid-;
else L=mid+;
}
for(int i=R-;i<=L+;i++)
if(check(i))
{
printf("%d",i);
return ;
}
return ;
}

AC

Day1上的更多相关文章

  1. Day1 [上]- 认识Python

    python简单介绍: python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...

  2. Python基础Day1—上

    一.计算机基础 CPU:中央处理器,相当于人的大脑:运算中心与控制中心的结合. 内存:临时存储数据,与CPU交互. 硬盘:永久存储数据. 内存的优点:读取速度快 内存的缺点:容量小,造价高,断电数据会 ...

  3. NOIP 2018 记

    “这个时刻总是会来临的,日夜磨砺的剑锋,能否在今天展现出你的利刃呢?” 十一月十一日的紫荆港,早上的空气有些冷瑟.面对未知的$Day1$,我的心里尚且没有多少底数. $T1$是一道原题,也不难,并没有 ...

  4. NOI Day1线上同步赛梦游记

    Preface 第一次体验NOI,虽然不是正式选手,但是打打同步赛还是挺涨姿势的,也算是体验了一把. Day1很爆炸,一方面是NOI题目的难度高于自身的水平,另一方面也出现了比较大的失误,T1一个数组 ...

  5. python(3.x)自动化全栈开发100天集训计划(跟上进度,到一个新高度)——day1

            Day1 目录: Python介绍 * 了解Python的特点.发展史 * 介绍Python广泛的应用领域和前景 第一个Python程序 * 掌握Python代码的2种执行方式 变量 ...

  6. [CISCN2019 华北赛区 Day1 Web1]Dropbox-phar文件能够上传到服务器端实现任意文件读取

    0x00知识点 phar是什么: 我们先来了解一下流包装 大多数PHP文件操作允许使用各种URL协议去访问文件路径:如data://,zlib://或php://.例如常见的 include('php ...

  7. day1 三位数各个位上的数字和

    int main(){ int x = 0; scanf("%d", &x); if (x > 999 || x < 0) { printf("输入错 ...

  8. 记lrd的高二上学期第五次调研考试

    河北某某中学的调研考试其实是很好玩的经历呢.可惜没有太多机会了. 背景: NOIP2016回来之后没有好好学文化课-.自习能翘就翘了,衡中特产学案自助没有好好写(说来我好像从来没被老师查到过,上课写学 ...

  9. NOIp2016 Day1&Day2 解题报告

    Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...

随机推荐

  1. HTML input 标签不可编辑的 readonly 属性

    1 <form action="form_action.asp" method="get"> Name:<input type="t ...

  2. shell入门-系统和用户的配置文件

    变量分为系统变量和用户自定义变量,他们的配置文件当然分为系统环境变量配置文件和用户环境变量控制文件 1.规定环境变量的配置文件 [root@wangshaojun 111]# vim /etc/pro ...

  3. Java 决策制定

    有两种类型的决策在Java中的语句,它们分别是: if 语句 switch 语句 if 语句: if语句由一个布尔表达式后跟一个或多个语句. 语法: if语句的语法是: if(Boolean_expr ...

  4. python fabric的安装与使用

    背景:fabric主要执行远程的shell命令,包括文件的上传.下载,以及提示用户输入等辅助其它功能. 测试系统:ubuntu16 要求:python //系统有自带,ubuntu16 通常自带pyt ...

  5. 向PCD文件写入点云数据

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=83 本小节我们学习如何向PCD文件写入点云数据. 代码 章例2文件夹中,打开 ...

  6. 2、perl模块查询安装否

    1.Perl 中每个包有一个单独的符号表,定义语法为:package mypack; 此语句定义一个名为 mypack 的包,在此后定义的所有变量和子程序的名字都存贮在该包关联的符号表中,直到遇到另一 ...

  7. idea调试SpringMvc, 出现:”Can't find catalina.jar"错误的解决方法

    用gradle构建的项目,点击运行出现以下错误提示: Error running PraticeWeb: Can't find catalina.jar 21:54 Error running Pra ...

  8. 【Linux入门】

    文件系统结构:倒树状: 文件命名规则: Windows  8.3的命名规则:文件名8位以内,后缀名3位以内 linux中隐藏文件的方式:在文件名称前面加.  eg: 1.txt===> .1.t ...

  9. Note: PANOPLY: Low-TCB Linux Applications with SGX Enclaves

    PANOPLY provides middleware for SGX and Linux operating systems. What PANOPLY provides middleware fo ...

  10. Swoole 整合成一个小框架

    目录 概述 效果 代码 小结 概述 这是关于 Swoole 学习的第六篇文章:Swoole 整合成一个小框架. 第五篇:Swoole 多协议 多端口 的应用 第四篇:Swoole HTTP 的应用 第 ...