小編給大家分享一下CCF CSP窗口是什么,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)建站擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、成都天府聯(lián)通服務(wù)器托管解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城系統(tǒng)網(wǎng)站開發(fā)、政府網(wǎng)站等各類型客戶群體,為全球1000多家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。
XSS跨站腳本攻擊,通過虛假內(nèi)容和誘騙點(diǎn)擊來繞過同源策略。這是一個很大的問題,如果攻擊者成功注入代碼,有相當(dāng)多的用戶數(shù)據(jù)會被泄漏。
問題描述
在某圖形操作系統(tǒng)中,有 N 個窗口,每個窗口都是一個兩邊與坐標(biāo)軸分別平行的矩形區(qū)域。窗口的邊界上的點(diǎn)也屬于該窗口。窗口之間有層次的區(qū)別,在多于一個窗口重疊的區(qū)域里,只會顯示位于頂層的窗口里的內(nèi)容。
當(dāng)你點(diǎn)擊屏幕上一個點(diǎn)的時候,你就選擇了處于被點(diǎn)擊位置的最頂層窗口,并且這個窗口就會被移到所有窗口的最頂層,而剩余的窗口的層次順序不變。如果你點(diǎn)擊的位置不屬于任何窗口,則系統(tǒng)會忽略你這次點(diǎn)擊。
現(xiàn)在我們希望你寫一個程序模擬點(diǎn)擊窗口的過程。輸入格式
輸入的第一行有兩個正整數(shù),即 N 和 M。(1 ≤ N ≤ 10,1 ≤ M ≤ 10)
接下來 N 行按照從最下層到最頂層的順序給出 N 個窗口的位置。 每行包含四個非負(fù)整數(shù) x1, y1, x2, y2,表示該窗口的一對頂點(diǎn)坐標(biāo)分別為 (x1, y1) 和 (x2, y2)。保證 x1 < x2,y1 2。
接下來 M 行每行包含兩個非負(fù)整數(shù) x, y,表示一次鼠標(biāo)點(diǎn)擊的坐標(biāo)。
題目中涉及到的所有點(diǎn)和矩形的頂點(diǎn)的 x, y 坐標(biāo)分別不超過 2559 和 1439。輸出格式
輸出包括 M 行,每一行表示一次鼠標(biāo)點(diǎn)擊的結(jié)果。如果該次鼠標(biāo)點(diǎn)擊選擇了一個窗口,則輸出這個窗口的編號(窗口按照輸入中的順序從 1 編號到 N);如果沒有,則輸出"IGNORED"(不含雙引號)。
樣例輸入
3 4
0 0 4 4
1 1 5 5
2 2 6 6
1 1
0 0
4 4
0 5樣例輸出
2
1
1
IGNORED樣例說明
第一次點(diǎn)擊的位置同時屬于第 1 和第 2 個窗口,但是由于第 2 個窗口在上面,它被選擇并且被置于頂層。
第二次點(diǎn)擊的位置只屬于第 1 個窗口,因此該次點(diǎn)擊選擇了此窗口并將其置于頂層。現(xiàn)在的三個窗口的層次關(guān)系與初始狀態(tài)恰好相反了。
第三次點(diǎn)擊的位置同時屬于三個窗口的范圍,但是由于現(xiàn)在第 1 個窗口處于頂層,它被選擇。
最后點(diǎn)擊的 (0, 5) 不屬于任何窗口。
分析:特別簡單的一道題,沒有什么難度,只要理清了順序就好了。
#include#include using namespace std; int main() { int N, M; cin >> N >> M; vector win; vector ::iterator it; for (int i = N; i > 0; i--) { win.push_back(i); } int position[11][4]; int cli[13][2]; for (int i = 1; i <= N; i++) { for (int j = 0; j < 4; j++) { cin >> position[i][j]; } } for (int i = 0; i < M; i++) { for (int j = 0; j < 2; j++)//由于寫這個的時候精神狀態(tài)不是很好,原來寫成j>2了。后來實(shí)在找不到哪里錯了,只好把for循環(huán)重寫了一遍。 { cin >> cli[i][j]; } } for (int i = 0; i < M; i++) { bool you = true; for (int j = 0; j < N; j++) { if (cli[i][0] >= position[win[j]][0] && cli[i][0] <= position[win[j]][2] && cli[i][1] >= position[win[j]][1] && cli[i][1] <= position[win[j]][3]) { cout << win[j] << endl; you = false; if (j != 0) { int a = win[j]; for (it = win.begin(); it != win.end();) { if (*it == a) { it = win.erase(it); // break; } //刪除元素,返回值指向已刪除元素的下一個位置 else { ++it; } //指向下一個位置 } win.insert(win.begin(), a); } break; } } if (you) { cout << "IGNORED" << endl; } } return 0; }
看完了這篇文章,相信你對“CCF CSP窗口是什么”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!