codeforces C. New Year Ratings Change 解题报告
2024-08-30 10:39:36
题目链接: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 ;
}
最新文章
- 【POI xls】解析xls遇到的问题
- ACM题目————zoj问题
- What is the difference Apache (Http Server) and Tomcat (Servlet Container)
- 2014-9-17二班----11 web project
- C# 实现对接电信交费易自动缴费
- HDU4763 - Theme Section(KMP)
- C语言基础学习基本数据类型-变量的命名
- dropdown-toggle 的点击禁用
- cs231n spring 2017 Python/Numpy基础 (1)
- BZOJ 1444: [Jsoi2009]有趣的游戏 [AC自动机 高斯消元]
- float之脱离文档流
- JavaScricp(总回顾)
- android异步向服务器请求数据
- 【tomcat】启动报错:Failed to initialize end point associated with ProtocolHandler [";http-apr-8080";] java.lang.Exception: Socket bind failed 和java.net.BindException: Address already in use: JVM_Bind错误解决
- 树莓派学习笔记(3):利用VNC远程控制树莓派
- Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\User given,
- 锐捷 ac ap 连接 记录
- list去除重复数据
- hdu 2059:龟兔赛跑(动态规划 DP)
- Java IO 之 File 的创建、重命名与遍历
热门文章
- DBCC
- DELPHI10.2的LINUX数据库开发环境配置
- 邁向IT專家成功之路的三十則鐵律 鐵律八:IT人學習之道-基礎功
- 【spring mvc】后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface
- weblogic运维时经常遇到的问题和常用的配置
- 详解RocketMQ中的consumer
- 客户端svn出现authorization failed异常
- android RecycleView复杂多条目的布局
- S3C2440 IIS操作 uda134x录放音
- go mysql dsn