Codeforces 260C - Balls and Boxes
思路:模拟。在x前面找到最小值,如果没有,从0跳到n,继续找到最小值,边找最小值路过的点边减1。然后所有值都减去最小值,最小值那个点加上减去的值。
找到x前面离x最近的最小值的原因:如果如果在x到最小值之间还有最小值,那么这个最小值最后会变成-1。
简单代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+;
const ll INF=0x7f7f7f7f;
ll a[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie();
ll n,x,minn=INF;
cin>>n>>x;
for(int i=;i<=n;i++)cin>>a[i];
for(int i=;i<=n;i++)
{
minn=min(minn,a[i]);
}
ll sum=;
while(a[x]!=minn)
{
a[x]--;
sum++;
x--;
if(x==)x=n;
}
for(int i=;i<=n;i++)
{
if(i!=x)cout<<a[i]-minn;
else cout<<a[i]+sum+(n-)*minn;
if(i!=n)cout<<' ';
else cout<<endl;
}
return ;
}
复杂点的代码(找最小值时没有减1):
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+;
const ll INF=0x7f7f7f7f;
ll a[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie();
ll n,x,minn=INF,d=INF,index=-;
cin>>n>>x;
for(int i=;i<=n;i++)cin>>a[i];
for(int i=;i<=n;i++)
{
if(a[i]<=minn)
{
minn=a[i];
index=i;
}
}
bool flag=true;
for(int i=x;i>=;i--)
{
if(a[i]==minn)
{
index=i;
flag=false;
break;
}
}
if(flag)for(int i=n;i>x;i--)
{
if(a[i]==minn)
{
index=i;
break;
}
}
ll cnt=;
if(index<x)
{
cnt=index*minn+(n-x)*minn+(x-index)*(minn+);
for(int i=;i<=index;i++)a[i]-=minn;
for(int i=index+;i<=x;i++)a[i]-=minn+;
for(int i=x+;i<=n;i++)a[i]-=minn;
a[index]+=cnt;
}
else if(index>x)
{
cnt=x*(minn+)+(n-index)*(minn+)+(index-x)*minn;
for(int i=;i<=x;i++)a[i]-=minn+;
for(int i=x+;i<=index;i++)a[i]-=minn;
for(int i=index+;i<=n;i++)a[i]-=minn+;
a[index]+=cnt;
}
else
{
cnt=n*minn;
for(int i=;i<=n;i++)a[i]-=minn;
a[index]+=cnt;
}
for(int i=;i<n;i++)cout<<a[i]<<' ';
cout<<a[n]<<endl;
return ;
}
Codeforces 260C - Balls and Boxes的更多相关文章
- Codeforces Round #158 (Div. 2) C. Balls and Boxes 模拟
C. Balls and Boxes time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- CodeForces - 260C
CodeForces - 260C Little Vasya had n boxes with balls in the room. The boxes stood in a row and were ...
- HDU 5810 Balls and Boxes(盒子与球)
Balls and Boxes(盒子与球) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...
- HDU 5810 Balls and Boxes (找规律)
Balls and Boxes 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5810 Description Mr. Chopsticks is i ...
- HDU5810 Balls and Boxes
Balls and Boxes Time Limi ...
- HDU 5810 Balls and Boxes 数学
Balls and Boxes 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5810 Description Mr. Chopsticks is i ...
- hdu-5810 Balls and Boxes(概率期望)
题目链接: Balls and Boxes Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...
- hdu 5810 Balls and Boxes 二项分布
Balls and Boxes Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- 2016 多校联赛7 Balls and Boxes(概率期望)
Mr. Chopsticks is interested in random phenomena, and he conducts an experiment to study randomness. ...
随机推荐
- 010-centos上安装matlab
#001-下载matlab_R2015b和破解文件(四个)到百度云盘上下载7.6g#002-上传matlab大文件先安装vm tools,然后直接复制到虚拟机桌面#003-挂载matlab镜像并安装m ...
- LeetCode-EvaluteReversePolishNotation
题目: Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are + ...
- MFC六大核心机制之三:动态创建
MFC中很多地方都使用了动态创建技术.动态创建就是在程序运行时创建指定类的对象.例如MFC的单文档程序中,文档模板类的对象就动态创建了框架窗口对象.文档对象和视图对象.动态创建技术对于希望了解MFC底 ...
- uva1494 最小生成树--例题
这题说的是n个城市 建路 使他们联通然后 , 可以使用一条超级的路这条路不计入总长,此时路长度为B, 这条路链接的两个城市人口与和为A+B, 然后计算出最大的A/B 解题 先生成一颗最小生成树,然后 ...
- TestDriven.NET 怎么设置快捷键keyboard shortcut(转)
TestDriven.NET 怎么设置快捷键keyboard shortcut 使用TestDriven.NET 测试的时候,觉得点击鼠标很麻烦是不是?嗯,我也觉得,那么我们来看看怎么设置它的快捷键把 ...
- 阿里云云主机swap功能设置实战案例
阿里云云主机swap功能设置实战案例 阿里云提供的云服务器(Elastic Compute Service,简称 ECS),是云主机的一种,当前采用的虚拟化驱动是Xen(这一点可以通过bios ven ...
- javascript中的console.log有什么作用?
javascript中的console.log有什么作用? 主要是方便你调式javascript用的.你可以看到你在页面中输出的内容. 相比alert他的优点是:他能看到结构话的东西,如果是alert ...
- STL与泛型编程(第一周)
part 1 C++模版简介 一,模版概观 1.模板 (Templates)是C++的一种特性,允许函数或类(对象)通过泛型(generic types)的形式表现或运行. 模板可以使得函数或类在对应 ...
- 20145122《Java面向对象程序设计》实验二实验报告
实验名称: Java面向对象程序设计 实验内容: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 PSP时间 步骤 ...
- 20145304 Exp9 Web安全基础实践
20145304 Exp9 Web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL注入是将查询语句当做查询内容输入到查询的框中,以此来使服务器执行攻击者想让它执行的语句,而不是 ...