zoukankan      html  css  js  c++  java
  • PTA 乙级 1065 单身狗 (25分) C++

     又是200ms,肯定又有超时检测

    思路:创建一个足够大的伴侣二维数组,用来记录每个人的伴侣(二维数组第一位[0])和是否出席(二维数组第二位[1]),输入每个人的伴侣id后,二维数组中对应id储存对方的id

     1 cp[tmp1][0] = tmp2; //记录彼此的伴侣 2 cp[tmp2][0] = tmp1; 

    创建一个vector的数组,存储每一个出席的人的id(方便之后统计落单人数),并标记出席人的id的标志位为1,再次对出席人id进行遍历,如果出席人的伴侣id的标志位为0,则为落单的人,落单人数累加,记录落单人id,统计完所有落单人id后,利用sort进行递增排序,输出即可

    注意:测试点3,就是在于0这个问题,输出时的格式printf("%05d")输出就可以把id按成5个域宽,从从右向左用0补齐

     1 #include<iostream>
     2 #include<vector>
     3 #include<algorithm>
     4 
     5 using namespace std;
     6 
     7 int cp[100001][2] = { 0 };        //夫妻/伴侣和出席标志位
     8 int dog[10001] = { 0 };            //出席人数中,落单的人
     9 
    10 int main() {
    11     int n = 0, m = 0;
    12     int c = 0;                    //统计落单的人
    13     cin >> n;
    14     for (int i = 0; i < n; ++i) {
    15         int tmp1 = 0, tmp2 = 0;
    16         cin >> tmp1 >> tmp2;
    17         cp[tmp1][0] = tmp2;        //记录彼此的伴侣
    18         cp[tmp2][0] = tmp1;
    19     }
    20     cin >> m;
    21     vector<int> vis(m);
    22     for (int i = 0; i < m; ++i) {
    23         int tmp = 0;
    24         cin >> tmp;
    25         cp[tmp][1] = 1;            //标记客人出席
    26         vis[i] = tmp;
    27     }
    28     for (int i = 0; i < m; ++i) {
    29         if (cp[cp[vis[i]][0]][1] == 0) {        //客人对应的伴侣的标志位为0
    30             dog[c] = vis[i];                    //落单记录
    31             c++;
    32         }
    33     }
    34     sort(dog, dog + c);            //对落单的客人进行从小到大的排序
    35     cout << c << endl;
    36     for (int i = 0; i < c; ++i) {
    37         if (i != 0)cout << ' ';
    38         printf("%05d", dog[i]);
    39     }
    40     return 0;
    41 }

  • 相关阅读:
    图解测试之稳定性-如何开始稳定性测试
    系统稳定性保障
    系统稳定性评测
    分布式架构的架构稳定性
    app测试--稳定性测试
    服务器稳定性测试方法汇总
    服务端稳定性测试
    发票问题
    android x86 固件定制
    Nim游戏博弈(收集完全版)
  • 原文地址:https://www.cnblogs.com/SCP-514/p/13613977.html
Copyright © 2011-2022 走看看