【qduoj - 312】寻找唯一的萌妹(卡时)
題干:
尋找唯一的萌妹
Description
?
又到了一年一度ACMer暑期留校集訓的日子了,目前一共有2n+1個小萌新報名參加暑期集訓,其中2n個是帥哥,只有1個萌妹子,這是多么的悲催!由于暑期訓練強度大,堅持下來可不是一件容易的事情,DHG學長想到了一個巧妙的方法,兩個人組成一隊,兩人互相鼓勵,互相監(jiān)督,直到集訓順利完成。然而,只有具有相同抗壓能力的兩位同學才能組在一起,并且這個唯一的萌妹子比較高傲不愿意和現(xiàn)有的2n個帥哥組隊,只想和下一個報名的同學組隊。作為仍未報名的你,想和這傳說中的萌妹子組隊,要求你輸出萌妹子的抗壓能力值。
Input
?
第一行一個n(n<=1000000)
第二行2n+1個數(shù),表示每個小萌新的抗壓能力值xi(-99999999<xi<99999999)。
Output
?
只輸出一個數(shù)字,表示萌妹的抗壓能力值。
Sample Input 1?
2 1 2 2 1 3Sample Output 1
3Sample Input 2?
1 -2 -2 1Sample Output 2
1Hint
題目保證:有正確答案;
?
解題報告:
? ? ? 這是集訓隊納新的一道題目,比賽時是用map做的。超時了。
? ? ?其實用map也是可以的但是要用迭代器遍歷或者mp[ a[i] ]這樣遍歷,而不能從-99999999~~+99999999這樣遍歷,這不是作死嗎。
?
TLE代碼:(1040ms)
#include<iostream> #include<map> #include<list> #include<algorithm> using namespace std; list<int> lili; bool cmp(const int & a,const int & b ) {return a<b; } map<int,int> mp; int main() {int n;int tmp;scanf("%d",&n);n=n*2+1;for(int i = 1; i<=n; i++) {scanf("%d",&tmp);if(mp[tmp]==1) {list<int> :: iterator it;for(it=lili.begin();it!=lili.end(); it++ ) {if(*it==tmp) break;}lili.erase(it);mp[tmp]=0;}else {mp[tmp]=1;lili.push_back(tmp);}}cout << lili.front() << endl;return 0; }TLE代碼2:(1272ms)
#include<iostream> #include<map> #include<list> #include<algorithm> using namespace std; list<int> lili; bool cmp(const int & a,const int & b ) {return a<b; } map<int,int> mp; int main() {int n;int tmp;scanf("%d",&n);n=n*2+1;for(int i = 1; i<=n; i++) {scanf("%d",&tmp);if(mp[tmp]==1) {mp.erase(tmp);}else {mp[tmp]=1;}}map<int,int> :: iterator it;for(it=mp.begin();it!=mp.end();it++) {printf("%d\n",*it);}return 0; }wa代碼:(1376ms)
#include<iostream> #include<map> using namespace std; //int a[100000000]; map<int,int> mp; int main() {int n;int tmp;scanf("%d",&n);n=n*2+1;for(int i = 1; i<=n; i++) {scanf("%d",&tmp);mp[tmp]++;}for(int i = 1; i<=n; i++) {if(mp[i]&1) {printf("%d\n",i);break;}}return 0 ; } //2 //1 2 2 1 3ac代碼:
#include<iostream> #include<algorithm>using namespace std; int a[2000005];int main() {int n;scanf("%d",&n);n=n*2+1;for(int i = 1; i<=n; i++) {scanf("%d",&a[i]);}sort(a+1,a+n+1); int cnt=1;int tmp=a[1];for(int i = 2; i<=n; i++) {if(tmp==a[i]) {cnt++;}else {if(cnt&1) {printf("%d",a[i-1]);return 0 ;}else {tmp=a[i];cnt=1;}}}printf("%d",a[n]); //if(a[i]==a[i-1]) { // cnt++; // continue; // } // if( (cnt&1) ) { // printf("%d",a[i]); // return 0; // } // cnt=1; // printf("$dddd");return 0 ;}總結(jié):
? ?1.首先注意數(shù)組別開小 ?開一個1e6肯定上來就玩完了直接RE告辭。得開2e6啊這題!
? ?2.容器這東西,,,很難說啊
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的【qduoj - 312】寻找唯一的萌妹(卡时)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sbdrvdet.exe - sbdrv
- 下一篇: 国债市场迎来好消息,未来的国债品种或更多