[关闭]
@Metralix 2016-12-07T03:11:36.000000Z 字数 718 阅读 747

C - Design Tutorial: Make It Nondeterministic

模拟 c++


题目大意:

    每个人可以选择first name 或者 last name 当自己的账号,问能不能实现给定的字典序排位。

解题思路:

    cur用于记录上一个人选择的账号。第一个人肯定要选择last name和first name里最小的,记为cur第二个人,如果其中小的比cur大,那么就选择那个。如果比cur小,那么再次比较较大的和cur,如果还是比cur小,这个排序不能进行了。以此类推。
    时间复杂度O(1),空间复杂度O(1)。

AC代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<string>
  6. #include<cmath>
  7. #include<cstdlib>
  8. using namespace std;
  9. int N;
  10. string a[100100],b[100100];
  11. string cur="";
  12. int p[100100];
  13. int main()
  14. {
  15. int i,x;
  16. scanf("%d",&N);
  17. for(i=0;i<N;i++)
  18. {
  19. scanf("%s %s",a[i],b[i]);
  20. }
  21. for(i=0;i<N;i++)
  22. {
  23. scanf("%d",p[i]);
  24. p[i]--;
  25. }
  26. for(i=0;i<N;i++)
  27. {
  28. x=p[i];
  29. if(a[x]>b[x])
  30. {
  31. swap(a[x],b[x]);
  32. }
  33. if(cur<a[x])
  34. {
  35. cur=a[x];
  36. }
  37. else if(cur<b[x])
  38. {
  39. cur=b[x];
  40. }
  41. else
  42. {
  43. printf("NO");
  44. return 0;
  45. }
  46. }
  47. printf("YES");
  48. return 0;
  49. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注