当前位置: 首页 > news >正文

2025杭电暑期联赛第四场(持续更新)

1008

狗日的被这题卡了:(

题意:给定一个长度为n的数组a。以及x>=y>=z三个参数
现在要求构造排列使数组重新排序
初始权值S为0

  • 当 a_p[i]>a_p[i-1] , S+=x
  • 当 a_p[i]=a_p[i-1] , S+=y
  • 当 a_p[i]<a_p[i-1] , S+=z
    求能构造的S的最大值

思路:
最初看到这题,排序显然不对
尝试使用multiset去贪心维护一些连续递增的段,然后只剩下一种数时把这种数塞到前面这种数旁边
然而超时
尝试用数组维护
然而Wa
尝试对拍
然而对不出来
因为本来两个想法都是错的 悲

最重要的一点是:在剩余一些数的时候,其实为它们单独开一个递增段不一定是优于把它们一股脑全部塞入前面已经有的序列中的

比如下列数据

1
6 15 15 1
1 2 2 3 3 4
90

显然最优策略是 :1 2 2 3 3 4
而非:1 2 3 4 2 3

剩下来就是细节和模拟了,注意一开始要加一个x

void solve(){int n,x,y,z;cin>>n>>x>>y>>z;vector<int>a(n+1);rep(i,1,n)cin>>a[i];vector<int>tot(n+1);vector<int>cnt(n+1);int res=0;rep(i,1,n){tot[a[i]]++;}rep(i,1,n){if(tot[i]){cnt[tot[i]]++;res++;}}int ans=0;int dif=0;int now=res;for(int i=1;i<=n;i++){ans+=max((res-1)*x+(i>=2?z:0),(i>=2)?y*res:0);res-=cnt[i];dif+=now;now-=(cnt[i]);if(res==0)break;if(res==1)break;}ans+=(n-dif)*y;cout<<ans+x<<endl;
}
http://www.sczhlp.com/news/840.html

相关文章:

  • 搜索结果太乱?5种重排序模型让你的搜索系统准确率提升40%
  • 00.01.Linux 应急响应:账号安全与入侵排查
  • 2025年7月28日
  • 7.28 训练总结
  • 人工智能驱动企业:通过情境感知AI重塑组织0引言
  • 亚马逊机器人如何应对交通拥堵
  • 多线程(续)
  • 2025 -- 云智计划 -- 【CSP-S】模拟赛 #1_总结+题解
  • 习题-有限集
  • 29
  • 第二十六天
  • 【题解】P12019 [NOISG 2025 Finals] 洪水
  • pygame小游戏打飞机_2模块显示
  • tt
  • 工程建立 - LI,Yi
  • Java基础语法学习 ———— Day1
  • 阶跃星辰端到端语音模型 Step-Audio 2:深度思考+音色切换;11Labs 对话式 AI 增加 WebRTC支持丨日报
  • 子串的故事(2) - 2025“钉耙编程”中国大学生算法设计暑期联赛(2)T4 题解
  • 【比赛记录】2025CSP-S模拟赛28
  • Apereo CAS 4.1 反序列化命令执行漏洞 (复现)
  • 第十四篇
  • 《大道至简——软件工程实践者的思想》读后感
  • DE_aemmprty 题单合集(分类)
  • 假期学习
  • C++对象模型
  • 软工7.28
  • P2910 [USACO08OPEN] Clear And Present Danger S (Floyd算法)
  • 读《构建之法》:我的C/C++学习反思
  • Qt播放音频,支持进度条,设置语速,播放暂停
  • goethereum-账户 - Charlie