模拟46 考试总结

大鸽子我又来填坑了

考试经过

细节记不清了,开局是比较困,认识到了之后开始写各种暴力,快两个小时看出来T1很水就切了,T2冲了全排列走人,T4想写高斯消元发现要带模数不太会,于是搞T3部分分,但最后没调出来,所以交了测试点分治
100+11+10+0=121 大众分rank6,干了正常人都会干的事,然而并没有比别人多做什么

T1.数数

签到题,然而比别人慢了好久
显然排序不影响答案,那么直接排序然后一直一依次选两边就行,一定最优
每次考虑新加进去的数的贡献,维护所选数列的和就行

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=350000;
int a[N];
signed main()
{
   int n;cin>>n;
   for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
   sort(a+1,a+1+n);
   int ans=0,an=0,l=1,r=n;
   for(int i=1;i<=n;i++)
   {
      ans+=an;      
      if(!(i&1))an+=abs(a[r]-a[l]),ans+=abs(a[r]-a[l]),l++,r--;
      printf("%lld\n",ans);
   }
   return 0;
}

简单明了

T2.数树

一道好题,容斥+子树合并
专门学习了一下子树合并,戳这

T3.鼠树

这个题部分分很多,数据也不是很强,一些乱搞可以水过去
班长以她强大的骗分能力获得\(60\)直接rk1
正解是比较恶心的讨论+各种数据结构,极其锻炼代码能力
但是只要思维清楚打出来还是挺顺的,就是不好调
这里吧,肝了一天……

T4.ckw的树

考试总结

1.及时调整状态,根据实际选择策略
2.得分能力要加强,拿到更多分,乱搞也是本事

posted @ 2021-09-06 21:01  D'A'T  阅读(44)  评论(0)    收藏  举报