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. ...
随机推荐
- CSS3属性border-radius绘制多种多样的图形
border-radius,国内翻译成圆角,你可能以为这个属性就是用来画圆角,没错,但是除此之外,它还可以做点别的事情.radius其实指的是边框所在圆的半径,这个CSS3属性不仅能够创建圆角,还可以 ...
- Mysql与Redis的同步实践
一.测试环境在Ubuntu kylin 14.04 64bit 已经安装Mysql.Redis.php.lib_mysqludf_json.so.Gearman. 点击这里查看测试数据库及表参考 本文 ...
- 使用ContentProvider进行应用程序间的数据交互
什么是ContentProvider: ContentProvider用来管理数据的访问规则.它允许你的应用程序向外界暴露需要被访问的数据. 是Android的四大组件之一. ContentProvi ...
- android Baseadapter 和 ViewHolder的使用
昨晚学习了徐大神的关于BaseAdapter的讲解,让我受益匪浅特来博客留下印记 说到baseadapter大家一定都不陌生,下面这张图就展示了数据.listview.baseadapter 之间的关 ...
- Day Seven(Beta)
站立式会议 站立式会议内容总结 331 今天: 1)阅读html 5+文档 未来走h5路线 2)restful,未来开发接口 3)h5+demo运行 4)get 代码:a||(a=as); 5)js ...
- asp.net MVC添加HtmlHelper扩展示例和用法
一.先创建一个HtmlHelper的扩展类,代码: using System; using System.Collections.Generic; using System.Linq; using S ...
- Mysql-通过case..when实现oracle decode()函数进行多值多结果判断
oracle的decode函数使用:http://www.cnblogs.com/hwaggLee/p/5335967.html case ..when 函数使用:http://www.cnblogs ...
- Maven-setting.xml详解
settings.xml对于maven来说相当于全局性的配置,用于所有的项目,当Maven运行过程中的各种配置,例如pom.xml,不想绑定到一个固定的project或者要分配给用户时,我们使用set ...
- 华硕笔记本BIOS设置详解
BIOS是英文Basic Input/Output System的缩写,即基本输入输出系统,合理的BIOS设置可以让我们的电脑更好的为我们服务,但由于大部分笔记本的BIOS界面是英文,并且BIOS里面 ...
- 6 this的使用方法
class Person { String name; void talk() { System.out.println("my name is "+this.name); } } ...