nssl1195-健美猫【???】
正题
题目大意
给出序列s(s∈[1,n])(s\in [1,n])(s∈[1,n]),将序列旋转
旋转操作
si=si+1(i∈[1,n−1])sn=s1\begin{matrix} \\s_i=s_{i+1}(i\in [1,n-1]) \\ s_n=s_1 \end{matrix}si=si+1(i∈[1,n−1])sn=s1
然后要求
∑i=1nsi−i\sum _{i=1}^ns_i-ii=1∑nsi−i
最小
解题思路
根据对答案的贡献,我们排除尾部过去,我们可以大致分为两种情况:
si<=i:fi=fi−1+1s_i<=i:f_i=f_{i-1}+1si<=i:fi=fi−1+1
si>i:fi=fi−1−1s_i>i:f_i=f_{i-1}-1si>i:fi=fi−1−1
然后我们用桶aia_iai记录在第i次旋转会两种形态互换的个数然后用addaddadd记录目前可以累加的,然后每次根据上面那个aia_iai来改变addaddadd。
至于最后一个,我们考虑一下s?−ns_?-ns?−n肯定是在第1种情况,然后要先用这个改变,然后在考虑
abs(s?−n)(s<=n)⇒n−s?abs(s_?-n)\ (s<=n) \Rightarrow n-s_?abs(s?−n) (s<=n)⇒n−s?
和
abs(s?−1)(s>=1)⇒s?−1abs(s_?-1)\ (s>=1) \Rightarrow s_?-1abs(s?−1) (s>=1)⇒s?−1
所以改变之后产生代价
(n−s?)+(s?−1)=2∗s?−n−1(n-s_?)+(s_?-1)=2*s_?-n-1(n−s?)+(s?−1)=2∗s?−n−1
code
#include<cstdio>
#include<algorithm>
#define N 2000010
using namespace std;
int n,s[N],a[N];
long long ans,sum,add;
int read(){int x=0,flag=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')flag=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*flag;
}
int check(int x,int y)
{if(x<=y) return y-x;else return n+y-x;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){s[i]=read();a[check(i,s[i])]++;if(s[i]<=i) add++;sum+=abs(s[i]-i);}ans=sum;for(int i=1;i<n;i++){add--;sum+=abs(s[n-i+1]-1)-abs(s[n-i+1]-n);sum+=add*2-n+1;add+=a[i];ans=min(ans,sum);}printf("%lld",ans);
}
nssl1195-健美猫【???】相关推荐
- 【NOIP模拟】健美猫
题面 分析 此题真是一言难尽.下面这么大一串,真的只是在讲一个小模拟...此题也是被几个julao反复讲,各种五花八门的奇淫巧技,什么数学变形,树状数组,差分,单调--好吧,我是那种只会30分暴力的人 ...
- ssl提高组周四备考赛【2018.10.18】
前言 开始做四面八方扣来的题 成绩 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC 111 2017zyc2017zyc2017 ...
- ecs要按两次才有效_猫咪想要增肥有什么办法?吃是最简单有效的了,但要吃对了才行...
当咱们成天在提醒各位铲屎官该注意家里猫主子的体重了.该控制好身材体重了.该小心肥胖疾病的时候,有些猫咪的确是有增肥这种拉仇恨的需求的,就像是那些永远吃不胖的人想要体验一下肉感的身材一样. 不过关于猫咪 ...
- 观察者模式的经典应用(猫叫 烧开水)
Code 猫叫了 老鼠跑 主人惊醒 1/**//* 2 * 题目: 3 * 猫叫了,所有老鼠开始逃跑,主人被惊醒,请用OO的思想描绘此过程 4 * 1,老鼠跟主人是被动的 5 * 2,要考虑 ...
- c语言 狸抓兔子,捕捉猫狸的方法-
抓野猫的最好方法
抓野猫的最好方法 最好是用食物诱捕.首先我们要用一些猫粮,或者自制食物,多一点时间去用实物喂给猫猫吃.一般野猫比较怕生,你一过去就会跑远,我们可以把食物固定放一个位置先,然后你放下站在距离食物三米左右 ...
- 短信猫GSM Modem
短信猫是用来收发短信的设备,和手机一样 插入SIM卡,通过(USB或串口)数据线/PCI插槽接到电脑上 在电脑上通过相关软件就可以实现短信收发的功能 相关软件也就是收发短信的短信应用软件 可以自己开发 ...
- 信息记录拉取失败_天猫入驻为什么失败?猫店侠做详细解读
天猫入驻为什么失败?这是很多商家都想要知道的一件事情,猫店侠想说其实这也很正常,只要不是一味盲目的入驻,就还有机会. 首先失败商家要看看失败的反馈内容,看看是哪方面不达标,再着重进行补充,但实际上猫店 ...
- ***突然断开可能是ADSL猫惹的祸
在我们使用×××服务器的时候,最讨厌的就是无故的断线了,可能正在和好×××一起副本,或者正在视频热聊中,还或者youtube视频看的正起劲,突然windows一个对话框弹出 - "连接已经断 ...
- 分享一个C#使用AT指令控制语音猫的例子
阅读全文:http://www.cckan.net/forum.php?mod=viewthread&tid=61 先来说说 最近公司让开发一个语音猫充值的软件,就是拨打10086(虚拟)进行 ...
- pix怎么抚养另一只猫_在工作和抚养两个孩子的同时,我如何在一年内获得第二学位并获得了5个开发人员认证...
pix怎么抚养另一只猫 "The standard pace is for chumps. The system is designed so anyone can keep up. If ...
最新文章
- 互联网公司的那些搞笑gif
- python_day9 进程池
- Use Asynchronous Apex
- webview300毫秒点击问题
- PHP之父评价Facebook的HipHop项目:别当作银弹
- nc 探测端口_防盗报警探测器的几种防拆接线方式,附接线图
- Gentoo 网络接口配置文件说明
- 如何使用阿里云ARMS轻松重现用户浏览器问题
- Netty 的 ByteBuf 是如何支持 堆内存非池化 实现的
- 飞机订票系统(c语言)
- docker push latest 和 保存历史版本
- keil c51如何添加STC芯片的固件库文件
- Windows 和 Linux 系统查询 IP 地址命令
- 联想g510升级方案_联想G510更换固态、加装内存条、移机械硬盘至光驱位简记
- 如何正确的去学习C语言
- 在路上,走更远 ,我的2016
- 【Unity】一个使用Dorween实现的血量条显示与血量变化
- 如何制作PDF,以及给PDF添加书签
- DDOS攻击和发包攻击教学 (仅限于压力测试学习)
- SSO单点登录(集成SSO认证服务)
热门文章
- mysql5.5 mysqli_php5.5.38增加mysqli扩展
- endpointimpl怎么填参数_这是一篇VLOOKUP函数家族主要用法的合集,XLOOKUP来了!真香!但是,没有office365吃不着怎么办?...
- hadoop可以解决什么问题_聊一聊,临时工外包可以为企业解决什么问题
- 计算机cnc键代表啥,计算器上的cnc键表示啥
- linux调用odbc接口乱码,linux中pypyodbc读取GB编码mdb中文乱码解决办法
- 问题 B: 十进制到二进制的转换
- leetcode279. 完全平方数
- leetcode455. 分发饼干
- Spring5 jar包下载
- [设计模式]依赖倒转原则