#29345: 求救 C++


yp11051231@yphs.tp.edu.tw (910-36 楊宸)

學校 : 臺北市私立延平高級中學
編號 : 165190
來源 : [203.72.178.2]
最後登入時間 :
2024-10-23 12:41:56
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [36.225.63.45] | 發表日期 : 2022-02-16 21:40

這是我寫的程式,但 while 迴圈只執行一圈就中斷了,還顯示RE,幫幫忙,感恩!!

 

# include <bits/stdc++.h>

using namespace std;

 

int main()

{

int w,p,money;

cin >> w >> p;

 

vector<int> v; 

for (int i=0; i<p; i++){

cin >> money;

v.push_back(money);

}

 

sort(v.begin(),v.end());

int Total=0 ,Count=0;

 

while (v.size() > 1){

int Index = v.size() - 1;

Total = v[Index];

 

if (Total + v[0] <= w){

Total += v[0];

v.erase(v.begin());

v.erase(v.end());

 

for (int i=0; i<v.size(); i++){

Total += v[0];

if (Total >= w)

    break;

else

    v.erase(v.begin());

}

}

else

    v.erase(v.end());

 

Count += 1;

}

 

cout << Count+1 << '\n';

 

return 0;

}

 
#29346: Re:求救 C++

Unknown User

b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [111.248.164.222] | 發表日期 : 2022-02-16 23:33

這是我寫的程式,但 while 迴圈只執行一圈就中斷了,還顯示RE,幫幫忙,感恩!!

 

# include <bits/stdc++.h>

using namespace std;

 

int main()

{

int w,p,money;

cin >> w >> p;

 

vector v; 

for (int i=0; i<p; i++){

cin >> money;

v.push_back(money);

}

 

sort(v.begin(),v.end());

int Total=0 ,Count=0;

 

while (v.size() > 1){

int Index = v.size() - 1;

Total = v[Index];

 

if (Total + v[0] <= w){

Total += v[0];

v.erase(v.begin());

v.erase(v.end());

 

for (int i=0; i<v.size(); i++){

Total += v[0];

if (Total >= w)

    break;

else

    v.erase(v.begin());

}

}

else

    v.erase(v.end());

 

Count += 1;

}

 

cout << Count+1 << '\n';

 

return 0;

}

每组最多只能包括两件纪念品

 
#29347: Re:求救 C++


linlincaleb@gmail.com (臨末之頌)

學校 : 新北市立板橋高級中學
編號 : 132772
來源 : [203.64.161.123]
最後登入時間 :
2024-07-29 10:02:49
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [111.248.164.222] | 發表日期 : 2022-02-16 23:45

這是我寫的程式,但 while 迴圈只執行一圈就中斷了,還顯示RE,幫幫忙,感恩!!

 

# include <bits/stdc++.h>

using namespace std;

 

int main()

{

int w,p,money;

cin >> w >> p;

 

vector v; 

for (int i=0; i<p; i++){

cin >> money;

v.push_back(money);

}

 

sort(v.begin(),v.end());

int Total=0 ,Count=0;

 

while (v.size() > 1){

int Index = v.size() - 1;

Total = v[Index];

 

if (Total + v[0] <= w){

Total += v[0];

v.erase(v.begin());

v.erase(v.end());

 

for (int i=0; i<v.size(); i++){

Total += v[0];

if (Total >= w)

    break;

else

    v.erase(v.begin());

}

}

else

    v.erase(v.end());

 

Count += 1;

}

 

cout << Count+1 << '\n';

 

return 0;

}

我從來沒寫過"v.erase(v.begin());"欸 用deque不香?

 
#29354: Re:求救 C++


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [110.26.134.35] | 發表日期 : 2022-02-17 18:12

這是我寫的程式,但 while 迴圈只執行一圈就中斷了,還顯示RE,幫幫忙,感恩!!

 


    v.erase(v.end());

 

應該是這裡RE,end()是最後一個元素再往後面一位,是沒有東西的。可以改成v.pop_back()

 
#29355: Re:求救 C++


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [110.26.134.35] | 發表日期 : 2022-02-17 18:55

這是我寫的程式,但 while 迴圈只執行一圈就中斷了,還顯示RE,幫幫忙,感恩!!

 

# include <bits/stdc++.h>

using namespace std;

 

int main()

{

int w,p,money;

cin >> w >> p;

 

vector v; 

for (int i=0; i<p; i++){

cin >> money;

v.push_back(money);

}

 

sort(v.begin(),v.end());

int Total=0 ,Count=0;

 

while (v.size() > 1){

int Index = v.size() - 1;

Total = v[Index];

 

if (Total + v[0] <= w){

Total += v[0];

v.erase(v.begin());

v.erase(v.end());

 

for (int i=0; i<v.size(); i++){

Total += v[0];

if (Total >= w)

    break;

else

    v.erase(v.begin());

}

}

else

    v.erase(v.end());

 

Count += 1;

}

 

cout << Count+1 << '\n';

 

return 0;

}

我從來沒寫過"v.erase(v.begin());"欸 用deque不香?


我沒用過deque,可是我覺得這題不一定要用到erase()或deque,只要用兩個iterator,一個由前往後,另一個由後往前就好了

 
ZeroJudge Forum