codeforces Round#158 Div.2 C
来源:互联网 发布:云南大学网络平台 编辑:程序博客网 时间:2024/05/16 11:33
题意:
玩一个游戏,有n个箱子, 每个箱子里面有value[i] 个小球, 选择其中一个箱子开始游戏,将这个箱子里面小球全部拿出,该箱子编号为i , 然后依次朝着i + 1 , i + 2 ....... 箱子里放球,一次放一个 , 直到把手上的球全部放完, 最后一个球的后面一个球为第一个球。
现在给你最终游戏结束的状态,并且给你游戏结束的时候放最后一个球的位置,让你推测出游戏刚刚开始的时候的状态
题解:
找到结束状态中球最少的箱子编号,很明显是从该箱子开始游戏,然后模拟 , 没了
代码:
#include<stdio.h>int main(){ int n, m; __int64 value[100005]; while(scanf("%d %d", &n, &m) != EOF) { for(int i = 1; i <= n; i++) scanf("%I64d", &value[i]); int Min = 1000000005, Mini = -1; for(int i = m; i >= 1; i--) if(value[i] < Min) Min = value[i], Mini = i; for(int i = n; i > m; i--) if(value[i] < Min) Min = value[i], Mini = i; // printf("%d\n", Mini); if(!Min) { if(Mini > m) { __int64 num = 0; for(int i = Mini + 1; i <= n; i++) num ++, value[i] --; for(int i = 1; i <= m; i++) num ++, value[i] --; value[Mini] = num; } else { __int64 num = 0; for(int i = Mini + 1; i <= m; i++) num ++, value[i] --; value[Mini] = num; } } else { if(Mini > m) { __int64 num = 0, k = value[Mini]; for(int i = Mini + 1; i <= n; i++) num += (k + 1), value[i] -= (k + 1); for(int i = 1; i <= m; i++) num += (k + 1), value[i] -= (k + 1); for(int i = m + 1; i <= Mini; i++) num += (k), value[i] -= k; value[Mini] = num; } else { __int64 num = 0, k = value[Mini]; for(int i = 1; i <= Mini; i++) num += k, value[i] -= k; for(int i = Mini + 1; i <= m; i++) num += (k+1), value[i] -= (k+1); // printf("%d\n", num); for(int i = m + 1; i <= n; i++) num += k, value[i] -= k; value[Mini] = num; } } printf("%I64d", value[1]); for(int i = 2; i <= n; i++) printf(" %I64d", value[i]); printf("\n"); }}
0 0
- Codeforces Round #158 (Div. 2) C题
- codeforces Round#158 Div.2 C
- 【codeforces】Codeforces Round #370 (Div. 2) C
- Codeforces Round #158 (Div. 2)
- Codeforces Round #158 (Div. 2)
- Codeforces Round #158 (Div. 2)
- Codeforces Round #105 (Div. 2) C
- Codeforces Round 134 div 2 C题
- Codeforces Round #137 (Div. 2), problem: (C)
- Codeforces Round #153 (Div. 2) C题
- Codeforces Round #162 (Div. 2) C
- Codeforces Round #166 (Div. 2) c. Secret
- Codeforces Round#170(Div 2)C
- Codeforces Round #173 (Div. 2) Problem C
- Codeforces Round #192 (Div. 2) C. Purification
- Codeforces Round #196 (Div. 2) C. Quiz
- Codeforces Round #197 (Div. 2) (C~E)
- Codeforces Round #196 (Div. 2) C. Quiz
- Centos 6.2 安装Mysql笔记
- SlidingMenu使用(二) Demo
- 提高篇第28-31课第三题
- org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Server returned error code = 40
- Codeforces Round #261 (Div. 2) E. Pashmak and Graph (sorting + dp)
- codeforces Round#158 Div.2 C
- Hihocoder 顺子
- 黑马程序员JAVA笔记1--java基础和概述
- adroid 杂项
- win7 64位pl/sql配置
- 组网
- Haskell之Yesod开发–简单网站开发(五)
- 15.8
- mpc 编译