hdu1034(传递糖果模拟)(代码片段)

taskr212 taskr212     2022-12-28     602

关键词:

题意是一群孩子围成一个圈,每个人把手中的糖果分一半给右边的人,若分过之后手中的糖果数是奇数,则由老师提供一颗糖果给他,问这样传递多少圈所有人的糖果数都能相等,最终每人手里的糖果数是多少。

由于题中已经解释了结果是有限的数,那么就直接模拟,要注意分的时候是从前面的人往后面传递。

代码如下:

技术分享图片
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int n,ans,tmp,t,a[10009],pre[10009];
 4 bool judge()
 5 
 6     for(int i = 1; i < n; ++i)
 7         if(a[i] != a[i-1])
 8             return false;
 9     return true;
10 
11 int main()
12 
13     while(scanf("%d",&n)&&n)
14     
15         for(int i = 0; i < n; ++i)
16             scanf("%d",&a[i]);
17         tmp = a[n-1]>>1;
18         ans = 0;
19         while(1)
20         
21 //            for(int i = 0; i < n; ++i)
22 //            
23 //                a[i]>>=1;
24 //                t = tmp;
25 //                tmp = a[i];
26 //                a[i]+=t;
27 //                if(a[i]&1) ++a[i];
28 //            
29             for(int i = 0; i < n; ++i)
30             
31                 a[i]>>=1;
32                 pre[i] = a[i];
33             
34             for(int i = 0; i < n; ++i)
35             
36                 a[(i+1)%n] += pre[i];
37                 if(a[(i+1)%n]&1) ++a[(i+1)%n];
38             
39             ++ans;
40             if(judge()) break;
41         
42         printf("%d %d
",ans,a[0]);
43     
44     return 0;
45 
View Code

(自己注释掉的部分没发现问题在哪,头好痛......希望知道的大神赐教orz )

hdu_1034(模拟题)

很久没有打模拟题了,再次总结一下模拟题的做法:仔细分析题意,弄清楚过程理清楚模拟步骤,严格按照步骤编写代码添加中间输出测试每步结果虽然这是一个很简单的水题,但是没有松哥帮忙还是卡了很久,因为没有做好第... 查看详情

b1045糖果传递数学(代码片段)

糖果传递,一开始就想到了n^2的模拟贪心算法,但是一看,数据范围太大,好像只有O(N)能过。。。没啥方法,只好看题解,之后发现,woc,还有这种操作?这个题直接可以用数学证明。。。证明如下:首先,最终每个小朋友... 查看详情

[hdu1205]吃糖果题解(鸽巢原理)(代码片段)

[HDU1205]吃糖果Description-HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使... 查看详情

hdu6024buildingshops(代码片段)

...排成一排,每个教室都有一个坐标,现在,小Q想建一些糖果商店,在这n个教室里面。总的花费有两部分,在教室i建一个糖果屋需要花费ci,对于没有任何糖果屋的P,需要的花费为这个教室到它左边有糖果商店的距离。怎么建糖... 查看详情

hdu1205(代码片段)

先上题目 HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把... 查看详情

hdu4780candyfactory(代码片段)

CandyFactory题意:有n种糖果,要求每种糖果都要生产刚好一颗遵循如下规则:1.糖果i的生产区间在(si,ti),花费是k*(pi-si),pi是实际开始生产的时间,pi需要在区间[si,ti-1]以内.2.每个机器第一次使用的时候都有一个初始化时间,机器... 查看详情

糖果传递(基于贪心的数学问题)(代码片段)

0807糖果传递 0x08「基本算法」练习描述有n个小朋友坐成一圈,每人有a[i]个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。求使所有人获得均等糖果的最小代价。输入格式第一行一个正整数n<=1000000,... 查看详情

糖果传递(中位数+均分纸牌)(代码片段)

...小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。Input  第一行一个正整数n<=1000000,表示小朋友的个数.接下来n行,每行一个整数ai,表示第i个小朋友得到的糖果的颗数.Ou... 查看详情

[haoi2008]糖果传递(代码片段)

...小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。输入输出格式输入格式:小朋友个数n下面n行ai输出格式:求使所有人获得均等糖果的最小代价。输入输出样例输入样例#1:41254输... 查看详情

p2512[haoi2008]糖果传递(代码片段)

P2512[HAOI2008]糖果传递题目描述有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。输入输出格式输入格式:小朋友个数n下面n行ai输出格式:求使所有人获得均等糖果的最小代... 查看详情

haoi2008糖果传递-贪心(代码片段)

...小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。求使所有人获得均等糖果的最小代价。Input  小朋友个数n,下面n行aiSampleInput41254SampleOutput4思思维难度高的贪心题Q:为什么不... 查看详情

贪心bzoj1045:[haoi2008]糖果传递(代码片段)

...小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。Input第一行一个正整数nn<=1‘000‘000,表示小朋友的个数.接下来n行,每行一个整数ai,表示第i个小朋友得到的糖果的颗数.O... 查看详情

p2512[haoi2008]糖果传递(代码片段)

...小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。输入输出格式输入格式:小朋友个数n下面n行ai输出格式:求使所有人获得均等糖果的最小代价。输入输出样例输入样例#1: ... 查看详情

p2512[haoi2008]糖果传递题解数学(代码片段)

...小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。输入输出格式输入格式: 小朋友个数n下面n行ai 输出格式: 求使所有人获得均等糖果的最小代价。 输入输出样... 查看详情

bzoj1045糖果传递(代码片段)

真·水题。环形均分纸牌模板题。只需求出前缀和,然后取中位数求二重前缀和即可。1#include<cstdio>2#include<algorithm>3usingnamespacestd;4typedeflonglongLL;5constintN=1000010;6LLa[N],sum[N];7intmain()8intn;9scanf("%d",&n);10fo 查看详情

中位数推公式糖果传递(代码片段)

...环形,每个人都有一定数量的糖果(A_i),每个人可以左右传递,代价为(1),求让所有人的糖果数量相等所需要的最小操作数数据范围(1leqNleq10^6)题解所有人减去应该持有的平均数,求一下前缀和将前缀和数组排序,中间即开始的... 查看详情

p2512[haoi2008]糖果传递(代码片段)

传送门算法:瞎搞......真要说什么算法那应该是数论吧...这种题是真的恶心....以下为一堆的结论和证明...(比较细,实在不想看也可以直接看结论) 首先如果要让每个人最终的糖果一样多1.那么肯定最终每个人的糖果数量为... 查看详情

haoi2008糖果传递(代码片段)

传送门一道很有趣的贪心题(bin哥看了1s就会了%%%)觉得本题似乎是环形均分纸牌,但是其实我们不需要再枚举断点。首先每个人最后分到的糖果数是固定的,我们设x[i]表示第i个人给了ta左边的人多少颗糖果(第一个人就给到最... 查看详情