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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

九度OJ1486 /POJ 1029/2012北京大学研究生复试上机

發布時間:2023/12/1 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 九度OJ1486 /POJ 1029/2012北京大学研究生复试上机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

wa到死!wa到死!這是一個看著簡單,坑及其多的題!

坑一:POJ上是單組輸入,九度上是多組輸入,媽蛋要是研究生復試遇到這種大坑肯定死掉啊!而且對于codeforces比較習慣的

   同學肯定會覺得巨坑無比。

坑二:九度OJ上絕對有多余的空字符,什么getchar()都不要用,用cin輸入跳過空格吧!POJ上是沒問題的!

坑三:有很多特殊情況,如果算法不好的話,wa的概率是很大的,比如真的false coin沒有出現在不等式中

先說一些共識:

(1)如果出現的是“=”式子,那么兩邊肯定都是合格的coin,而且false coin肯定不在這個等式里面;

(2)如果出現了不等式,即“<"或者”>"式子,那么可以肯定,在這些式子中肯定都存在一個false coin

(3)如果,一個硬幣是false coin,在每個它出現的式子里,都是不等式,而且,要么它總在輕的一方,

   ?要么它總在重的一方但是這個題其坑無比的是,不能從這個角度想,因為給的數據可能根本沒有邏

   ?輯,就是說,可能會有自相矛盾的數據,在這種情況下,他的逆命題有可能是真的,首先我們把出

   ?現在等式里的數字排除掉即如果每個不等式里某個數字都出現了,即出現次數等于不等式的個數并

   ?且它總是在重的一方,或者總是在輕的一方,那我們說,這個數字極有可能是false coin,但是還

   ?要統計一下,這樣的數字是不是只有一個,如果有兩個,或者沒有,都沒辦法判斷!

我的思路:對于能通過等式判斷出相等的元素,用h【i】=1標記上,意味著false coin絕對不可能是這里面的數字,

對于不等式A[i] < B[i],設置一個light[i]數組,和一個heavy[i]數組,如果一個數出現在了輕的一邊,就讓light[i]++;

如果出現在了重的一邊,就讓heavy[i]++;對于一個false coin,要么他的heavy值等于不等式的個數cas,要么他的light值

等于cas,然后注意不要讓ans重復就可以了。

#include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f const int maxn = 1000+5; int n,k,p; int L[maxn],R[maxn]; int light[maxn],heavy[maxn]; int h[maxn]; char opt; int cas;int main() {while(cin >> n >> k){memset(light,0,sizeof(light));memset(heavy,0,sizeof(heavy));memset(h,0,sizeof(h));cas = 0;for(int t = 1;t <= k; ++t){cin >> p;for(int i = 1; i <= p; ++i)cin >> L[i];for(int i = 1; i <= p; ++i)cin >> R[i];cin >> opt;if(opt == '='){for(int i = 1; i <= p; ++i)h[L[i]] = h[R[i]] = 1;}else if(opt == '<'){cas++;for(int i = 1; i <= p; ++i){light[L[i]]++;heavy[R[i]]++;}}else{cas++;for(int i = 1; i <= p; ++i){heavy[L[i]]++;light[R[i]]++;}}}int cnt = 0,ans;for(int i = 1; i <= n; ++i){if(h[i]==0&&(light[i]==cas||heavy[i]==cas)){ans = i;cnt++;}}if(cnt!=1) printf("0\n");else printf("%d\n", ans);} }

一些幫助大家debug的數據:

input: 3 2 1 1 2 < 1 2 3 <3 2 1 1 2 > 1 1 3 >5 1 2 1 2 3 4 =4 3 2 1 2 3 4 < 2 1 3 2 4 < 1 2 4 =5 3 2 1 3 2 4 > 2 3 5 2 4 > 1 1 4 >5 3 2 1 3 2 4 > 2 3 5 2 4 > 1 1 4 =output:0 1 5 1 4 0

轉載于:https://www.cnblogs.com/Norlan/p/5422423.html

總結

以上是生活随笔為你收集整理的九度OJ1486 /POJ 1029/2012北京大学研究生复试上机的全部內容,希望文章能夠幫你解決所遇到的問題。

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