标签:
struct Node { long long a; long long b; long long c; long long num; int i; bool operator < (const Node& t)const { return ((num>t.num)|| (num==t.num&&a<t.a)|| (num==t.num&&a==t.a&&b<t.b)||(num==t.num&&a==t.a&&b==t.b&&c<t.c)||(num==t.num&&a==t.a&&b==t.b&&c==t.c&&i<t.i)); } } node[1005]; set<Node>s;
用set存放结构体,通过重载小于号,实现快速排序。
通过
Node tmp; set<Node>::iterator iter; for(int i=sum; i>m; i--) { tmp=(*s.begin()); s.erase(tmp); res-=tmp.num; tmp.c-=1; tmp.num=(2*tmp.c-1)*tmp.b; s.insert(tmp); }
这样实现对set内元素的修改。因为插入set内的元素是不可变的,所以先提取出想改变的元素(通过iter甚至可以提取第n大的数),然后通过
擦出插入操作来实现对set内元素的修改。
标签:
原文地址:http://www.cnblogs.com/superxuezhazha/p/5496114.html