记录编号 589739 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 收益 最终得分 100
用户昵称 Gravatarflyfree 是否通过 通过
代码语言 C++ 运行时间 9.697 s
提交时间 2024-07-07 16:11:50 内存使用 134.57 MiB
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define MAXN 4000010
  4. #define ll long long
  5. #define mod 1000000007
  6. ll n,k,seed,idx,cnt;
  7. ll hd[MAXN],nxt[MAXN],ed[MAXN];
  8. ll val[MAXN],sum[MAXN];
  9. void build(ll x,ll y){
  10. nxt[++idx]=hd[x];
  11. hd[x]=idx;
  12. ed[idx]=y;
  13. }
  14. bool cmp(ll a,ll b){
  15. return a>b;
  16. }
  17. ll dfs(ll num){
  18. // cout<<num<<endl;
  19. ll maxz=0;
  20. for(int i=hd[num];i;i=nxt[i]){
  21. ll y=ed[i];
  22. // cout<<"y:"<<y<<endl;
  23. ll s=dfs(y);
  24. if(s>maxz){
  25. if(maxz)sum[++cnt]=maxz;
  26. maxz=s;
  27. }else{
  28. sum[++cnt]=s;
  29. }
  30. }
  31. return maxz+val[num];
  32. }
  33. int main(){
  34. freopen("x.in","r",stdin);
  35. freopen("x.out","w",stdout);
  36. cin>>n>>k>>seed;
  37. val[1]=seed;
  38. for(int i=2;i<=n;i++){
  39. val[i]=(val[i-1]*23333333+6666666)%mod;
  40. build((val[i]^23333333)%(i-1)+1,i);
  41. // cout<<val[i]<<" "<<(val[i]^23333333)%(i-1)+1<<endl;
  42. }
  43. sum[++cnt]=dfs(1);
  44. ll ans=0;
  45. sort(sum+1,sum+1+cnt,cmp);
  46. for(int i=1;i<=k;i++){
  47. ans+=sum[i];
  48. }
  49. cout<<ans;
  50. return 0;
  51. }