首页 > 其他分享 >[NOIP2002 提高组] 均分纸牌

[NOIP2002 提高组] 均分纸牌

时间:2023-12-24 10:01:19浏览次数:23  
标签:NOIP2002 纸牌 int 每堆 张牌 均分 堆取 编号

[NOIP2002 提高组] 均分纸牌

题目描述

[NOIP2002 提高组] 均分纸牌_#include 堆纸牌,编号分别为 [NOIP2002 提高组] 均分纸牌_ci_02。每堆上有若干张,但纸牌总数必为 [NOIP2002 提高组] 均分纸牌_#include 的倍数。可以在任一堆上取若干张纸牌,然后移动。

移牌规则为:在编号为 [NOIP2002 提高组] 均分纸牌_i++_04 堆上取的纸牌,只能移到编号为 [NOIP2002 提高组] 均分纸牌_#include_05 的堆上;在编号为 [NOIP2002 提高组] 均分纸牌_#include 的堆上取的纸牌,只能移到编号为 [NOIP2002 提高组] 均分纸牌_i++_07 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。

现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。

例如 [NOIP2002 提高组] 均分纸牌_ci_08 时,[NOIP2002 提高组] 均分纸牌_i++_09 堆纸牌数分别为 [NOIP2002 提高组] 均分纸牌_i++_10

移动 [NOIP2002 提高组] 均分纸牌_ci_11 次可达到目的:

  • 从第三堆取 [NOIP2002 提高组] 均分纸牌_i++_09 张牌放到第四堆,此时每堆纸牌数分别为 [NOIP2002 提高组] 均分纸牌_ci_13
  • 从第三堆取 [NOIP2002 提高组] 均分纸牌_ci_11 张牌放到第二堆,此时每堆纸牌数分别为 [NOIP2002 提高组] 均分纸牌_i++_15
  • 从第二堆取 [NOIP2002 提高组] 均分纸牌_i++_04 张牌放到第一堆,此时每堆纸牌数分别为 [NOIP2002 提高组] 均分纸牌_i++_17

输入格式

第一行共一个整数 [NOIP2002 提高组] 均分纸牌_#include,表示纸牌堆数。
第二行共 [NOIP2002 提高组] 均分纸牌_#include 个整数 [NOIP2002 提高组] 均分纸牌_ci_20,表示每堆纸牌初始时的纸牌数。

输出格式

共一行,即所有堆均达到相等时的最少移动次数。

样例 #1

样例输入 #1

4
9 8 17 6

样例输出 #1

3

提示

对于 [NOIP2002 提高组] 均分纸牌_#include_21 的数据,[NOIP2002 提高组] 均分纸牌_i++_22[NOIP2002 提高组] 均分纸牌_ci_23

【题目来源】

NOIP 2002 提高组第一题



*#include<iostream>*
*#include<cstdio>*
using namespace std; 
int a[10010];
int n;
int sum=0,x=0,to1=0;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
       cin>>a[i];
       sum+=a[i];
    }
    x=sum/n;
    for(int i=1;i<=n;i++) a[i]=a[i]-x;
    for(int i=1;i<=n;i++)
    {
        if(a[i]==0) continue;
        a[i+1]=a[i]+a[i+1];
        to1++;
    }
    cout<<to1;
    return 0;
}

标签:NOIP2002,纸牌,int,每堆,张牌,均分,堆取,编号
From: https://blog.51cto.com/u_16003019/8954140

相关文章

  • 均分纸牌
     [洛谷P1031](https://www.luogu.com.cn/problem/P1031) [ybt1320](http://ybt.ssoier.cn:8088/problem_show.php?pid=1320)有$N$堆纸牌,总数为$N$的倍数左右拿的操作可以看成一种,不妨规定从游戏向左拿视为正方向,则从左向右为负增加,不拿为0最好的情况是**相邻两堆纸......
  • P1036 [NOIP2002 普及组] 选数(递归)
    [P1036[NOIP2002普及组]选数]我的思路是运用递归实现一个树状分支例如3712194选3,每个情况为3-7-123-12-197-12-19注意我们用递归时在传参时要以和的形式传参。如果先求和再传参就会发生错误.#include<iostream>#include<string>#include<math.h>#include<......
  • P1002 [NOIP2002 普及组] 过河卒
    [NOIP2002普及组]过河卒题目描述棋盘上\(A\)点有一个过河卒,需要走到目标\(B\)点。卒行走的规则:可以向下、或者向右。同时在棋盘上\(C\)点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,\(A\)点\((0......
  • 【洛谷 P1035】[NOIP2002 普及组] 级数求和 题解(循环)
    [NOIP2002普及组]级数求和题目描述已知:。显然对于任意一个整数,当足够大的时候,。现给出一个整数,要求计算出一个最小的,使得。输入格式一个正整数。输出格式一个正整数。样例#1样例输入#11样例输出#12提示【数据范围】对于的数据,。【题目来源】NOIP2002普及组第一题......
  • python题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个
    程序分析:无。实例(Python2.0+)#!/usr/bin/python#-*-coding:UTF-8-*-if__name__=='__main__':i=0j=1x=0while(i<5):x=4*jforiinrange(0,5):if(x%4!=0):breakelse:i......
  • P1037 [NOIP2002 普及组] 产生数
    P1037[NOIP2002普及组]产生数解法1:利用floyd寻找每位数字可变化的点点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;strings;intd[20][20];intf[25];intnum[150];intmain(){ cin>>s; intn=s.length(); intq; ci......
  • P1002 [NOIP2002 普及组] 过河卒
    P1002[NOIP2002普及组]过河卒基础DP卒只能向右/向下由此可得转移方程dp[i][j]=dp[i-1][j]+dp[i][j-1]卒不能走马能到的地方和马所在的地方则用一个数组标记马能到的地方和马所在的地方,在经过该点的时候跳过即可注意判断边界问题以及dp数组的初始化#include<bit......
  • 【题解】洛谷 P1002 [NOIP2002 普及组] 过河卒
    原题链接解题思路这是一道经典的动态规划题目。如果尝试使用深度优先搜索(dfs)或广度优先搜索(bfs)做就会获得TLE(注意数据范围)。于是我们想到了更为高级的动态规划(DynamicProgramming,dp)。简略介绍动态规划算法的核心思想:把原问题分解为相对简单的子问题的方式求解复杂问题。......
  • MysSQL 行转列以及列转行(学生的各科成绩,以及总分和平均分)
    一、行转列即将原本同一列下多行的不同内容作为多个字段,输出对应内容。1.建表语句--新建学生成绩表DROPTABLEIFEXISTStb_score;createtabletb_score(idint(11)notnullauto_increment,user_noVARCHAR(32)notnullcomment'学生工号',subject......
  • 「NOIP2002」均分纸牌
    ​题目描述有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若于张纸牌,然后移动。移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆......