本文主要是介绍HPU1012 QAQ的区间统计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1012: QAQ的区间统计 [思维]
时间限制: 1 Sec 内存限制: 128 MB提交: 305 解决: 77 统计
题目描述
对于区间[2,4][2,4]来讲,它的子区间有[2,2][2,3][2,4][3,3][3,4][4,4][2,2][2,3][2,4][3,3][3,4][4,4]共66个。
输入
每组数据输入两个整数L,RL,R,代表区间的端点。
注:1<=T<=1000000,0<=L<=R<=1000000001<=T<=1000000,0<=L<=R<=100000000。
输出
样例输入
2
1 6
1 5
样例输出
12
9
列举发现
长度 个数
1 1
2 2
3 4
4 6
5 9
6 12
长度为奇数:(len+1)/2整体再平方
长度为偶数:len/2*(len/2+1);
----------------------------------------------------------------------------------------------------------------
时间超限:
#include<iostream>
using namespace std;
int main()
{
int T;
long long L,R,len,n,ans;
cin>>T;
while(T--)
{
cin>>L>>R;
len=R-L+1;
if(len%2)
{
n=(len+1)/2;
ans=n*n;
//ans=(len+1)/2*(len+1)/2;
}
else
{
n=len/2;
ans=(n+1)*n;
// ans=len/2*(len/2+1);
}
cout<<ans<<endl;
}
return 0;
}
AC:
#include<stdio.h>int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long l,r;
scanf("%lld%lld",&l,&r);
long long len=r-l+1,ans,n;
if(len%2)
{
n=(len+1)/2;
ans=n*n;
}
else
{
n=len/2;
ans=n*(n+1);
}
printf("%lld\n",ans);
}
return 0;
}
这篇关于HPU1012 QAQ的区间统计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!