CF 675 div2C 数学 让环所有值变为0的最少操作数
http://codeforces.com/contest/675/problem/C
题目大意:
给一个环,标号为1-n,然后能从n回到1.让这个环的值为0,最少需要的操作数是多少?
这道题目呀。。。应该说是自己的问题吧,规律并没有那么难找的,只要我将前缀全部都计算一遍就完全可以找出规律了的。。。然后竟然没有去那么做。
首先我们分析,最多的次数就是n-1.然后我们再看,因为是一个环,那么如果每次前缀和出现了0,就是说明这一段内可以得到0,那么所移动的次数就可以少1.
然后我们在反过来分析,我们要找到这个0的个数,应该怎么找呢?然后我们得出规律,如果某个值重复出现了,就说明他同时存在两边可以同时取值到这个值,并且变为0。然后我们用map<ll, int>m来保存,第一维保存的是前n项的和,第二位保存的是这个和的值出现过几次:例如m[3] = 2的意思就是前缀和是3的次数出现过两次。
例如sum的变化是这样子的2 4 6 4 2.那么就说明4 6 4之间的三个值可以变为0,那么同理2和2之间的值也可以变为0.
#include<bits/stdc++.h>
using namespace std; typedef long long ll;
map <ll, int> m; int main(){
ll n;
scanf("%lld", &n);
ll res = n - ;
ll sum = ;
for (int i = ; i <= n; i++){
ll t;
cin >> t;
sum += t;
m[sum]++;
res = min(res, n - m[sum]);
}
printf("%lld\n", res);
return ;
}
CF 675 div2C 数学 让环所有值变为0的最少操作数的更多相关文章
- 火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题
一.先遇到document.body.scrollTop值为0的问题 做页面的时候可能会用到位置固定的层,读取document.body.scrollTop来设置层的位置,像这样, window.on ...
- 问题-MyBatis不识别Integer值为0的数据
问题-MyBatis不识别Integer值为0的数据 问题:使用MyBatis的过程中,发现一个值为0的数据,Mybatis所识别,最后定位才发现,是自己的写法有问题, <if test=&qu ...
- 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?
分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...
- 将n阶方阵左下半三角中的元素值置0.
/*===================================== 将n阶方阵左下半三角中的元素值置0. 0<n<10. =========================== ...
- SqlParameter设定的value值为0时、调用的存储过程获取到的值却为null解决方法
原C#代码如下: if (query != null) { switch (query.MethodFlag) { //进出口退补税额统计表 case (int)EnumClassifyCorrect ...
- Java中在实例化一个类时,这个类中没有初始值的int类型成员变量i,i的值是不是0?
java中有两种类型一种是数值性,另一种是类变量数值性变量的初始值为0,类变量的初始化为null没做初始化成员变量int性变量是0, 在java中有这么一条规则,声明在方法中的变量在使用时必须要初始化 ...
- document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题
转自http://wo13145219.iteye.com/blog/2001598 一.先遇到document.body.scrollTop值为0的问题 做页面的时候可能会用到位置固定的层,读取do ...
- Mybatis中 Integer 值为0时,默认为空字符串的解决办法。
需求是查询级别为0的用户 User对象里的level字段的值为0,查询时居然没有查到为level为0的用户. <select id="selectSelective" par ...
- SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外的取值方法(0、1两个值被取值的概率相等) C# MD5 加密,解密 C#中DataTable删除多条数据
SELECT INTO和INSERT INTO SELECT的区别 数据库中的数据复制备份 SELECT INTO: 形式: SELECT value1,value2,value3 INTO Ta ...
随机推荐
- JPA 系列教程13-复合主键-@EmbeddedId+@Embeddable
复合主键 指多个主键联合形成一个主键组合 需求产生 比如航线一般是由出发地及目的地确定,如果要确定唯一的航线就可以用出发地和目的地一起来表示 ddl语句 同复合主键-2个@Id和复合主键-2个@Id+ ...
- captche验证码
JCaptcha 是一个用来生成验证码的开源Java类库 CaptchaServiceSingleton类(单态类) package com.dongbin.testy; import com.oct ...
- HDU - 5547 Sudoku(数独搜索)
Description Yi Sima was one of the best counselors of Cao Cao. He likes to play a funny game himself ...
- Linux下安装MySQL-5.7
写在前面:此博客是针对MySQL5.7安装教程,其他版本可能略有不同,仅供参考. 第一步:下载mysql 在Linux终端使用wget命令下载网络资源: wget http://mirrors.soh ...
- css在网页中划线
在行边距上的线可以通过 1 div,表格等的border属性实现 2 <hr/>实现 3 通过背景图片实现 4 页面内写入横线图片 通过相对定位实现 5 通过css伪类实现 <sty ...
- strlcpy() 函数
size_t strlcpy(char *dst, const char *src, size_t siz) { char *d = dst; const char *s = src; size_t ...
- LeetCode OJ 297. Serialize and Deserialize Binary Tree
Serialization is the process of converting a data structure or object into a sequence of bits so tha ...
- Java程序输出打字
代码: 效果:
- System.IO命名空间,用于文件/流的处理。
主要类的介绍:1 Path类——静态实用类,用于处理路径名称.2 File类和FileInfo类● File —— 静态实用类,提供许多静态方法,用于移动.复制和删除文件.● FileInfo —— ...
- Linux(centos5.0+)unison+inotify-tools触发式双向自动同步
192.168.1.11是server1, 192.168.1.22是server2. [1]安装inotify-tools 各大linux发行版本都有inotify-tools软件包,建议通过y ...