zoukankan      html  css  js  c++  java
  • 4666 Hyperspace stl

    当时自己做的时候没有这么想,想的是每个象限去找一个无穷值来作为比较点。但是很麻烦

    代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <iostream>
     4 #include <algorithm>
     5 #include <stdlib.h>
     6 #include <vector>
     7 #include <set>
     8 #include <queue>
     9 #include <stack>
    10 #define loop(s,i,n) for(i = s;i < n;i++)
    11 #define cl(a,b) memset(a,b,sizeof(a))
    12 using namespace std;
    13 int a[60050][10];
    14 int main()
    15 {
    16     int n,k;
    17     while(~scanf("%d %d",&n,&k))
    18     {
    19         int i,o,j;
    20         multiset<int>mst[50];
    21         for(i = 1;i <= n;i++)
    22         {
    23             scanf("%d",&o);
    24             int maxans = 0;
    25             if(o == 0)
    26             {
    27                 for(j = 0;j < k;j++)
    28                 {
    29                     scanf("%d",&a[i][j]);
    30                 }
    31 
    32                 for(j = 0;j < (1<<(k));j++)
    33                 {
    34                     int ii,sum;
    35                     for(ii = 0,sum = 0;ii < k;ii++)
    36                     {
    37                         if(j & (1<<ii))
    38                         sum += a[i][ii];
    39                         else
    40                         sum -= a[i][ii];
    41                     }
    42                     mst[j].insert(sum);
    43                 }
    44             }
    45             else
    46             {
    47                 int del;
    48                 scanf("%d",&del);
    49                 for(j = 0;j < (1<<(k));j++)
    50                 {
    51                     int sum = 0;
    52                     for(int ii = 0;ii < k;ii++)
    53                     {
    54                         if(j & (1<<ii))
    55                             sum += a[del][ii];
    56                         else
    57                             sum -= a[del][ii];
    58                     }
    59                     multiset<int>::iterator it;
    60                     it = mst[j].find(sum);
    61 
    62                     mst[j].erase(it);
    63                 }
    64             }
    65             maxans = 0;
    66             for(j = 0;j < (1 << (k));j++)
    67             {
    68                 multiset<int>::iterator it1;
    69                 multiset<int>::iterator it2;
    70                 if(mst[j].size() > 0)
    71                 {
    72                     it1 = mst[j].begin();
    73                     it2 = mst[j].end();
    74                     it2--;
    75                     maxans = max(maxans,*it2-*it1);
    76                 }
    77             }
    78             cout<<maxans<<endl;
    79 
    80         }
    81     }
    82     return 0;
    83 }
    View Code
  • 相关阅读:
    IIS 备份
    Windows Service 的注册和卸载
    算法测试(课上测试)
    《Unix/Linux系统编程》第十四章学习笔记20191304商苏赫
    mystat
    实验四 Web服务器1socket编程
    《Unix/Linux系统编程》第十二章学习笔记20191304商苏赫
    整数范围与类型转换
    《Unix/Linux系统编程》第十三章学习笔记20191304商苏赫
    实验四 Web服务器2
  • 原文地址:https://www.cnblogs.com/0803yijia/p/3257301.html
Copyright © 2011-2022 走看看