Lyft Level 5 Challenge 2018 - Elimination Round翻车记

  打猝死场感觉非常作死。

  A:判一下起点和终点是否在其两侧即可。

#include<iostream> 
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
    int x=0,f=1;char c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return x*f;
}
#define N 
int n,ax,ay,bx,by,cx,cy;
int main()
{
    n=read(),ax=read(),ay=read(),bx=read(),by=read(),cx=read(),cy=read();
    if (bx<ax&&cx>ax||bx>ax&&cx<ax||by<ay&&cy>ay||by>ay&&cy<ay) cout<<"NO";
    else cout<<"YES";
    return 0;
}
View Code

  B:由平方差公式,当且仅当a-b=1且a+b为质数时a2-b2是质数。

#include<iostream> 
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
    int x=0,f=1;char c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return x*f;
}
#define ll long long 
int T;
ll n,m;
int main()
{
    T=read();
    while (T--)
    {
        cin>>n>>m;
        ll a=n+m,b=n-m;
        if (b>1) {cout<<"NO\n";continue;}
        bool flag=1; 
        for (ll i=2;i*i<=a;i++)
        if (a%i==0) {flag=0;break;}
        if (flag) cout<<"YES\n";
        else cout<<"NO\n";
    }
    return 0;
}
View Code

  C:若后继状态都为必胜态则该状态为必败态,否则为必胜态。可以按数从大到小暴力更新,由调和级数复杂度是有保证的。

#include<iostream> 
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
    int x=0,f=1;char c=getchar();
    while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
    while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
    return x*f;
}
#define N 100010
int n,a[N],id[N],flag[N];
int main()
{
    n=read();
    for (int i=1;i<=n;i++) id[a[i]=read()]=i;
    memset(flag,255,sizeof(flag));
    flag[id[n]]=0;
    for (int i=n-1;i>=1;i--) 
    {
        int x=id[i];
        for (int j=x-i;j>=1;j-=i)
        if (a[j]>i&&!flag[j]) {flag[x]=1;break;}
        if (flag[x]==-1)
        for (int j=x+i;j<=n;j+=i)
        if (a[j]>i&&!flag[j]) {flag[x]=1;break;}
        if (flag[x]==-1) flag[x]=0;
    }
    for (int i=1;i<=n;i++) if (flag[i]) printf("A");else printf("B");
    return 0;
}
View Code

  D:因子个数在3~5之间仅有这几种情况:pq,p2,p3,p4。对于p的幂次情况可以直接开方计算,将所有所得质数保存下来。然后考虑pq,将这个数除掉其与之前出现的所有质数的gcd,剩下的就是新出现的质因子了。开始直接交了一发泼辣的肉不出意外的T掉了。然后可能因为太晚了脑子不清醒,以奇怪的方式开始码正解,前前后后交了五次最后还是fst掉了。

  E、F、G:怎么可能会啊。

  result:rank437 rating+7

 

转载于:https://www.cnblogs.com/Gloid/p/9753730.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值