ccf 201903-4 消息传递接口 100

思路:我们发现每个进程的代码都由空格隔开,代码都有两部分组成:标识符:‘R‘ or ’S‘;目的进程:一组数字字符串。

成功接受或发送,那么这份代码便消失了,开始该进程下一份代码的比较。这让我们很容易想到队列。

我们为每个进程都创建一个队列,队列中放代码,成功匹配代码,我们便将其从队列中pop掉,那么判断进程是否阻塞便变为了判断终态的队列是否为空。

剩下的就是比对了,直接比对显然很困难,我们可以定义一个结构体,这个结构体便相当于我们的代码,标识符‘R‘ or ’S‘我们可以转化为0,1;数字字符串转化为为一个int类型的目的进程编号。

接下来就是具体实现了,附上代码。

ps:stringstream是一个非常好用的类,谁用谁知道,各位读者可以了解一下,对于字符串分段处理有很好的帮助,没有必要重新定义函数专门拆分字符串。也算是一个小技巧吧。重复利用需要clear(),最后清理缓冲区用str()。

#include<bits/stdc++.h>
using namespace std;
struct node{
    int ind,t;
    node(string &s,int &n){
        int temp=0,i=1;
        if(s[0]==‘R‘){
            ind=0;
        }
        else ind=1;
        while(s[i]){
            temp=10*temp+(s[i++]-‘0‘);
        }
        t=temp%n;
    }
};
vector<queue<node> > ss;
queue<node> m;
int main(){
    int T,n,t;cin>>T>>n;
    string s;getchar();
    stringstream sss;
    while(T--){
        for(int i=0;i<n;i++){
            getline(cin,s);
            sss<<s;
            while(sss>>s){
                m.push(node(s,n));
            }
            ss.push_back(m);sss.clear();
            while(!m.empty())m.pop();
        }
        while(1){
            t=0;
            for(int i=0;i<n;i++){
                if(ss[i].empty())continue;
                node k=ss[i].front();
                if(ss[k.t].empty())break;
                node h=ss[k.t].front();
                if((h.ind+k.ind)!=1)continue;
                if(h.t!=i)continue;
                ss[i].pop();ss[k.t].pop();
                t++;i--;
            }
            if(!t)break;
        }
        for(int i=0;i<n;i++){
            if(!ss[i].empty()) {t=1;break;}
        }
        if(!t)puts("0");
        else puts("1");
        while(!ss.empty())ss.pop_back();
    }
    sss.str("");
    return 0;
}

原文地址:https://www.cnblogs.com/Stickler/p/10917837.html

时间: 2024-10-17 04:31:50

ccf 201903-4 消息传递接口 100的相关文章

(转)接口100

关键字:微信公众平台 微接口 接口100 API100 接口大全 作者:方倍工作室 在本文中,我们列出微信公众平台上可以使用的API接口以及举例如何在微信公众平台调用这些接口实现相应的功能. 接口调用说明:① Appkey请使用的微信公众号,不要使用默认的trailuser② 接口返回类型为文本.图文.及音乐三种基本消息③ 请在所有消息底部主动加上"技术支持 方倍工作室"④ JSON验证网址 http://pro.jsonlint.com/⑤ 接口将不定期增加或更新,欢迎指出错误⑥ 如

201903-4 消息传递接口 (80&#39;)

最后一个点T,不知道怎么优化比较好. #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> pii; #define pb(x) push_back(x) #define cls(x, val) memset(x, val, sizeof(x)) #define fi first #defin

201903-4 消息传递接口

样例1 输入: 3 2R1 S1S0 R0R1 S1R0 S0R1 R1 R1 R1 S1 S1 S1 S1S0 S0 S0 S0 R0 R0 R0 R0 输出: 0 1 0 样例二: 输入: 2 3R1 S1R2 S0 R0 S2S1 R1R1R2 S0 R0S1 R1 输出: 0 1 思路: 1.建一个结构体,存x S/R y  ,注意,x 可能不止一位数.用队列顺序存储每个进程. 2.用getchar()来取字符串后面的字符,如果取到的是换行,那么该进程结束,去取下一个进程. 3.如果顺序

微信公众号API测试——接口调用频率限制

接口频率限制[1] 公众号调用接口并不是无限制的.为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码: {"errcode":45009,"errmsg":"api freq out of limit"} 各接口调用频率限制如下: 接口 每日限额 获取access_token 2000 自定义菜单创建 1000 自定义菜单查询 10000 自定义菜

银行卡系统 接口

1 package card; 2 //银行卡系统 3 4 import java.util.Scanner; 5 6 public class UnionPayTest { 7 public static void main(String[] args) { 8 UnionPay icbc = new ICBCImpl(2000,"123456"); 9 10 Scanner input = new Scanner(System.in); 11 System.out.println(

接口调用频次限制说明

公众号调用接口并不是无限制的.为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码: {"errcode":45009,"errmsg":"api freq out of limit"} 开发者可以登录微信公众平台,在帐号后台开发者中心接口权限模板查看帐号各接口当前的日调用上限和实时调用量,对于认证帐号可以对实时调用量清零,说明如下: 1.由于指标计

C#并行编程

一.基于任务的程序设计 共享内存多核OS和分布式内存OS 共享内存多核OS-一个微处理器由多个内核组成,且每个内核共享一段私有内存: 分布式内存OS-- 由多个微处理器组成,每个微处理器可以有自己的私有内存,微处理器可以位于不同的计算机上,每个计算机可以有不同的通信信道 消息传递接口(MPI):运行在分布式内存计算机系统上的并行应用程序所使用的最流行的通信协议: 并行程序设计和多核程序设计 并行程序是指同一时刻运行多条指令,编写的代码能够充分利用底层硬件提供的并行执行能力:多核程序设计能够充分利

分布式系统

Distributed systems: for fun and profit (http://book.mixu.net/distsys/index.html) 链接:https://www.zhihu.com/question/23645117/answer/124708083 这篇文章主要试图回答以下两个个问题:1. 近些年分布式系统领域都在做些什么.2. 为什么现在投入分布式系统的学习和研究是值得的.我会尽可能多的去介绍更 "实用" 的分布式系统知识. 什么是实用?例如:Pax

【并行计算】用MPI进行分布式内存编程(一)

通过上一篇关于并行计算准备部分的介绍,我们知道MPI(Message-Passing-Interface 消息传递接口)实现并行是进程级别的,通过通信在进程之间进行消息传递.MPI并不是一种新的开发语言,它是一个定义了可以被C.C++和Fortran程序调用的函数库.这些函数库里面主要涉及的是两个进程之间通信的函数.MPI可以在Windows和linux环境中都有相应的库,本篇以Windows10作为演示开发环境. 1.Windows10+VS 2015上搭建MPI开发环境 下载 mpi for