BZOJ4620: [Wf2016]What Really Happened on Mars?
题意比较难懂?反正我为此特地查了优先级倒置和优先级置顶协议是什么。
读懂题以后就好办了,直接模拟即可。
由于数据范围较小,写得比较暴力,应该还有很大优化空间。
- #include<cstdio>
- int clk,n,m,f[21],q[21];
- struct node;
- node*top;
- void build();
- node*find_top();
- int id(node*);
- node&at(int);
- void max_eq(int&s,int t){
- if(s<t)
- s=t;
- }
- struct node{
- char s[100][8];
- int a,b,c,d,k,t,v[100];
- bool r,l;
- void scan(){
- scanf("%d%d%d",&t,&b,&a);
- for(int i=0;i!=a;++i){
- scanf("%s",s[i]);
- sscanf(s[i]+1,"%d",v+i);
- if(*s[i]==76)
- max_eq(q[v[i]],b);
- }
- }
- bool test(int i){
- return*s[k]==76&&(v[k]==i||c<=q[i]);
- }
- void run(){
- c=b;
- for(int i=1;i<=n;++i)
- if(at(i).r&&!at(i).d)
- for(int j=1;j<=m;++j)
- if(f[j]==i&&test(j)){
- l=1;
- max_eq(at(i).c,c);
- }
- r=1;
- }
- void next(){
- if(*s[k]==76)
- f[v[k]]=id(this);
- if(*s[k]==85){
- f[v[k]]=0;
- c=b;
- for(int j=1;j<=m;++j)
- if(f[j]==id(this))
- for(int i=1;i<=n;++i)
- if(i!=id(this)&&at(i).r&&!at(i).d&&at(i).test(j))
- max_eq(c,at(i).c);
- }
- if((k+=*s[k]!=67||++clk&&!--v[k])==a)
- d=clk;
- }
- }task[21];
- int id(node*p){
- return p-task;
- }
- node&at(int i){
- return task[i];
- }
- void build(){
- for(int i=1;i<=n;++i)
- if(at(i).r&&!at(i).d){
- at(i).l=0;
- for(int j=1;j<=m;++j)
- at(i).l|=f[j]&&f[j]!=i&&at(i).test(j);
- }
- }
- node*find_top(){
- top=0;
- for(int i=1;i<=n;++i)
- if(at(i).r&&!at(i).d&&!at(i).l&&(!top||at(i).c>top->c))
- top=&at(i);
- return top;
- }
- bool ended(){
- for(int i=1;i<=n;++i)
- if(!at(i).d)
- return 0;
- return 1;
- }
- int main(){
- scanf("%d%d",&n,&m);
- for(int i=1;i<=n;++i)
- at(i).scan();
- while(!ended()){
- for(int i=1;i<=n;++i)
- if(!at(i).r&&at(i).t==clk)
- at(i).run();
- build();
- if(find_top()||!++clk)
- top->next();
- }
- for(int i=1;i<=n;++i)
- printf("%d\n",at(i).d);
- }
BZOJ4620: [Wf2016]What Really Happened on Mars?的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- (29)Why Earth may someday look like Mars
https://www.ted.com/talks/anjali_tripathi_why_earth_may_someday_look_like_mars/transcript00:12So whe ...
- 【腾讯Bugly干货分享】微信终端跨平台组件 Mars 系列 - 我们如约而至
导语 昨天上午,微信在广州举办了微信公开课Pro.于是,精神哥这两天的朋友圈被小龙的"八不做"刷屏了.小伙伴们可能不知道,下午,微信公开课专门开设了技术分论坛.在分论坛中,微信开源 ...
- 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(二) - 信令传输超时设计
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/9DJxipJaaBC8yC-buHgnTQ 作者简介: ...
- 如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源
1.前言 关于微信内部正在使用的网络层封装库Mars开源的消息,1个多月前就已满天飞(参见<微信Mars:微信内部正在使用的网络层封装库,即将开源>),不过微信团队没有失约,微信Mars ...
- hdu4059 The Boss on Mars(差分+容斥原理)
题意: 求小于n (1 ≤ n ≤ 10^8)的数中,与n互质的数的四次方和. 知识点: 差分: 一阶差分: 设 则 为一阶差分. 二阶差分: n阶差分: 且可推出 性质: 1. ...
- 【腾讯Bugly干货分享】微信mars 的高性能日志模块 xlog
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581c2c46bef1702a2db3ae53 Dev Club 是一个交流移动 ...
- [原创]Eclipse Mars 在Ubuntu升级后无法工作的解决方法
近日将自己的Ubuntu从14.04LTS升级到了16.04LTS,顿时发现Eclipse不能正常工作了,到Ubuntu的官网上转了一圈发现以下解决方案: 症状: [1]Eclipse启动很慢; [2 ...
- PAT (Advanced Level) Practise:1027. Colors in Mars
[题目链接] People in Mars represent the colors in their computers in a similar way as the Earth people. ...
随机推荐
- android studio用法笔记
1.每次创建新工程的时候,就会“check sdk repository”,然而这个进度条一动不动,解决方法:file>setting>plugins>sdk updater禁用就行 ...
- 十天冲刺---Day5
站立式会议 站立式会议内容总结: 燃尽图 照片 PM确实不应该交给组内编码最强的人来做. 编码的过程还要考虑整个项目的流程压力较大. 需要队友的支持和沟通.
- oracle数据匹配merge into
来源于:http://blog.csdn.net/vtopqx/article/details/50633865 前言: 很久之前,估计在2010年左右在使用Oralce,当时有个需求就是需要对两个表 ...
- java 时间操作
设置获取时间日期格式 // 设置日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 为 ...
- Linux_cheat命令安装和使用
1.安装python yum -y install python 2.安装epel源.安装pip yum install epel-release -y yum install python ...
- ES6新特性:Proxy代理器
ES6新特性:Proxy: 要使用的话, 直接在浏览器中执行即可, node和babel目前还没有Proxy的polyfill;,要使用的话,直接在浏览器中运行就好了, 浏览器的兼容性为:chrome ...
- Html一天入门
一.什么是HTML 1.html: HyperText Markup Language 超文本标记语言,是最基础的网页语言,而且都是由标签组成. 2.基本格式: <html> <he ...
- Leetcode 372. Super Pow
使用公式 c = ab => c mod d = [a mod d * b mod d] mod d 所以a^423 mod d = (a^100)^4 * (a ^10)^2 * a^3 ...
- 使用git管理源代码
之前用U盘管理自己的demo很不方便.然后发现网上有个git的网站可以管理源代码 这里只是记录简单使用 注:这不是教程 本人之前也是参考这2篇文章http://blog.jobbole.com/7 ...
- 在VS里配置及查看IL
在VS里配置及查看IL 来源:网络 编辑:admin 在之前的版本VS2010中,在Tools下有IL Disassembler(IL中间语言查看器),但是我想直接集成在VS2012里使用,方法如下: ...