Codeforces 1515 B
1515 B
题意
有n只袜子(n为偶数),但左袜子有L只,右袜子有R只,每只袜子的颜色为,可以进行以下操作:换袜子的方向、或者将袜子变色,问进行多少次操作后变成(n/2)对袜子
思路
很曲折,想了很久后终于想清楚,排除配对的袜子后,对于某类袜子,剩下 (假设剩下的是右边)只,它的配对情况要分类讨论:如果总体的右袜子多于左边,那么它可以变换一只袜子的方向配成一对,否则不能变换,举个例子,,如果直接将1袜子变换方向配对,那么总花费为3,实际上最少花费为2.
代码
void solve()
{
cin>>n>>L>>R;
for(int i=1;i<=n;i++) l[i]=r[i]=0;
for(int i=1,x;i<=n;i++)
{
cin>>x;
if(i<=L) l[x]++;
else r[x]++;
}
int ans=0;
for(int i=1;i<=n;i++)
{
int x=min(l[i],r[i]);
l[i]-=x,r[i]-=x;
L-=x,R-=x;
}
for(int i=1;i<=n;i++)
{
while(l[i]>=2&&L>R)
{
l[i]-=2;
ans++;
L-=2;
}
while(r[i]>=2&&R>L)
{
r[i]-=2;
ans++;
R-=2;
}
}
ans+=min(L,R) + abs(L-R);
cout<<ans<<endl;
}
分类:
思维题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)