标签:style blog http ar io color os sp for
多校的题 切了5 6题 就这道会点= =
其他都是些什么树的分治 图论的一些东西= =
这题 贪心 不难发现吧 每次都尽量选取各自都能获得1分的方案 但可能会出现1 0这种只能一个人得1分 一个人得0分得的方案。
一开始 我很sb地 wa在任意选取了2人 比较他们得分大小。。
正确姿势当然是要 从大到小的来选取。 然后剩余的继续留着选取
放入个优先队列来实现比较好
1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <queue> 5 using namespace std; 6 7 priority_queue<int> q; 8 9 void init( ) 10 { 11 while( !q.empty() ) 12 q.pop(); 13 } 14 15 int main() 16 { 17 cin.sync_with_stdio(false); 18 int t , n , num , ans; 19 int x , y; 20 cin >> t; 21 for( int k = 1 ; k<=t ; k++ ) 22 { 23 cin >> n; 24 init( ); 25 ans = 0; 26 for( int i = 1 ; i<=n ; i++ ) 27 { 28 cin >> num; 29 q.push(num); 30 } 31 while( !q.empty() ) 32 { 33 x = q.top(); 34 if( x<=0 ) 35 break; 36 q.pop(); 37 if( !q.empty() ) 38 { 39 y = q.top(); 40 q.pop(); 41 if( y<=0 ) 42 { 43 ans += x; 44 break; 45 } 46 q.push( x-y ); 47 ans += y; 48 } 49 else 50 { 51 ans += x; 52 break; 53 } 54 } 55 cout << "Case #" << k << ": " << ans << endl; 56 } 57 return 0; 58 }
标签:style blog http ar io color os sp for
原文地址:http://www.cnblogs.com/radical/p/4172170.html