• bzoj 4004 向量拟阵


    题解RT.

    eps = 1e-10 WrongAnswer

    eps = 1e-5 Accepted

     1 /**************************************************************
     2     Problem: 4004
     3     User: idy002
     4     Language: C++
     5     Result: Accepted
     6     Time:516 ms
     7     Memory:2844 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <cstring>
    12 #include <algorithm>
    13 #define eps 1e-5
    14 #define N 510
    15 using namespace std;
    16  
    17 int n, m;
    18 double aa[N][N]; 
    19 int cost[N];
    20 int vid[N];
    21 int kid[N];
    22  
    23 int sg( double x ) {
    24     return (x>-eps)-(x<eps);
    25 }
    26 bool cmp( int a, int b ) { return cost[a]<cost[b]; }
    27 bool join( int id ) {
    28     for( int i=1; i<=m; i++ ) {
    29         if( sg(aa[id][i])==0 ) continue;
    30         if( kid[i]==0 ) {
    31             kid[i]=id;
    32             return true;
    33         } 
    34         int uid = kid[i];
    35         double k = aa[id][i]/aa[uid][i];
    36         for( int j=i; j<=m; j++ )
    37             aa[id][j] -= k*aa[uid][j];
    38     }
    39     return false;
    40 }
    41 int main() {
    42     scanf( "%d%d", &n, &m );
    43     for( int i=1; i<=n; i++ )
    44         for( int j=1; j<=m; j++ )
    45             scanf( "%lf", &aa[i][j] );
    46     for( int i=1; i<=n; i++ )
    47         scanf( "%d", cost+i );
    48     for( int i=1; i<=n; i++ )
    49         vid[i] = i;
    50     sort( vid+1, vid+1+n, cmp );
    51     memset( kid, 0, sizeof(kid) );
    52     int cnt=0, ans=0;
    53     for( int i=1; i<=n; i++ ) {
    54         int id = vid[i];
    55         if( join(id) ) {
    56             cnt++;
    57             ans+=cost[id];
    58         }
    59     }
    60     printf( "%d %d
    ", cnt, ans );
    61 }
    View Code
  • 相关阅读:
    去除字符串中多余空格
    day02-03 字符编码
    eclipse与myeclipse区别
    xz解压和zip解压
    yum安装
    防火墙
    查看和操作HBA卡
    复制linux虚拟机后网卡不能用的解决方法
    关闭IPv6
    更改root密码
  • 原文地址:https://www.cnblogs.com/idy002/p/4564451.html
Copyright © 2020-2023  润新知