题目传送门

题意:有$N$个盒子,每个盒子中有$0$或$1$个球。现在你可以花费$c_{i,j}$的代价获得$i$到$j$的盒子中球的总数的奇偶性,求最少需要多少代价才能知道哪些盒子中有球。$N \leq 2000 , 1 \leq c \leq 10^9$


初赛凉了,乖乖回来更以前没写的blog qwq

设$s_i$为盒子中球数的前缀和$(s_0 = 0)$,那么我们花费$c_{i,j}$就是得到$s_{i-1}$与$s_j$的关系,而我们知道$s_i,s_j$与$s_j,s_k$的关系之后,就能知道$s_i$与$s_k$的关系。我们可以考虑使用并查集维护这个关系,然后:咦这不就是$Kruskal$吗?然后跑遍最小生成树就出来了

反正我是有生之年不会想到这道题和最小生成树相关的了QuQ

还有Prim用堆优化真心卵用没有

 #include<bits/stdc++.h>
 #define MAXN 2001
 using namespace std;
 inline int read(){
     ;
     ;
     char c;
     fread(&c ,  , stdin);
     while(!isdigit(c)){
         if(c == '-')
             f = ;
         fread(&c ,  , stdin);
     }
     while(isdigit(c)){
         a = (a << ) + (a << ) + (c ^ ');
         fread(&c ,  , stdin);
     }
     return f ? -a : a;
 }
 int Edge[MAXN][MAXN];
 bool vis[MAXN];
 priority_queue < pair < int , int > > q;
 int main(){
     ;
     int N = read();
      ; i <= N ; i++)
         for(int j = i ; j <= N ; j++)
             Edge[i - ][j] = Edge[j][i - ] = read();
     q.push(make_pair( , ));
     while(!q.empty()){
         int t = q.top().second;
         if(vis[t]){
             q.pop();
             continue;
         }
         ans += -q.top().first;
         vis[t] = ;
         q.pop();
          ; i <= N ; i++)
             if(!vis[i])
                 q.push(make_pair(-Edge[t][i] , i));
     }
     cout << ans;
     ;
 }

最新文章

  1. iPhone6/6 Plus兩款大屏智能機
  2. CDH安装失败了,如何重新安装
  3. Angularjs select的使用
  4. 安装cocoods
  5. Java IO操作
  6. c/c++ 数字转成字符串, 字符串转成数字
  7. sqlplus中&quot;-S&quot;和&quot;-L&quot;用法
  8. C# winform线程的使用 制作提醒休息小程序(长时间计算机工作者必备)
  9. 从[java.lang.OutOfMemoryError: Java heap space]恢复
  10. 探索Android该Parcel机制上
  11. node-canvas
  12. Thinking in scala (1)----类
  13. C/C++生成随机数
  14. DevOps之五 Tomcat的安装与配置
  15. 【vue】在移动端使用better-scroll 实现滚动效果
  16. salt使用技巧
  17. LG1912 [NOI2009]诗人小G
  18. JAVA中验证邮箱是否有效
  19. n阶方阵A可逆充分必要条件
  20. #6472. 「ICPC World Finals 2017」难以置信的任务 Mission Improbable

热门文章

  1. php使用PHPexcel类读取excel文件(循环读取每个单元格的数据)
  2. python 类函数,实例函数,静态函数
  3. ps -ef|grep ?解释
  4. Django 添加mdia文件目录路径
  5. 故障小记录:yum 安装报错File &quot;/usr/bin/yum&quot;, line 30 except KeyboardInterrupt, e:
  6. [20180801]insert导致死锁.txt
  7. VS 函数,方法上方 引用等显示
  8. Postgre SQL连接服务器失败
  9. sql最简单的查询语句
  10. AIX mount nfs 文件系统失败