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 }

  • 相关阅读:
    Balanced Binary Tree
    Convert Sorted List to Binary Search Tree
    Convert Sorted Array to Binary Search Tree
    Binary Tree Zigzag Level Order Traversal
    Validate Binary Search Tree
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Maximum Depth of Binary Tree
    如何把U盘的两个盘或者多个盘合成一个
    bugku 想蹭网先解开密码
  • 原文地址:https://www.cnblogs.com/SCP-514/p/13613977.html
Copyright © 2011-2022 走看看