题目链接:
我可能是个弱智
直接贪心,B和R的连发比较固定,考虑每个P,他有两种选择,一种是连接到上一个P上然后删掉B和R的最大值,一种是直接连到上一个B和R上,直接模拟就行了
代码:
ll ans=0;int n;int pa=INF,pb=INF,pc=INF,pra=0,prb=0;scanf("%d",&n);for(int i=1;i<=n;i++){int x;char op[2];scanf("%d%s",&x,op);if(op[0]=='B'){if(pa!=INF){pra=max(pra,x-pa);ans+=x-pa;}pa=x;}if(op[0]=='R'){if(pb!=INF){prb=max(prb,x-pb);ans+=x-pb;}pb=x;}if(op[0]=='P'){if(pa!=INF){pra=max(pra,x-pa);ans+=x-pa;}if(pb!=INF){prb=max(prb,x-pb);ans+=x-pb;}if(pc!=INF){ans=min(ans,ans+x-pc-pra-prb);}pa=pb=pc=x;pra=prb=0;}}printf("%lldn",ans);return 0;
}
本文发布于:2024-02-03 23:30:43,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170697575751592.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |