大一寒假訓練 set

2021-10-02 22:03:39 字數 3077 閱讀 9456

錯誤的刪除操作?

上圖的操作會把迭代器刪除!!

it的指向就空了!!

於是會出現下圖警示?

正確的操作?

for

(it = ans.

begin()

; it != ans.

end();

)

#include

using

namespace std;

set<

int> ssr;

set<

int>

::iterator it;

int n, x;

intmain()

cout << ssr.

size()

<< endl;

for(it = ssr.

begin()

; it != ssr.

end(

); it++

) it == ssr.

begin()

? cout <<

*it : cout <<

" "<<

*it;

//按格式輸出

ssr.

clear()

; cout<

}//system("pause");

return0;

}

#include

using

namespace std;

set<

int> ssr;

set<

int>

::iterator it;

int n, k, x;

intmain()

if(k <= ssr.

size()

)else

cout <<

"no result"

;//system("pause");

return0;

}

#include

using

namespace std;

set ssr;

string str;

int n, x;

intmain()

else

}//system("pause");

return0;

}

所有的路都必須從右往左(按示例圖說的)遞減才能排出來。例如輸入:

98 4 2 5 3 9 1 6 7

先存8,再輸入4,4比8小,用4代替8(遞減排的要求),2代替4;

再碰到5,得新開一條路,於是存進去,計數器加一……

注意,因為是最少路數,所以用的upper_bound;

所以最終四條路是這樣的:(刪除線表示依次被替換)

8 4 2 1

5 39 6

7(打算用純陣列寫弄了將近兩個小時也沒ac,老老實實set吧)

#include

using

namespace std;

set<

int> ssr;

set<

int>

::iterator it;

int n, x, ans;

intmain()

else

else}}

cout << ans;

//system("pause");

return0;

}

這題主要是題意不明。

意思應該是去掉單個集合內重複的數,然後再看兩個集合中有幾對相等的數,分母就是去重後的元素個數減去相同的對數(我也不知道這從題目是怎麼推出來的,只能從輸入輸出一種關係一種關係的試)

#include

using

namespace std;

set<

int> ssr[51]

;//set陣列

int n, m, x;

intmain()

}int k;

cin >> k;

while

(k--

)//system("pause");

return0;

}

這題不難,但卡了我很久,原因就是上面的特別注意部分/大哭

以至於我都沒心情寫注釋了,應該還好懂吧

#include

using

namespace std;

set<

int> ssr[

1005

], ans;

set<

int>

::iterator it;

int n, m, x, t;

intmain()

}int k, s, n2;

scanf

("%d"

,&k)

;for

(int i =

1; i <= m; i++

) ssr[

1002].

insert

(i);

while

(k--)}

}else}}

for(it = ans.

begin()

; it != ans.

end(

); it++

)printf

("%d "

,*it)

;printf

("\n");

}//system("pause");

return0;

}

2020 2 18 大一寒假訓練十一(set)

模板題。include using namespace std int n,t set int s intmain cout int iterator it for it s.begin it s.end it cout return0 去重並排序。pragma gcc optimize 2 inc...

大一寒假訓練(七)

借鑑二位博主 抱拳 nefu ljw link.nefu wmjlink.problem a 週末舞會 佇列 link.include using namespace std queue int vis1,vis2 intmain return0 problem b 取牌遊戲 佇列 set link...

大一寒假訓練 暴力列舉

其實就是直接迴圈遍歷,利用計算機強大的計算效能,也就是俗稱的 乙個個試 2 5 6題較難 這題需要理清一下思路,然後六重迴圈完事。不超時是因為資料小,資料較多肯定tle.include using namespace std intmain return0 這裡的 是nefu ljw學長的解法,我理...