Supermarket
题意:有n种商品,每个商品有一个价格,和最后售出时间,问价格最大是什么;解析:运用贪心的思想,使用并查集来优化;
其余没什么说的,主要就是并查集将时间划分到同一区域中
注意:n=0不要跳出
// f.cpp : 定义控制台应用程序的入口点。 // //#include "stdafx.h" #include<iostream> #include<algorithm> using namespace std; const int maxn = 10005; int fa[ maxn ], n, m, ans; struct node{ int pro, da; bool operator<(const node &x )const{ return pro > x.pro; } }edge[ maxn ]; void Start(){ for( int i = 0; i < maxn; ++ i ){ fa[ i ] = i; } } int find( int x ){ if( x == fa[ x ] ) return x; int temp = find( fa[ x ] ); return fa[ x ] = temp; } void Union( int a, int b ){ int x = find( a ); int y = find( b ); fa[ y ] = x; } //int _tmain(int argc, _TCHAR* argv[]) int main() { while( cin >> n ){ //if( !n ) // break; Start(); for( int i = 0; i < n; ++i ){ cin >> edge[ i ].pro >> edge[ i ].da; } sort( edge, edge + n ); ans = 0; for( int i = 0; i < n; ++i ){ int temp = find( edge[ i ].da ); if( temp ){ Union( temp - 1, temp ); ans += edge[ i ].pro; } } cout << ans << endl; } return 0; }
补充:软件开发 , C++ ,