BZOJ 4004

把所有不能相互表示出来的向量都买下,一定能得到最大能买的方案数。

求解线性无关向量可以高斯消元,最后没有变成$0$向量的就是基底。

本题还要求代价最小怎么办?我们只要先把所有向量按照代价从小到大排个序然后贪心地选取可行解去消元就可以了。

时间复杂度$O(n^3)$。

要注意精度。

Code:

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. using namespace std;
  5. typedef long double db;
  6.  
  7. const int N = ;
  8. const db eps = 1e-;
  9.  
  10. int n, m, used[N];
  11.  
  12. struct Item {
  13. int c;
  14. db s[N];
  15.  
  16. friend bool operator < (const Item &x, const Item &y) {
  17. return x.c < y.c;
  18. }
  19.  
  20. } a[N];
  21.  
  22. inline db fabs(db x) {
  23. return x > ? x : -x;
  24. }
  25.  
  26. int main() {
  27. freopen("2.in", "r", stdin);
  28.  
  29. scanf("%d%d", &n, &m);
  30. for(int i = ; i <= n; i++)
  31. for(int j = ; j <= m; j++)
  32. scanf("%Lf", &a[i].s[j]);
  33. for(int i = ; i <= n; i++) scanf("%d", &a[i].c);
  34.  
  35. sort(a + , a + + n);
  36. int cnt = , ans = ;
  37. for(int i = ; i <= n; i++) {
  38. for(int j = ; j <= m; j++) {
  39. if(fabs(a[i].s[j]) > eps) {
  40. if(!used[j]) {
  41. used[j] = i, cnt++, ans += a[i].c;
  42. break;
  43. } else {
  44. db f = a[i].s[j] / a[used[j]].s[j];
  45. for(int k = j; k <= m; k++)
  46. a[i].s[k] -= f * a[used[j]].s[k];
  47. }
  48. }
  49. }
  50. }
  51.  
  52. printf("%d %d\n", cnt, ans);
  53. return ;
  54. }

Luogu 3265 [JLOI2015]装备购买的更多相关文章

  1. Luogu P3265 [JLOI2015]装备购买

    好吧刚开始不知道自己在写什么,,,后来写了线性方程组,又过了一天一上午终于明白了... 当然题意很显然:求代价最小的极大线性无关组. 那就高斯消元(好吧刚开始我不会用它来解这道题qwq) 第一个循环是 ...

  2. bzoj 4004: [JLOI2015]装备购买 拟阵 && 高消

    4004: [JLOI2015]装备购买 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 337  Solved: 139[Submit][Status ...

  3. BZOJ_4004_[JLOI2015]装备购买_线性基

    BZOJ_4004_[JLOI2015]装备购买_线性基 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) ...

  4. [JLOI2015]装备购买 (高斯消元)

    [JLOI2015]装备购买 \(solution:\) 首先这道题的题面已经非常清晰的告诉我们这就是线性空间高斯消元的一道题(可以用某些装备来表示另一件装备,这已经不能再明显了),只是这道题要求我们 ...

  5. BZOJ 4004: [JLOI2015]装备购买

    4004: [JLOI2015]装备购买 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1154  Solved: 376[Submit][Statu ...

  6. bzoj 4004 [JLOI2015]装备购买 拟阵+线性基

    [JLOI2015]装备购买 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1820  Solved: 547[Submit][Status][Dis ...

  7. 【BZOJ4004】[JLOI2015]装备购买 贪心+高斯消元

    [BZOJ4004][JLOI2015]装备购买 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 ( ...

  8. [JLOI2015]装备购买(线性基)

    [JLOI2015]装备购买 题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 nn 件装备,每件装备有 \(m\) 个属性,用向量 \(\mathbf{z_i}\)=\((a_1, \ldots ...

  9. 洛谷P3265 [JLOI2015]装备购买 [线性基]

    题目传送门 装备购买 格式难调,题面就不放了. 分析: 一句话,有$n$件物品,每件物品有$m$个属性和一个花费值,如果一个装备的属性值可以由其他装备的属性值改变系数后组合得到那就不买,求购买最多装备 ...

随机推荐

  1. 【策略】一致性Hash算法

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...

  2. 【BZOJ2908】又是nand 树链剖分+线段树

    [BZOJ2908]又是nand escription 首先知道A nand B=not(A and B) (运算操作限制了数位位数为K)比如2 nand 3,K=3,则2 nand 3=not (2 ...

  3. LINUX TCP套接字详细配置

    提高服务器的负载能力,是一个永恒的话题.在一台服务器CPU和内存资源额定有限的情况下,最大的压榨服务器的性能,是最终的目的.要提高 Linux系统下的负载能力,可以先启用Apache的Worker模式 ...

  4. 三个Telnet链接类----来自网络

    声明:下面的三个类都是从网上找到的,具体出处不详,哪个类的好坏性能优劣自己把握,可参考使用.拒绝使用商业用途,如产生版权纠纷和本人无关. 一:Telnet链接网络设备,在网上看到C#Telnet连接网 ...

  5. ④SpringBoot之thymeleaf使用

    本文介绍SpringBoot使用的模板技术thymeleaf以及通过webJar进行前端资源的引入以及使用thymeleaf介绍简单说, Thymeleaf 是一个跟 Velocity.FreeMar ...

  6. (转)xshell基本操作步骤

    xshell  操作方法如下: mkdir +文件夹名   (新建目录) ls 文件浏览(使用ls命令列出文件列表的信息,默认情况下为当前目录下的所有文件,并按照字母顺序排列) file [选项].. ...

  7. 【转】jmeter压力测试

    jmeter压力测试 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域, 是压力测试的首选软件 ...

  8. Eclipse格式化代码,自动换行设置

    每次用Eclipse自带的Ctrl+shift+f格式化代码时,如果原来的一行代码大于80列,Eclipse就会自动换为多行,这点个人感觉不是很舒服,简单试了一下,通过以下方式可以修改   1.pre ...

  9. 1074 Reversing Linked List

    题意: 每k个元素反转链表,不足k个就不反转.如原链表为1→2→3→4→5→6,k=3,则反转后的链表为3→2→1→6→5→4:若k=4,则反转后的链表为4→3→2→1→5→6. 思路: 这题会比较烦 ...

  10. Pycharm快速复制当前行到下一行Ctrl+D

    Pycharm快速复制当前行到下一行Ctrl+D