日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ccf-csp #201903-4 消息传递接口

發布時間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ccf-csp #201903-4 消息传递接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:http://118.190.20.162/view.page?gpid=T86

題目思路

第一次看這道題的時候,感覺像是僅可以可在左邊這個面操作的消消樂。然后每一行可以用一個隊列來存儲,當該行第一個元素被消掉后,只需要把它push出來就可以了。

由于思路存在以下問題,最后還是參考了別人的博客。

  • 如何動態創建那么多隊列(當時還沒寫過隊列數組) ?
  • 如何去模擬這個消除的過程,有什么通用的方法尋找可以消掉的兩個元素?
  • 如何判斷當前狀態能否繼續消下去?
  • 看了dalao的博客后,有了以下思路:

    • 通過隊列數組來存儲各個進程,每次挑選一個指令不為空的進程(preprepre),通過讀取進程隊列的第一個指令等待的進程編號決定下一個要訪問進程(nextnextnext)。
    • nextnextnext 要訪問的進程恰好是 preprepre ,且他們分別為R和S,則把它們消掉。否則,把當前訪問的進程標志為preprepre,然后 把 nextnextnext 置為 preprepre 的第一個指令等待的進程編號(類似于鏈表訪問下一個元素的操作)。
    • 當所有的進程隊列都為空時結束模擬。
    • 至于死鎖判斷,當等待的進程已經訪問過且同為R或S(說明出現了環),或者等待的進程其指令已經為空(等待不會出現的東西),說明出現了死鎖。

    代碼如下

    #include <bits/stdc++.h>using namespace std; typedef long long ll; const int maxn = 1e4 + 10; struct Node {// id表示要訪問進程的id int id, sr; }; int T, n; string str; queue<Node> q[maxn]; // q[i]表示第i號進程 int vis[maxn]; //用于檢測有沒有環(死鎖) void init() {for (int j = 0; j < n; j++) {getline(cin, str);for (int i = 0; i < str.length(); i++) {Node node;node.sr = (str[i++] == 'R' ? 1 : 0);int t = 0;while (i < str.length() && str[i] != ' ')t = t * 10 + str[i++] - '0';node.id = t;q[j].push(node);}} }void solve() {int flag = 1;while (flag) {flag = 0;memset(vis, 0, sizeof(vis));int pre = 0;while (pre < n && q[pre].empty()) pre++;if (pre == n) break;int next = q[pre].front().id;vis[pre] = 1;// 當訪問已經訪問過或者已經沒有指令的進程,說明出現死鎖。 while (!vis[next] && !q[next].empty()) {vis[next] = 1;// 滿足消除條件 if (q[next].front().id == pre && q[next].front().sr != q[pre].front().sr) {flag = 1;q[next].pop();q[pre].pop();break;}// 類似于鏈表訪問一下元素的操作 pre = next;next = q[pre].front().id;}}int ans = 0;for (int i = 0; i < n; i++) {//如果進程指令不為空,說明出現死鎖 if (!q[i].empty()) {ans = 1;// 進程指令的清空操作 while (!q[i].empty()) q[i].pop();}}printf("%d\n", ans); }int main() {//freopen("1.in", "r", stdin);scanf("%d %d", &T, &n);getchar();while (T--) {init();solve();}return 0; }

    最后,還是談談踩到的坑:

  • 需要把首行輸入T和n的值后面的’\n’用getchar()清掉,不然會影響后面getline()的讀入。
  • 把進程中的指令分離時,要注意檢查語句邏輯的正確性。
  • 如果用set或map記錄進程有沒有被訪問過就會超時,改成普通的數組不會超時(耗時:906ms,感覺有點勉強)。
  • 差點忽略了“等待的進程其指令已經為空”這種情況。
  • 參考博客:CSP 201903-4 消息傳遞接口(模擬題) 滿分

    總結

    以上是生活随笔為你收集整理的ccf-csp #201903-4 消息传递接口的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 在线中文一区 | 亚洲v日本 | 成人av电影免费观看 | 五月天国产视频 | 日韩一区二区av | 精品久久久免费 | aaa在线 | 欧美天天性影院 | 国产原创视频 | 久久久久久一区二区 | 国产精品一线天粉嫩av | 欧美老女人性生活视频 | 欧美一区二区三区网站 | 骚色综合 | 中文字幕免费一区 | 欧美国产日韩一区二区 | 日本激情在线 | 免费在线观看黄网站 | 男女激情四射网站 | 成年人性视频 | 寂寞午夜影院 | 制服一区二区 | 亚洲国产日韩欧美一区二区三区 | 女大学生的家政保姆初体验 | 亚洲综合视频网站 | 古装三级吃奶做爰 | 激情另类小说 | 狠狠亚洲 | 无码人妻精品一区二区三区9厂 | 奴性白洁会所调教 | 人人爱爱| 日韩在线免费视频 | 伊人22| 免费黄色在线视频 | 久草精品在线观看视频 | 91香蕉视频在线看 | 日韩黄色片子 | 国产在线免费av | 成人免费看av | 香蕉成视频人app下载安装 | 亚洲第一成年网 | 精品欧美黑人一区二区三区 | 午夜精品偷拍 | 黄色福利网 | 日韩成人午夜电影 | 无码黑人精品一区二区 | 神马午夜在线 | 亚洲图片欧美激情 | 日本不卡在线视频 | 成人毛片18女人毛片免费 | 欧美动态色图 | 国产一区二区三区在线观看 | 亚洲国产精品无码专区 | 日日干夜夜爽 | 国产黄a三级三级看三级 | 色综合中文网 | 97伊人| 久久影院视频 | 成人性爱视频在线观看 | 综合精品久久 | 欧美一区二区三区公司 | 日韩欧美久久久 | 男人猛吃奶女人爽视频 | 禁漫天堂下载18 | 一区二区日韩国产 | 欧美日韩精品一区二区三区蜜桃 | 久操成人| 欧美性视频一区二区 | 日韩人妻无码精品久久免费 | 色94色欧美sute亚洲线路二 | 男女国产精品 | 欧美一级视频免费 | 在线看片网站 | 久久久久久久久久久久久久久久久久久 | 日韩a级大片 | 中国女人一级一次看片 | 亚洲视频123 | 99欧美| av免费不卡| 一级黄色片免费看 | 97夜夜 | 人妖交videohd另类 | 久久橹 | 天天综合中文字幕 | 亚洲另类一区二区 | 免费在线视频你懂的 | 村上凉子av| 亚洲精品乱码久久久久久国产主播 | 午夜寂寞影院在线观看 | 日韩av三级在线 | 九九午夜视频 | 精品人妻一区二区免费 | 久久精选视频 | 欧美成人手机在线 | 在线电影一区二区三区 | 午夜在线免费视频 | 一区二区在线视频观看 | 1024欧美 | 丰满熟妇肥白一区二区在线 |