ZOJ - 3981 - Balloon Robot (思维)
参考自:https://blog.csdn.net/qq_36553623/article/details/78445558
题意:
第一行三个数字n, m, q表示有m个座位围成一个环,n个队伍,q次A题
接下来n个数表示n个队伍所在位置(1<=ai<=m)
再接下来q行,每行a, b表示第a个队伍在第b秒A了一道题
有一个只会每一秒顺时针移动一个位置的发气球机器人
只要当前队伍有题目已经A了就会给他对应数量的气球(当然每道题最多1个气球)
如果a队伍在b时刻A了一道题,并在c时刻才拿到气球,那么这个队伍就会积累c-b点不开心值
求一个机器人起始位置(一开始是第0秒)使得所有队伍最终不开心值之和最小
思路:
对于一次ac,不开心值 = 当前位置 - 初始位置 - ac时间 也就是 不开心值 = a[i] - 1 - time
假设机器人现在是在1位置,计算出了所有交题的不开心值的和sum,现在改变初始位置1,变为x
现在的不开心值 = sum - 改变位置后减少的时间 + 改变位置后增加的时间
改变位置后减少的时间 = (p - x) * dis[x]
改变位置后增加的时间 = (m - dis[x]) * x
sum - (p - x) * dis[x] + x * (m - dis[x]) = sum + m * x - dis[x] * p
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = 2e6+10;
ll dis[maxn], a[maxn];
int main() {
ll t, n, m, p;
scanf("%d", &t);
while(t--) {
ll x, time, sum = 0;
scanf("%lld %lld %lld", &n, &m, &p);
for(int i = 1; i <= n; i++) {
scanf("%lld", &a[i]);
}
for(int i = 0; i < p; i++) {
scanf("%lld %lld", &x, &time);
dis[i] = (a[x]-1-time+m) % m;
sum += dis[i];
}
ll ans = 0x3f3f3f3f3f3f3f3fLL;
sort(dis,dis+p);
for(int i = 0; i < p; i++) {
ans = min(ans, sum+m*i-dis[i]*p);
}
printf("%lld\n", ans);
}
return 0;
}
ZOJ - 3981 - Balloon Robot (思维)的更多相关文章
- zoj 3981 Balloon Robot
https://vjudge.net/problem/ZOJ-3981 题意: 有m个座位,其中n个队伍坐在这些位置上,一个队伍一个座位.当一个队A了题之后,他们们会得到气球,假设他们在a时刻A题,但 ...
- ZOJ 3981 && 2017CCPC秦皇岛 A:Balloon Robot(思维题)
A - Balloon Robot Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Sub ...
- ZOJ 3981:Balloon Robot(思维+递推)
题目链接 题意 有n支队在m个位置上做题,有一个机器人位置1到位置m再到位置1循环走派发气球,当队伍a在时间b做完了一道题目的时候,假如机器人走到队伍a的位置的时间为c,那么这个队伍的不开心值就是c- ...
- 2017 秦皇岛CCPC Balloon Robot (ZOJ 3981)
题意:给出n个队伍,m个座位,q次A题的队伍与时间,下一行是n个队伍的坐的位置,再下面q行就是第x个队再第y秒A出一道题,然后有一个机器人,开始位置由你选,他每走一步 他就会向右走一格,走到m的时候会 ...
- Balloon Robot ZOJ - 3981
大意: n个参赛队, m个座位, 一共交了p次题, 一个机器人每秒钟会从位置$i$走到$i+1$, 若在$m$直接走到$1$, 当走到一个队伍就给该队应得的气球. 对于每道题, 假设交题时间$t_a$ ...
- ZOJ 4124 拓扑排序+思维dfs
ZOJ - 4124Median 题目大意:有n个元素,给出m对a>b的关系,问哪个元素可能是第(n+1)/2个元素,可能的元素位置相应输出1,反之输出0 省赛都过去两周了,现在才补这题,这题感 ...
- zoj 3778 Talented Chef(思维题)
题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...
- Course Selection System ZOJ - 3956 01背包+思维
Course Selection System ZOJ - 3956 这个题目居然是一个01背包,我觉得好难想啊,根本就没有想到. 这个题目把题目给的转化为 ans = a*a-a*b-b*b 这个 ...
- zoj 3717 - Balloon(2-SAT)
裸的2-SAT,详见刘汝佳训练指南P-323 不过此题有个特别需要注意的地方:You should promise that there is still no overlap for any two ...
随机推荐
- 蜘蛛页面 获取一个网站的全部url 乐观代码
蜘蛛页面 from selenium import webdriver import time import random from bs4 import * import pymysql h, pt ...
- 关于Time Series Database
今天观察了下clojure之父datomic.com的数据库 有点类似sequence数据库的变种 不过这类数据库,感觉用在移动端会更有市场: 1. 移动端需要这种可以本地存储,无删除,联网只增加,只 ...
- centos ifconfig 无法使用问题
centos ifconfig 无法使用问题 # ifconfig bash: ifconfig: command not found # yum search ifconfig Loaded plu ...
- 混淆时报:Proguard returned with error code 1. See console
发生这个错误是因为打包混淆时找不到我们的引用包,有的人可能说我没有引用什么Library啊,事实上,我们现在的项目创建时就默认有v4包,这是google提供的兼容包,主要为了应对Android3.0以 ...
- MySQL 基础 —— 数据类型、各种变量
1. 基本数据类型 char:prod_id char(10),括号内的内容表示字符的长度 decimal:十进制,不带参数为整数(四舍五入) text:文本类型,长度不限 2. 日期和时间处理函数 ...
- 31. ExtJs4回车事件监听
转自:https://710542316.iteye.com/blog/2148542 监听表单字段事件: Ext使得对用户某个动作的监听特别简单,诸如单击某个元素或者按下某个键盘上的键. 一个经常性 ...
- 12. Ext.Ajax 对ajax的支持
转自:http://www.cnblogs.com/lipan/archive/2011/12/09/2272793.html 本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封 ...
- SpringBoot中使用spring-data-jpa 数据库操作(上)
Java客户端使用Spring-Data-Jpa这个组件. Spring-Data-Jpa就是Spring对Hibernate的一个整合. 选择create在运行的时候它会自动帮我们创建一个表. sp ...
- P2700逐个击破(并查集/树形dp)
P2700 逐个击破 题目背景 三大战役的平津战场上,傅作义集团在以北平.天津为中心,东起唐山西至张家口的铁路线上摆起子一字长蛇阵,并企图在溃败时从海上南逃或向西逃窜.为了就地歼敌不让其逃走,老毛同志 ...
- 10.19NOIP模拟赛(DAY2)
/* 正解O(n)尺取法orz 我写的二分答案.本来以为会被卡成暴力分...... 这个-'0'-48是我写的吗........我怎么不记得... */ #include<bits\stdc++ ...