• 2024-09-14P2294 [HNOI2005] 狡猾的商人 两种做法
    贪心#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=1e3+100;intn,m;structNODE{ intl,r,val; booloperator<(constNODE&h)const { if(l!=h.l) returnl>h.l; returnr>h.r; }};priority_queue
  • 2024-07-23P2294 [HNOI2005] 狡猾的商人
    原题链接题解先看成前缀和,这样就是维护\(pre[r],pre[l-1]\)两点之间的权值如果是false,代表存在矛盾,且矛盾出现在回路我们可以把这个回路之前的元素看成一个集合,如果新加入的边使得原先两点间的权值不等便失效而对于一个集合里的元素,由于相加具有矢量特性,所以我们维护集合内