#include <iostream>
#include <algorithm>
using namespace std;
const int N=500010;
int a[N];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int ans=0;
for(int i=0;i<n;i++)//枚举左端点
{
int max1=0,min1=99999;
for(int j=i;j<n;j++)//枚举右端点
{
max1=max(max1,a[j]);
min1=min(min1,a[j]);
if(max1-min1==j-i) ans++;
}
}
cout<<ans;
// 请在此输入您的代码
return 0;
}
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 100010;
typedef long long LL;
int n;
int a[N],b[N],c[N];
int as[N];//as[i]表示在A[]中有多少个数小于b[i]
int cs[N];//cs[i]表示在C[]中有多少个数大于b[i]
int cnt[N],s[N];
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]),a[i]++;
for(int i=0;i<n;i++) scanf("%d",&b[i]),b[i]++;
for(int i=0;i<n;i++) scanf("%d",&c[i]),c[i]++;
//求as
for(int i=0;i<n;i++) cnt[a[i]]++;
for(int i=1;i<N;i++) s[i]=s[i-1]+cnt[i];
for(int i=0;i<n;i++) as[i]=s[b[i]-1];
//cs
memset(cnt,0,sizeof cnt);
memset(s,0,sizeof s);
for(int i=0;i<n;i++) cnt[c[i]]++;
for(int i=1;i<N;i++) s[i]=s[i-1]+cnt[i];
for(int i=0;i<n;i++) cs[i]=s[N-1]-s[b[i]];
LL res=0;
for(int i=0;i<n;i++)
{
res+=(LL)as[i]*(LL)cs[i];
}
cout<<res;
// 请在此输入您的代码
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int n,ans=0;
cin>>n;
for(int i=1;i<=n;i++)
{
int x=i;
while(x)
{
int t=x%10;
x=x/10;
if(t==2||t==0||t==1||t==9)
{
ans+=i;
break;
}
}
}
cout<<ans;
// 请在此输入您的代码
return 0;
}
#include <iostream>
#include <sstream>
#include <algorithm>
#include <cstring>
int n;
const int N=100010;
int a[N];
using namespace std;
int main()
{
int cnt;
cin>>cnt;
string line;
getline(cin,line);
while(cnt--)
{
getline(cin,line);
stringstream ssin(line);
while(ssin>>a[n]) n++;
}
sort(a,a+n);
int res1,res2;
for(int i=1;i<n;i++)
{
if(a[i]==a[i-1]) res2=a[i];
else if(a[i]>=a[i-1]+2) res1=a[i]-1;
}
cout<<res1<<' '<<res2<<endl;
// 请在此输入您的代码
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check_valid(int date)
{
int year = date/10000;
int month = date%10000/100;
int day = date%100;
if(month==0||month>12) return false;
if(day==0||month!=2&&day>days[month]) return false;
if(month==2)
{
int leap = year%100&&year%4==0||year%40==0;
if(day>28+leap)
{
return false;
}
}
return true;
}
bool check_AB(int date)
{
int a1=date/1000000;
int a2=(date/10000)%100;
int a3=(date%10)*10+(date/10)%10;
int a4=((date/100)%10)*10+(date/1000)%10;
if(a1==a2&&a2==a3&&a3==a4)
{
return true;
}
else return false;
}
int main()
{
int date1,f1=0,f2=0;
cin>>date1;
for(int i=1000;i<10000;i++)
{
int date=i,x=i;
for(int j=0;j<4;j++) date = date*10+x%10,x/=10;
if(date1<date&&check_valid(date)&&f1==0){
cout<<date<<endl;
f1++;
}
if(date1<date&&check_valid(date)&&check_AB(date)&&f2==0){
cout<<date<<endl;
f2++;
}
}
// 请在此输入您的代码
return 0;
}
本题可以通过曼哈顿距离公式得到结果。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int w,m,n;
cin>>w>>m>>n;
m--,n--;
int x1=m/w,x2=n/w;
int y1=m%w,y2=n%w;
if(x1%2) y1=w-1-y1;
if(x2%2) y2=w-1-y2;
cout<<abs(x1-x2)+abs(y1-y2)<<endl;
// 请在此输入您的代码
return 0;
}