只有我做出来的题,仅记录
A题数出来的不知道对不对。
暴力
#include<bits/stdc++.h>
using namespace std;
//C ok
int main()
{
int n;
cin>>n;
vector<int> v(n);
for(int i=0;i<n;i++)
cin>>v[i];
long long sum = 0;
for(int i=0;i<n;i++)
{
for(int j=0;j<i;j++)
sum+=v[i]*v[j];
}
cout<<sum;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
//ok
int main()
{
long long n, m, x;
cin>>n>>m>>x;
vector<long long> v(n);
for(int i=0;i<n;i++)
cin>>v[i];
for(int i=0;i<m;i++)
{
long long l, r;
cin>>l>>r;
int flag = 0;
for(int j=l-1;j<=r-1 &&!flag;j++)
{
for(int k=j;k<r-1 && !flag;k++)
{
if(v[j] xor v[k] == x)
{
cout<<"yes"<<endl;
flag = 1;
break;
}
}
}
if(!flag)
cout<<"no"<<endl;
}
return 0;
}
动态规划
#include<bits/stdc++.h>
using namespace std;
//G ok
int main()
{
long n,k;
cin>>n>>k;
vector<long> nums(n);
for(int i=0;i<n;i++)
cin>>nums[i];
vector<long> dp(n);
dp[0] = 1;
for(int i=1;i<n;i++)
{
if(nums[i]>=nums[i-1]){
dp[i] = dp[i-1]+1;
}
else
{
int flag=0;
if(i+1<n)
{
for(int j=nums[i-1]+1;j<nums[i+1];j++)
{
flag=1;
break;
}
if(flag&&k)
{
dp[i] = dp[i-1]+1;
k--;
}
if(!flag)
dp[i] = 1;
}
}
}
sort(dp.begin(),dp.end());
cout<<dp[n-1];
return 0;
}
#include<bits/stdc++.h>
using namespace std;
//I ok
int main()
{
long t;
cin>>t;
for(int w=0;w<t;w++)
{
int flag=0;
long long a;
cin>>a;
for(int k=1;k<=a;k++)
{
for(int s=2;pow(k,s)<=a && s<a;s++)
{
long long num2 = (long long)pow(k, s);
if(num2==a)
{
cout<<"yes"<<endl;
flag=1;
}
}
}
if(!flag)
{
int flag2 = 0;
for(int i=2;i<a&&!flag2;i++)
{
for(int j=2;pow(i,j)<a&&!flag2;j++)
{
long long num1 = (long long)pow(i, j);
for(int k=2;k<sqrt(a)&&!flag2;k++)
{
for(int s=2;pow(k,s)<=a/num1;s++)
{
long long num2 = (long long)pow(k, s);
if(num1*num2==a)
{
cout<<"yes"<<endl;
flag2=1;
break;
}
if(num1*num2>a)
{
break;
}
}
}
}
}
if(!flag2)
cout<<"no"<<endl;
}
}
return 0;
}