qqn
2026-03-15 09:14:00
发布于:浙江
T1
#include<bits/stdc++.h>
using namespace std;
const int MAXN=105;
int dp[MAXN][3];
int main()
{
int n;
cin>>n;
cin>>dp[0][0]>>dp[0][1]>>dp[0][2];
for(int i=1;i<n;i++)
{
int r,b,g;
cin>>r>>b>>g;
dp[i][0]=min(dp[i-1][1],dp[i-1][2])+r;
dp[i][1]=min(dp[i-1][0],dp[i-1][2])+b;
dp[i][2]=min(dp[i-1][0],dp[i-1][1])+g;
}
int ans=min(dp[n-1][0],min(dp[n-1][1],dp[n-1][2]));
cout<<ans<<"\n";
return 0;
}
T2
#include<bits/stdc++.h>
using namespace std;
const int MAXN=10010;
int dp[MAXN];
int main()
{
int n,a,b,c;
cin>>n>>a>>b>>c;
for(int i=1;i<=n;i++)
{
dp[i]=-1e9;
}
dp[0]=0;
for (int i=1;i<=n;i++)
{
if(i>=a)dp[i]=max(dp[i],dp[i-a]+1);
if(i>=b)dp[i]=max(dp[i],dp[i-b]+1);
if(i>=c)dp[i]=max(dp[i],dp[i-c]+1);
}
cout<<dp[n]<<"\n";
return 0;
}
T4
#include<bits/stdc++.h>
using namespace std;
using i64=long long;
const int N=2e5+10;
vector<int> edge[N];
i64 h[N],f1[N],f2[N];
int hb[N];
void dfs(int u)
{
i64 a=h[u],b=0;
for(int v:edge[u])
{
dfs(v);
a+=f1[v];
b+=max(f1[v],f2[v]);
}
f1[u]=b;
f2[u]=a;
//cout<<
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>h[i];
}
for(int i=1;i<n;i++)
{
int u,v;
cin>>u>>v;
if(u0&&v0) break;
edge[v].push_back(u);
hb[u]=1;
}
//dfs(1,0);
i64 ans=0;
for(int i=1;i<=n;i++)
{
if(hb[i]!=1)
{
dfs(i);
ans=max(f1[i],f2[i]);
}
}
cout<<ans<<"\n";
return 0;
}
T5
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=100010;
int h[N],e[N2],ne[N2],idx;
int n;
int ans=N;
void add(int a,int b)
{
e[idx]=b;
ne[idx]=h[a];
h[a]=idx++;
}
int dfs(int u,int fa)
{
int sz=1;
int maxchild=0;
for(int i=h[u];i!=-1;i=ne[i])
{
int v=e[i];
if(v==fa)continue;
int s=dfs(v,u);
sz+=s;
maxchild=max(maxchild,s);
}
maxchild=max(maxchild,n-sz);
ans=min(ans,maxchild);
return sz;
}
int main()
{
memset(h,-1,sizeof(h));
cin>>n;
for(int i=0;i<n-1;i++)
{
int a,b;
cin>>a>>b;
add(a,b);
add(b,a);
}
dfs(1,-1);
cout<<ans<<"\n";
return 0;
}
全部评论 1
d
昨天 来自 广东
0?我用来给我同学传答案的
昨天 来自 浙江
0我在刷罐头






昨天 来自 广东
0评论给几个罐头?
昨天 来自 浙江
0




















有帮助,赞一个