佇列就是允許在一端進行插入,在另一端進行刪除的線性表。允許插入的一端稱為隊尾,通常用乙個隊尾指標r, r指向隊尾元素,即r r總是指向最後被插入的元素;允許刪除的一端稱為隊首,通常也用乙個隊首指標f, f指向排頭元素的前面。初始時 f=r=0
(1)初始化佇列 queuevis ,定義乙個佇列
(2)入隊 vis.push(x)
(3)出隊 vis.pop()
(4)判斷佇列是否為空 vis.empty()
(5)判斷佇列中元素的數量vis.size()
(6)得到佇列的隊首元素 vis.front()
綜上: #include
用則無需考慮標頭檔案。
小k是乙個海港的海關工作人員,每天都有許多船隻到達海港,船上通常有很多來自不同國家的乘客。
小k對這些到達海港的船隻非常感興趣,他按照時間記錄下了到達海港的每一艘船隻情況;對於第i艘到達的船,他記錄了這艘船到達的時間ti (單位:秒),船上的乘客數k,以及每名乘客的國籍x1,x2,x3,x4等;
小k 統計了這n 艘船的資訊,希望你幫助計算出每1艘船到達為止的24小時(86400秒)內到達的船上的乘客來自多少個國家?
input
第1行為乙個n,表示有n條船;
接下來有n行,每行前2個數為t和k,表示這艘船的到達時間和船上的旅客數量!
然後是這k個旅客的國籍(x1 x2 x3 …都是整數)
output
輸出n行,每行代表這艘船到達為止的24小時(86400秒)內到達的船上的乘客來自多少個國家?
t[i]-t[p]<86400,t[i]表示當前船的時間,t[p]表示之前進海港的船!
1<=n,k<=300000; 1<=ti<=1000000000;
sample input
例子輸入1:
31 4 4 1 2 2
2 2 2 3
10 1 3
例子輸入2:
41 4 1 2 2 3
3 2 2 3
86401 2 3 4
86402 1 5
sample output
例子輸出1:34
4例子輸出2:33
34hint
#include
#include
using
namespace std;
const
int n=
1e5+1;
struct node
;int n,m,i,t,w,j,x;
int a[n]
;queuevis;
intmain()
);if(a[x]==0
) w++
; a[x]++;
}while
(t-vis.
front()
.t>=
86400
)printf
("%d\n"
,w);
}return0;
}
n個人圍成乙個圓桌,按照順時針的順序1,2,…n進行編號;某乙個人開始報乙個數字,然後順時針的下乙個人會報數+1;當某個人報的數字含有7或是7的倍數時,這個人退出遊戲,其他人接著報數!直到剩下乙個人為止!
input
輸入n,m,t;n代表人數,m代表開始報數的人的編號;t表示開始報數的人報出的數字是t;
然後接下來有n行,是這n個人的名字!
output
輸出最後乙個人的名字!
sample input
5 3 20
liming
wangze
gongxiangjun
wangming
chenzhen
sample output
chenzhen
#include
#include
using
namespace std;
struct node
p[1001];
bool
fun(
int x)
return0;
}queuevis;
intmain()
for(i=
1;i<=n;i++
)for
(i=1
;i<=m-
1;i++
)while
(vis.
size()
>1)
printf
("%s\n"
,vis.
front()
.name.
c_str()
);return0;
}
n個小朋友們坐成乙個圓圈,編號分別為1,2,3…n;第1個小朋友從1開始報數,報到m的小朋友離開座位;然後下乙個小朋友從1接著報數;直到剩下最後乙個小朋友為止;
input
輸入2個數字n和m;(1<=n,m<=1000)
output
輸出最後乙個小朋友的編號!
sample input
10 5
sample output
3
#include
#include
using
namespace std;
queue<
int>vis;
intmain()
num=0;
while
(vis.
size()
>1)
printf
("%d"
,vis.
front()
);return0;
}
小明正在使用一堆共 k 張紙牌與 n-1 個朋友玩取牌遊戲。其中,n≤k≤100000,2≤n≤100,k 是 n 的倍數。紙牌中包含 m=k/n 張「good」牌和 k-m 張「bad」牌。小明負責發牌,他當然想自己獲得所有「good」牌。
他的朋友懷疑他會欺騙,所以他們給出以下一些限制,以防小明耍詐:
1)遊戲開始時,將最上面的牌發給小明右手邊的人。
2)每發完一張牌,他必須將接下來的 p 張牌(1≤p≤10)一張一張地依次移到最後,放在牌堆的底部。
3)以逆時針方向,連續給每位玩家發牌。
小明迫切想贏,請你幫助他算出所有「good」牌放置的位置,以便他得到所有「good」牌。牌從上往下依次標註為 #1,#2,#3,…
input
第 1 行,3 個用乙個空格間隔的正整數 n、k 和 p。
output
m 行,從頂部按公升序依次輸出「good」牌的位置。(就是從小到大輸出)
sample input
3 9 2
sample output37
8
#include
#include
using
namespace std;
const
int n=
1e5+1;
queue<
int>vis;
intmain()
if(!vis.
empty()
)}}sort
(a,a+k/n)
;for
(i=0
;i)return0;
}
close
copyri
假設在週末舞會上,男士們和女士們進入舞廳時,各自排成一隊。跳舞開始時,依次從男隊和女隊的隊頭上各出一人配成舞伴。規定每個舞曲只能有一對跳舞者。若兩隊初始人數不相同,則較長的那一隊中未配對者等待下一輪舞曲。現要求寫乙個程式,模擬上述舞伴配對問題。
input
第 1 行兩個正整數,表示男士人數 m 和女士人數 n,1≤m,n≤1000;
第 2 行乙個正整數,表示舞曲的數目 k,k≤1000。
output
共 k 行,每行兩個數,之間用乙個空格隔開,表示配對舞伴的序號,男士在前,女士在後。
sample input
2 46
sample output
1 12 2
1 32 4
1 12 2
#include
#include
using
namespace std;
queue<
int>vis1,vis2;
intmain()
return0;
}close
東北林業大學acm大一培訓(素數篩)
1.不知名篩選 篩法的思想是去除要求範圍內所有的合數,剩下的就是素數 了,而任何合數都可以表示為素數的乘積,因此如果已知一 個數為素數,則它的倍數都為合數。2.埃氏篩 合數的倍數一定會在篩素數倍數時候被篩掉,所以只篩素數就好,只把質數的素 數篩掉 就是找到乙個質數,把它的倍數全部標記為合數。但是你會...
東北林業大學OJ題目1
百步穿楊 problem 796 time limit 1000ms memory limit 65536k description 時維九月,序屬三秋,遼軍大舉進攻帽兒山,戰場上兩軍正交鋒.遼軍統帥是名噪一時的耶律洪豬,而帽兒山方則是派出了傳統武將 松樹葉子。雙方經過協商,約定在十一月八日正午十分...
東北林業大學oj1025 又是指標
現在有的程式根本用不上指標 但由於學c 不得不用指標這個讓我苦笑不得的東西 這道題 就是乙個例子 本來 簡簡單單的字串查詢 變成指標 o my god!題就是下面的 程式完成在一些已知字串中查詢含有 最多的字串的功能。要求用返回指標值的函式完成 找到這個字串,函式返回 最多的字串的首位址,若所有字串...