题目链接:http://codeforces.com/problemset/problem/371/A

题目意思:给出n和k和一个只有1或者2组成的序列,需要求出最少的改变次数,使得 n/k 组里面的数完全相等。如果该序列n/k组里面的数本来已经全部相等,输出0。

我的做法是,在这个序列中,找出n/k对应位置的数,统计1和0的个数。以第一组数据样例来说(n/k = 3组数,每组数用 "|" 隔开),

序号i :             1  2  | 3  4 | 5  6

对应的序列:      2  1  | 2  2 | 2  1

   即分别统计1、3、5和2、4、6对应的2和1的个数,如果2的个数比较多,就把1的个数全部变为2,反之把2的个数转换成1(2、4、6的情况:cnt1= 1 ,cnt2 = 2,把1换成2,一次即可),这样能保证每次转换用的都是最少的次数,构造出的最终结果也是最少的。特别要注意,如果1的个数或者2的个数为0,此时不需要转换!

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; const int maxn = + ;
int a[maxn];
int c[]; int main()
{
int n, k, i, j, sum;
while (scanf("%d%d", &n, &k) != EOF)
{
for (i = ; i <= n; i++)
scanf("%d", &a[i]);
sum = ;
for (j = ; j <= k; j++)
{
memset(c, , sizeof(c));
c[a[j]] = ; // 第一组数的每个数直接赋为1
for (i = j+k; i <= n; i += k) // 每组数统计对应位置1和2的个数
c[a[i]]++;
if (c[] == || c[] == )
sum += ;
else if (c[] < c[])
sum += c[];
else
sum += c[];
}
printf("%d\n", sum);
}
return ;
}

codeforces A. K-Periodic Array 解题报告的更多相关文章

  1. Codeforces Educational Round 92 赛后解题报告(A-G)

    Codeforces Educational Round 92 赛后解题报告 惨 huayucaiji 惨 A. LCM Problem 赛前:A题嘛,总归简单的咯 赛后:A题这种**题居然想了20m ...

  2. 【LeetCode】697. Degree of an Array 解题报告

    [LeetCode]697. Degree of an Array 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/degree- ...

  3. 【剑指Offer】链表中倒数第k个节点 解题报告(Python)

    [剑指Offer]链表中倒数第k个节点 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-intervie ...

  4. 【LeetCode】153. Find Minimum in Rotated Sorted Array 解题报告(Python)

    [LeetCode]153. Find Minimum in Rotated Sorted Array 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode. ...

  5. 【LeetCode】692. Top K Frequent Words 解题报告(Python)

    [LeetCode]692. Top K Frequent Words 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/problems/top ...

  6. 【剑指Offer】二叉搜索树的第k个结点 解题报告(Python)

    [剑指Offer]二叉搜索树的第k个结点 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervie ...

  7. codeforces 476C.Dreamoon and Sums 解题报告

    题目链接:http://codeforces.com/problemset/problem/476/C 题目意思:给出两个数:a 和 b,要求算出 (x/b) / (x%b) == k,其中 k 的取 ...

  8. Codeforces Round #382 (Div. 2) 解题报告

    CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...

  9. LeetCode 新题: Find Minimum in Rotated Sorted Array 解题报告-二分法模板解法

    Find Minimum in Rotated Sorted Array Question Solution Suppose a sorted array is rotated at some piv ...

  10. 【LeetCode】658. Find K Closest Elements 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/find-k-c ...

随机推荐

  1. 【CodeForces 504A】Misha and Forest

    题 题意 有n个点,代号分别为0到n-1,然后这n个点有d个相连点,相连点的XOR sum 为s,求所有的边. 分析 知识:a^b^a=b,a^b^b=a. 把相连点为1的i存进队列,i的唯一相连点就 ...

  2. c语言的数学函数ceil、floor、round

    头文件<math.h> 函数原型和作用 double ceil(double x); 向上取整 double floor(double x); 向下取整 double round(doub ...

  3. 【poj3537】 Crosses ans Crosses

    poj.org/problem?id=3537 (题目链接) 题意 给出一个1*n的棋盘,每次可以选择一个没被标记过的点打标记,若经过某一步操作使得出现3个连续的标记,则最后操作的人获胜.问是否存在先 ...

  4. TCP/IP详解 学习七

    静态选路的前提: 1)         网络比较小 2)         网络之间单点连接 3)         网络之间没有多余的路由 动态选路协议,用于路由器之间的通信,有以下几种: 1)     ...

  5. 安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程

    原文                   http://blog.csdn.net/zhaoxy_thu/article/details/18883015                 本文主要对从 ...

  6. 修改eclipse/MyEclipse中包的显示结构为树形

    在右上边三角那里进去设置 选第一个是显示完整的包名,第二个显示的是树形结构,我们一般用第一种,如下图:

  7. Activator.CreateInstance 反射实例化对象

    public class CommonReq { private String TransNo { get; set;} public String SubmitData { get; set; } ...

  8. spark-submit提示资源不足

    ensure that workers are registered and have sufficient resources spark-cluster启动的配置里配置了每个worker的内存,如 ...

  9. go runtime scheduler

     http://www.slideshare.net/matthewrdale/demystifying-the-go-scheduler http://www.cs.columbia.edu/~a ...

  10. LINUX的两种后门总结(suid shell与inetd)

    前提: 你现在已经是root用户, 想留一个后门以便日后再一次进入. 系统环境:  1 dawg:~# uname -a 2 Linux dawg 2.4.20-1-386 #3 Sat Mar 22 ...