2021年5.21NCU第四届校赛
比赛地址:http://222.204.50.106/contest/39
A 树上祖先
链接:http://222.204.50.106/contest/39/problem/A
B 莎士比亚
链接:http://222.204.50.106/contest/39/problem/B
C 益智游戏
链接:http://222.204.50.106/contest/39/problem/C
题意:
题解:
注意:
暴力。。。。以后看见奇偶一定直接输出
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,t;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
if(m%2 == 0) puts("No");
else puts("Yes");
}
return 0;
}
D 神奇魔法
链接:http://222.204.50.106/contest/39/problem/D
E 我全都要
链接:http://222.204.50.106/contest/39/problem/E
F 二零二一
链接:http://222.204.50.106/contest/39/problem/F
题意:
两个有顺序的数之间差是2021的整数倍的对数
题解:
求余数组合一下就好了
注意:
代码:
#include<bits/stdc++.h>
using namespace std;
long long a[100005],b[4000],vis[4000];
int main()
{
int n;
cin>>n;
long long ans=0;
memset(b,0,sizeof(b));
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
{
cin>>a[i];
a[i]%=2021;
vis[a[i]]=1;
b[a[i]]++;
}
for(int i=0;i<2021;i++)
{
if(vis[i])ans+=b[i]*(b[i]-1)/2;
}
cout<<ans<<endl;
return 0;
}
G 小学数学
链接:http://222.204.50.106/contest/39/problem/G
题意:
从给定中挑出三个点形成的三角形的面积最大值
题解:s=1/2(x1y2+x2y3+x3y1-x1y3-x2y1-x3y2)
注意:记得加绝对值
代码:
#include<bits/stdc++.h>
using namespace std;
struct node {
long long x,y;
}data[1000],point1,point2,point3;
struct Node{
int x,y,z;
}T;
int main()
{
int n;cin>>n;long long ans=0;
for(int i=0;i<n;i++)cin>>data[i].x>>data[i].y;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
for(int k=j+1;k<n;k++)
{
long long t=data[i].x*data[j].y+data[j].x*data[k].y+data[k].x*data[i].y-data[i].x*data[k].y-data[j].x*data[i].y-data[k].x*data[j].y;
t=abs(t);
if(ans<t){
T.x=i;
T.y=j;
T.z=k;
ans=t;
}
}
}
}
cout<<T.x<<" "<<T.y<<" "<<T.z<<endl;
//cout<<ans;
return 0;
}
H 糖果齁咸
链接:http://222.204.50.106/contest/39/problem/H
题意:
随机选取几个糖果,每次取最大值和最小值得乘积,求和
题解:
一个类似于等比数列的玩意儿,稍微列一下,找规律就行
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const long long mod=998244353;
int main()
{
int n;
ll a[200005];
cin>>n;ll ans=0,sum=0;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
sum=(sum-a[i-1])*2+a[i-1];
sum+=a[i];
sum=(sum%mod+mod)%mod;
ans+=sum*a[i]%mod;
ans%=mod;
}
cout<<ans;
return 0;
}
I ZYC as Polizei
链接:http://222.204.50.106/contest/39/problem/I
题意:已知距离,坐标,求另一个点坐标
题解:
坐标列一下
注意:
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double a,b,c;
double d1,d2,d3;
cin>>a>>b>>c>>d1>>d2>>d3;
double x,y;
x=(d1*d1-d2*d2+a*a)/(2*a);
y=(d1*d1-d3*d3+b*b+c*c-2*b*x)/(2*c);
printf("(%.3lf,%.3lf)",x,y);
return 0;
}
J 合理内卷
链接:http://222.204.50.106/contest/39/problem/J
题意:
某个数选择了在它旁边的两个数值就不能选择,找到一个最优的解
题解:
DP大法
注意:
long long(s数据较大,遇事不决开long long)
代码:
#include<bits/stdc++.h>
using namespace std;
long long data[100005],dp[100005];
int main()
{
long long n,x,maxn=0;
cin>>n;
memset(data,0,sizeof(data));
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
{
cin>>x;
dp[x]+=x;
}
for(int i=1;i<=n;i++)
{
if(i>2)dp[i]+=dp[i-2];
dp[i]=max(dp[i],dp[i-1]);
maxn=max(dp[i],maxn);
}
cout<<maxn;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具