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 ...
随机推荐
- Swing手动进行最大化最小化
首先jdk的setExtendedState是有bug的,需要先重载JFrame的setExtendedState方法 /** * Fix the bug "jframe undecorat ...
- 51Nod 1486 大大走格子 —— 容斥
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1486 对于每个点,求出从起点到它,不经过其他障碍点的方案数: 求一 ...
- libnids 显示UDP数据报,编译,运行,正确。
#include<stdio.h>#include<nids.h>#include<string.h>#include <sys/socket.h>#i ...
- mysql数据库中的十进位是什么意思?
一般在用小数的时候才有用,比如类型你设置了double,十进位你设为2,那么你可以放0.22的值,但是放0.222的值它会自动四舍五入为0.22,相当于小数位数吧
- E20180124-hm
introspection n.自我反省; 反省,内省; capacity n. 容量; 性能; 才能; 生产能力; synthesize vt. 综合; 人工合成; (通过化学手段或生物过程) 合成 ...
- bzoj 1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛【dp+树状数组+hash】
最长上升子序列.虽然数据可以直接n方但是另写了个nlogn的 转移:f[i]=max(f[j]+1)(a[j]<a[i]) O(n^2) #include<iostream> #in ...
- self , static 都是何方神圣?
前言: php中 this 用于代指 对象, 而代指类的却有3个:self , static , parent self , static , parrent 既然都能代指类,那么他们之间又有哪些区 ...
- MongoDB的用户权限管理
1.创建用户并授权语法:db.createUser({user:"UserName",pwd:"Password",roles:[{role:"Rol ...
- javascript面试题集
1.如何把一句英文每个单词第一个字母大写? var str = "what fuck is 1235 going on ?"; var newArr = str.split(&qu ...
- ASP.NET Core&EF 笔记
首先创建Asp.net Core项目,然后通过 NuGet 安装 EntityFrameworkCore: Microsoft.EntityFrameworkCore.SqlServer Micros ...