Codeforeces Gym - 101733D Triangle Construction [想法]
2018-03-30 13:49
441 查看
题意:给你n个数,m个询问,每次询问[L,R]范围内是否能够成三角形。
题解:我们可以得知,三角形不能成立的情况是斐波那契数列,由于a[i]最多是10^18次,所以最多包含91个数,所以对于区间长度是大于92的话,是必定有解,所以对于每个询问,最多取92个数,然后再sort这些数一次判就可以了。
AC代码:
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
struct node
{
ll id,w;
node(){}
node(ll id,ll w)
{
this->id=id;
this->w=w;
}
}b[105];
bool operator<(node a,node b)
{
return a.w<b.w;
}
ll a[300005],tot;
int main()
{
ll n,m;
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=n;i++)
scanf("%lld",&a[i]);
while(m--)
{
tot=0;
ll l,r;
scanf("%lld%lld",&l,&r);
r=min(r,l+92);
for(ll i=l;i<=r;i++)
b[tot++]=node(i,a[i]);
sort(b,b+tot);
ll flag=0;
for(ll i=0;i<tot-2;i++)
if(b[i].w+b[i+1].w>b[i+2].w)
{
flag=1;
printf("%lld %lld %lld\n",b[i].id,b[i+1].id,b[i+2].id);
break;
}
if(!flag)printf("-1\n");
}
}
题解:我们可以得知,三角形不能成立的情况是斐波那契数列,由于a[i]最多是10^18次,所以最多包含91个数,所以对于区间长度是大于92的话,是必定有解,所以对于每个询问,最多取92个数,然后再sort这些数一次判就可以了。
AC代码:
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
struct node
{
ll id,w;
node(){}
node(ll id,ll w)
{
this->id=id;
this->w=w;
}
}b[105];
bool operator<(node a,node b)
{
return a.w<b.w;
}
ll a[300005],tot;
int main()
{
ll n,m;
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=n;i++)
scanf("%lld",&a[i]);
while(m--)
{
tot=0;
ll l,r;
scanf("%lld%lld",&l,&r);
r=min(r,l+92);
for(ll i=l;i<=r;i++)
b[tot++]=node(i,a[i]);
sort(b,b+tot);
ll flag=0;
for(ll i=0;i<tot-2;i++)
if(b[i].w+b[i+1].w>b[i+2].w)
{
flag=1;
printf("%lld %lld %lld\n",b[i].id,b[i+1].id,b[i+2].id);
break;
}
if(!flag)printf("-1\n");
}
}
相关文章推荐
- Codeforeces Gym - 101234G Dreamoon and NightMarket [想法]
- Codeforces gym 101149 G 想法
- Codeforces gym 101350F 想法
- Codeforces gym 101149 K 想法
- Codeforces Gym 100203D Different vectors 想法题 + Hash
- codeforces gym 100345I Segment Transformations [想法题]
- Codeforces gym 101102 K 想法
- Codeforces Gym - 101128C Canvas Painting [想法]
- Codeforeces Gym - 101635B Table [单调栈+DP]
- Codeforeces Gym-101064I Protecting the Central Park [dfs]
- CodeForces Gym 101620简要题解
- Codeforces Gym 100825F Transportation Delegation (最大流)
- [字典树 最小树形图] Codeforces Gym 100307 NEERC 13 D. Dictionary
- Codeforces Gym 100187K K. Perpetuum Mobile 构造
- Codeforces Gym 100231B Intervals 线段树+二分+贪心
- codeforce Gym 100500H ICPC Quest (简单dp)
- CodeForces Gym 100989L Plus or Minus (A) DFS
- codeforces gym-101745 D-Stamp Stamp Stamp动态规划
- Codeforces Gym 100342E Problem E. Minima 暴力
- Codeforces Gym 100342C Problem C. Painting Cottages 转化题意