【MX-S1】梦熊周赛 提高组 1(同步赛)

【MX-S1】梦熊周赛 · 提高组 1(同步赛)

\(T1\) luogu P10672 【MX-S1-T1】壁垒 \(100pts\)

  • 一个简单的结论:随着前缀长度的增长,出现的数字种类数每次只能增加 \(0\)\(2\)。考虑构造时可以从这里下手。

  • 一种构造方案是这样的:优先让数字种类数增加 \(2\),即先将原先没有出现过的数往前放;接着让数字种类数增加 \(0\),即后将原先出现过的数往后放。

    • 同时,也解释了当 \(1 \sim n\) 中出现的数字种类数是奇数时不存在这样的重排方式。
  • 找重复元素时可以借助 unique 函数,但需要注意的是unique 函数对于重复的元素并不是将其删除,而是将其移动赋值,可能会覆盖先前的数,可参考 C++ 手册,故可以使用一个桶来进行手动统计。

    点击查看代码
    int a[100010],vis[100010];
    int main()
    {int n,m,i,j;cin>>n;for(i=1;i<=n;i++){cin>>a[i];vis[a[i]]++;}sort(a+1,a+1+n);m=unique(a+1,a+1+n)-(a+1);if(m%2==0){for(i=1;i<=m;i++){vis[a[i]]--;cout<<a[i]<<" ";}for(i=1;i<=n;i++){for(j=1;j<=vis[i];j++){cout<<i<<" ";}}}else{cout<<"-1"<<endl;}return 0;
    }
    

\(T2\) luogu P10673 【MX-S1-T2】催化剂 \(100pts\)

  • 从贪心的角度分析,当小 K 有 \(x(x \ge k)\) 个同种糖果时,将其分给 \(k\) 个小朋友时尽可能平均发是最优情况,此时产生的愤怒值为 \(x-k\)

  • 那么,设出现次数 \(\ge k\) 的糖果分别为 \(b_{1},b_{2},b_{3}, \dots ,b_{m}\),其出现次数分别为 \(c_{1},c_{2},c_{3}, \dots ,c_{m}\),最终有 \(\sum\limits_{i=1}^{m}c_{i}-mk\) 即为所求。其中,\(\sum\limits_{i=1}^{m}c_{i}\)\(m\) 均可通过权值树状数组维护。

  • 注意及时删除因修改造成的影响及树状数组中下标为 \(0\) 对操作中的影响。

    点击查看代码
    ll c[2][3000010],vis[3000010];
    ll lowbit(ll x)
    {return x&(-x);
    }
    void add(ll n,ll x,ll key,ll c[])
    {for(ll i=x;i<=n;i+=lowbit(i)){c[i]+=key;}
    }
    ll getsum(ll x,ll c[])
    {ll ans=0;for(ll i=x;i>=1;i-=lowbit(i)){ans+=c[i];}return ans;
    }
    int main()
    {ll n,q,pd,x,i;scanf("%lld%lld",&n,&q);for(i=1;i<=n;i++){scanf("%lld",&x);if(vis[x]!=0){add(3000000,vis[x],-1,c[0]);add(3000000,vis[x],-vis[x],c[1]);}vis[x]++;if(vis[x]!=0){add(3000000,vis[x],1,c[0]);add(3000000,vis[x],vis[x],c[1]);}}for(i=1;i<=q;i++){scanf("%lld%lld",&pd,&x);if(pd==1){if(vis[x]!=0){add(3000000,vis[x],-1,c[0]);add(3000000,vis[x],-vis[x],c[1]);}vis[x]++;if(vis[x]!=0){add(3000000,vis[x],1,c[0]);add(3000000,vis[x],vis[x],c[1]);}}if(pd==2){if(vis[x]!=0){add(3000000,vis[x],-1,c[0]);add(3000000,vis[x],-vis[x],c[1]);}vis[x]--;if(vis[x]!=0){add(3000000,vis[x],1,c[0]);add(3000000,vis[x],vis[x],c[1]);}}if(pd==3){printf("%lld\n",getsum(3000000,c[1])-getsum(x-1,c[1])-(getsum(3000000,c[0])-getsum(x-1,c[0]))*x);}}return 0;
    }
    

\(T3\) luogu P10674 【MX-S1-T3】电动力学

  • 不会,暂时咕了。

\(T4\) luogu P10675 【MX-S1-T4】先见之明

  • 不会,暂时咕了。

总结

  • \(T1\)
    • 慎用 STL 。
  • \(T2\)
    • 注意动态插入需要的空间,同平衡树相关应用。
    • 注意大量输入、输出对时间损耗的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/733701.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue学习笔记-2

1.模板语法 文本插值 <template><p>{{ msg }}</p><br/> <p>{{ num+1 }}</p><br/> <p>{{ ok?"yes":"no" }}</p> </template> <script> export default{data(){return{msg:"模板语…

Nginx 站点配置多目录管理

运维需求 在使用Nginx 对多个站点进行配置和运行维护时,如果将多个站点的配置都放在同一配置文件中,对于server 部分的调整,随着时间的推移,可能对应的配置变更是由不同的人员接手,不方便系统的部署和迁移。解决方案 为了解决这个问题,可以考虑使用include 块。用于指定加…

PNAS | 中国农大汪海团队实现转录调控序列的人工智能设计

近日,中国农业大学农学院汪海团队联合美国康奈尔大学、丹麦奥胡斯大学、北京大学现代农业研究院、坦桑尼亚农业科学院等单位在_PNAS在线发表了题为Modeling 0.6 million genes for the rational design of functional cis-regulatory variants and de novo design of cis-regu…

[C++ Primer] 关联容器

C++关联容器相关操作关联容器标准库提供了8个关联容器。类型map和multimap定义在头文件map中;set和multiset定义在头文件set中;无序容器则定义在头文件unordered_map和unordered_set中。pair标准库类型,定义在头文件utility中。关联容器额外的类型别名:关联容器insert操作:…

Kali 关闭自动锁屏功能

Kali 关闭自动锁屏功能 1、点击 [开始] -> [设置] -> [电源管理器]2、选择 [安全性],将 [自动锁定会话] 选为 [从不],将 [当系统休眠时锁定屏幕] 取消勾选,点击 [关闭]

键盘记录大师:用pynput轻松捕获每一个按键,包括组合键和功能键

哈喽,大家好,我是木头左!揭秘键盘输入的监控神器 - pynput库 在数字时代,键盘是与计算机交流的主要工具。无论是编写代码、撰写文档还是进行日常通讯,键盘的每一次敲击都承载着信息。而在某些场景下,可能需要记录这些信息,比如开发一个学习打字的软件、监控儿童的上网行…

word通用模板说明

个人偷懒,标题、表、图、公式按章节自动编号,字体与间距按照武汉理工大学硕士论文设置,方便平时报告用,模板在个人文件夹中https://files.cnblogs.com/files/blogs/806514/%E9%80%9A%E7%94%A8word%E6%A8%A1%E6%9D%BF.zip?t=1719659030&download=true 标题自动编号 点击…

HydroOJ 从入门到入土(20)已通过的题目显示 AC 代码

定期的代码汇总分析和整理是必要的。个人面板里,通过的题目,直接链接到对应的AC记录。用处就是可以按人汇总,便于学生自己整理,以及老师分析学生。 权限:看不了别人代码的人,依然看不了别人代码。 效果修改后端 进入 user.ts 文件 435 行左右: cd /usr/local/share/.con…

模拟集成电路设计系列博客——8.2.2 LC振荡器

8.2.2 LC振荡器 LC振荡器是调谐振荡器的一个例子。环形振荡器使用有源放大器级来提供环路不稳定性所需要的180相移,调谐振荡器向反馈环路中插入调谐(谐振)电路来提供相移。在LC振荡器的例子中,谐振是由一个并联的LC电路实现的。 一个简单的LC振荡器如下图(a)所示,其小信号…

安装编译ffmpeg

原文链接 安装MSYS2msys2是一款跨平台编译套件,它模拟linux编译环境,支持整合mingw32和mingw64,能很方便的在windows上对一些开源的linux工程进行编译运行。类似的跨平台编译套件有:msys,cygwin,mingw 优势: 相对于 cygwin 和 msys 等环境,它支持 pacman 包管理器,这…