12.13
雪
班主任说明天带我们去玩雪,好。
今天有的班级去了,但是被年级主任 D 了,理由是“都没雪玩什么雪”,好像很有道理,但是今晚衡水暴雪所以明天就有雪了🏂🏂🏂
今天买了个本,很厚,之前我也买过两个一样大小的本,然后都写满了,一年写完一个,但是每次到分班都会丢失,导致我每年写的东西都会忘掉,可能这就是命中注定吧。
所以我在本的扉页上写了
新的班级,新的开始
一起努力吧
打算有一个持之以恒的习惯,包括但不限于每天在本子上写点什么,也许这才是所谓“随笔”吧,随意的去写才能体现“随”,但是又不能太随意,这样就没意义。
今天被吓到了
有一个女同学,今天突然跟我说昨天晚上梦到我了,那个同学不好评价,反正我听完感觉心脏都骤停了,我想活久一点。
晦气
今天写了错过的若干模拟赛题。
最大生成树
看似最大生成树实则贪心
对于一个点来讲,距离它最远的点一定在最左侧或者最右侧,所以所有的边一定有一
个端点是最左侧的或者最右侧的,于是只要枚举每个点,对左右端点各取一个最大值即可。
言简意赅
Code
#include<bits/stdc++.h>
const int N=1e6;
using namespace std;
#define int long long
int a[N],n,ans;
signed main()
{
int n;
cin>>n;
for(int i=1;i<=n;++i)
cin>>a[i];
sort(a,a+n+1);
ans+=a[n]-a[1];
for(int i=2;i<n;++i)
ans+=max(a[n]-a[i],a[i]-a[1]);
cout<<ans;
}
#define int long long
是坏习惯。
Present
学长出的阿卡伊模拟赛😍😍😍
此题模拟队列,双端队列可过。
Future
唉,建树DFS,然后DP。
这种情况你可以当成 \(dp\) 做,\(dp_i=dp_{f_i}+w_i\)
因为有负权所以 \(ans\) 初始值要设为极小值。
Code
#include<bits/stdc++.h>
const int N=1e5+5;
using namespace std;
#define int long long
struct node
{
int next,to;
}e[N];
int w[N],f[N],head[N],cnt=0,du[N],u;
int n,m,ans=-(1<<30);
void add(int x,int v)
{
cnt++;
e[cnt].next=head[x];
e[cnt].to=v;
head[x]=cnt;
}
void dfs(int x,int fa)
{
f[x]=f[fa]+w[x];
for(int i=head[x];i!=0;i=e[i].next)
if(e[i].to!=fa)
dfs(e[i].to,x);
}
signed main()
{
freopen("ftr.in","r",stdin);
freopen("ftr.out","w",stdout);
cin>>n;
for(int i=1;i<=n;++i)
cin>>w[i];
for(int i=1;i<=n;++i)
{
cin>>u;
add(u,i);
du[u]++;
}
dfs(1,0);
for(int i=1;i<=n;++i)
if(du[i]==0)
ans=max(ans,f[i]);
cout<<ans;
}
剩下写的是水题(一共也没写几道)
推歌
Retribution By Kry.exe & Nm-y
核
Sigma 好像是 HappyCore