I Incoming Asteroids(优先队列)

考虑递增的速度,用一个定时器维护每个camera的观测值,当到达阈值之后,就进行检测,每个位置用一个优先队列维护。

// Problem: I. Incoming Asteroids
// Contest: Codeforces - 2019-2020 ICPC Asia Hong Kong Regional Contest
// URL: https://codeforces.ml/gym/102452/problem/I
// Memory Limit: 512 MB
// Time Limit: 2000 ms
// Date: 2021-11-25 22:17:28
// --------by Herio--------#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=2e5+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = {402653189,805306457,1610612741,998244353};
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n){for(int i=1;i<n;i++)printf("%d ",a[i]);printf("%d\n",a[n]);
}
template <typename T>     //x=max(x,y)  x=min(x,y)
void cmx(T &x,T y){if(x<y) x=y;
}
template <typename T>
void cmn(T &x,T y){if(x>y) x=y;
}
int n,m,last;
int a[N][4],cnt;
int goal[N];
bool vis[N];
ll tim[N];
priority_queue<PII,vector<PLL>,greater<PLL> >q[N];
void solve(int x){vector<int>ans;while(!q[x].empty()&&tim[x]>=q[x].top().x){auto u=q[x].top();q[x].pop();int id = u.y;if(vis[id]) continue;ll rest = goal[id] ;rep(i,1,a[id][0]) rest -= tim[a[id][i]];if(rest<=0){ans.pb(id);vis[id]=1;continue;}ll delta = (rest+a[id][0]-1)/a[id][0];rep(i,1,a[id][0]) q[a[id][i]].push({(tim[a[id][i]]+delta),id});}printf("%d",SZ(ans));last=SZ(ans);sort(ans.begin(),ans.end());for(int x:ans) printf(" %d",x);puts("");
}
int main(){scanf("%d%d",&n,&m);while(m--){int op;scanf("%d",&op);if(op==1){int y,k;scanf("%d%d",&y,&k);y^=last;goal[++cnt]=y;a[cnt][0]=k;ll delta = (y+k-1)/k;rep(j,1,k){scanf("%d",&a[cnt][j]);a[cnt][j]^=last;goal[cnt]+=tim[a[cnt][j]];//这里要加上之前的观测值//因为是从现在开始算,前面的不算贡献}rep(j,1,k){q[a[cnt][j]].push({(tim[a[cnt][j]]+delta),cnt});}}else {int x,y;scanf("%d%d",&x,&y);x^=last,y^=last;tim[x]+=y;solve(x);}}return 0;
}

I Incoming Asteroids(优先队列)相关推荐

  1. 2019 香(shen)港(zhen)Regional补题

    C. Constructing Ranches 给一棵树,点带权,问有多少条路径的点权能构成一个严格(指有面积)的多边形. 结论:充要条件为∑ai−max⁡ai>max⁡ai\sum a_i - ...

  2. 优先队列的应用 C++实现

    优先队列的应用 C++实现 优先队列可以用堆来实现, 堆底层可以用数组表示, 通过索引关系,可以表示成一颗二叉完全树 C++的STL提供了相应的容器适配器 包含在queue头文件中 下面通过一道题来看 ...

  3. ccf 交通规划(迪杰斯特拉优先队列模板)

    什么跟什么就是刘汝佳小白书迪杰斯特拉队列的优先队列法 #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f ...

  4. c++ std::priority_queue优先队列

    template <class T, class Container = vector<T>,class Compare = less<typename Container:: ...

  5. 《程序设计解题策略》——1.6 利用左偏树实现优先队列的合并

    本节书摘来自华章计算机<程序设计解题策略>一书中的第1章,第1.6节,作者:吴永辉 王建德 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.6 利用左偏树实 ...

  6. 排序(一)归并、快排、优先队列等(图文具体解释)

    排序(一) 0基础排序算法 选择排序 思想:首先,找到数组中最小的那个元素.其次,将它和数组的第一个元素交换位置.再次.在剩下的元素中找到最小的元素.将它与数组的第二个元素交换位置. 如此往复,直到将 ...

  7. MYSQL实现ORDER BY LIMIT的方法以及优先队列(堆排序)

    一.MYSQL中的LIMIT和ORACLE中的分页 在MYSQL官方文档中描述limit是在结果集中返回你需要的数据,它可以尽快的返回需要的行而不用管剩下的行, 在ORACLE中也有相关的语法比如 1 ...

  8. 373. Find K Pairs with Smallest Sums (java,优先队列)

    题目: You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. Def ...

  9. 暑期集训4:栈,树,优先队列 例 :  UVA - 514 ​​​​​​​​​​​​​​

    2018学校暑期集训第四天--栈,树,优先队列 例题  --   UVA - 514 Rails There is a famous railway station in PopPush City. ...

  10. pku 1724 ROADS BFS +优先队列

    http://poj.org/problem?id=1724 题意: Bob现在有的钱数为k,他想从城市1到城市n,给出m条连接两个城市的有向边,并且给出路的长度w,和经过这条路要交的钱数c.问Bob ...

最新文章

  1. 域控制器升级的先决条件验证失败新建_快应用开发工具升级v1.4.0
  2. 1109: 胥哥的DOTA-水题(直接做,时间也不超限)
  3. 与 OpenCV 1 同时使用
  4. Java核心篇之Redis--day4
  5. Js中Symbol对象
  6. PDE双曲型方程数值解形式及例题分析
  7. python模块化编程_什么是模块,Python模块化编程(入门必读)
  8. mt6735通用recovery_MTK65XX通用线刷刷机工具驱动-MTK65xx刷机工具驱动及教程下载最新免费版-西西软件下载...
  9. 清空select下拉框的方法
  10. 经验分享|测试工程师转型测试开发历程
  11. XMLHTTP Get HTML页面时的中文乱码之完全客户端Script解决方案
  12. 使用WinSCP上传下载IPAD的文件
  13. android ram rom测试工具,ROM与RAM的那点事,超详细解说
  14. 移动端页面键盘弹出后导致body高度变低背景图片被挤上去解决方法
  15. 什么是线程线程和进程的区别
  16. 2024清华大学计算机考研信息汇总
  17. pip install psycopg2报错
  18. DNA提取过程中各种试剂的作用
  19. Redis缓存吊打面试官 25 问
  20. 苏宁818战报幕后:“冬有双11,夏有818”如何形成

热门文章

  1. 锁定计算机快捷键6,6个快捷键,轻松玩转你的电脑(收藏)
  2. 屏幕录制专家,如何上传到优酷的高清视频?
  3. 详细解说冲压模具的结构和分类
  4. mac视频太大怎么压缩 苹果电脑怎么压缩视频大小的软件
  5. java判断是否是自然数_java判断输入的是否是自然数
  6. 海滩xxxx_人工智能处理海洋垃圾:借助数据清理世界各地的海滩
  7. vmware虚拟机linux重置密码
  8. matlab编程复指数,matlab复指数序列
  9. 高数 | 函数可导和函数连续可导
  10. java jdk--同时安装两个jdk并且切换