题目链接:http://codeforces.com/problemset/problem/379/C

题目意思:有n个users,每个user都有自己想升的rating。要解决的问题是给予每个人不同的rating,使得每个人rating不比他期望的rating小,即 安排的rating >= 他自己的希望的rating,还有一个条件就是 总rating之和要最小。

要想使得总rating最少,那么安排的rating要尽可能小。把rating从小到大排序。对最小的rating值当然就给予这个值,于是下一次安排的rating在这个值的基础下递增1(rmin+1),当下一个user期望的rating和这个值相同时,就把rmin+1分配给他,接着下一次安排的最小rating是rmin+2。当遇到期望的rating比这个安排的rating要大时,安排的rating恰好可以安排他所期望的,而下一次安排的rating的值是 他自己希望的rating+1

由于要按顺序把这些rating输出,还要附加一个id值表明这些user初始的位置。

Time Memory
717 ms 3500 KB
 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = *1e5 + ; struct ratings
{
int id;
int ra;
int ans;
} exp[maxn]; int cmpid(ratings x, ratings y)
{
return x.id < y.id; // id从小到大排序
} int cmpra(ratings x, ratings y)
{
return x.ra < y.ra; // ra从小到大排序
} int main()
{
int i, n;
while (scanf("%d", &n) != EOF)
{
for (i = ; i <= n; i++)
{
scanf("%d", &exp[i].ra);
exp[i].id = i;
}
sort(exp+, exp+n+, cmpra);
int cur = exp[].ra;
for (i = ; i <= n; i++)
{
if (exp[i].ra <= cur)
{
exp[i].ans = cur;
cur++;
}
else
{
exp[i].ans = exp[i].ra;
cur = exp[i].ra + ;
}
}
sort(exp+, exp+n+, cmpid);
for (i = ; i < n; i++)
printf("%d ", exp[i].ans);
printf("%d\n", exp[i].ans);
}
return ;
}

参考人家写的,pair原来这么强大的!!! ^_^

Time

Memory

171 ms 3500 KB
 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std; #define f first
#define s second
#define max(a, b) ((a) > (b) ? (a) : (b)) const int maxn = *1e5 + ;
pair<int, int> p[maxn];
int ans[maxn]; int main()
{
int i, n, cur;
while (scanf("%d", &n) != EOF)
{
for (i = ; i <= n; i++)
{
scanf("%d", &p[i].f);
p[i].s = i;
}
sort(p+, p+n+);
cur = ;
for (i = ; i <= n; i++)
{
cur = max(p[i].f, cur+);
ans[p[i].s] = cur;
}
for (i = ; i < n; i++)
printf("%d ", ans[i]);
printf("%d\n", ans[i]);
}
return ;
}

最新文章

  1. 【POI xls】解析xls遇到的问题
  2. ACM题目————zoj问题
  3. What is the difference Apache (Http Server) and Tomcat (Servlet Container)
  4. 2014-9-17二班----11 web project
  5. C# 实现对接电信交费易自动缴费
  6. HDU4763 - Theme Section(KMP)
  7. C语言基础学习基本数据类型-变量的命名
  8. dropdown-toggle 的点击禁用
  9. cs231n spring 2017 Python/Numpy基础 (1)
  10. BZOJ 1444: [Jsoi2009]有趣的游戏 [AC自动机 高斯消元]
  11. float之脱离文档流
  12. JavaScricp(总回顾)
  13. android异步向服务器请求数据
  14. 【tomcat】启动报错:Failed to initialize end point associated with ProtocolHandler [&quot;http-apr-8080&quot;] java.lang.Exception: Socket bind failed 和java.net.BindException: Address already in use: JVM_Bind错误解决
  15. 树莓派学习笔记(3):利用VNC远程控制树莓派
  16. Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\User given,
  17. 锐捷 ac ap 连接 记录
  18. list去除重复数据
  19. hdu 2059:龟兔赛跑(动态规划 DP)
  20. Java IO 之 File 的创建、重命名与遍历

热门文章

  1. DBCC
  2. DELPHI10.2的LINUX数据库开发环境配置
  3. 邁向IT專家成功之路的三十則鐵律 鐵律八:IT人學習之道-基礎功
  4. 【spring mvc】后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface
  5. weblogic运维时经常遇到的问题和常用的配置
  6. 详解RocketMQ中的consumer
  7. 客户端svn出现authorization failed异常
  8. android RecycleView复杂多条目的布局
  9. S3C2440 IIS操作 uda134x录放音
  10. go mysql dsn