当前位置:   article > 正文

刷题记录qvq_qvqqoj

qvqqoj

一、2432. 处理用时最长的那个任务的员工

 

思路

这个题主要是考数学吧,它这个就是求每个时间段的差,然后找到最大的那个时间段的差,输出它这个时间段的员工id就行了,当有相同的话,我们就进行判断,是不是小于那个id就行了

  1. int hardestWorker(int n, int** logs, int logsSize, int* logsColSize){
  2. int i,max=0,t;
  3. int x[500][2];
  4. x[0][0]=logs[0][0];
  5. x[0][1]=logs[0][1];
  6. for(i=1;i<logsSize;i++)
  7. {
  8. x[i][1]=logs[i][1]-logs[i-1][1];
  9. x[i][0]=logs[i][0];
  10. }
  11. for(i=0;i<logsSize;i++)
  12. {
  13. if(max<x[i][1])
  14. {
  15. max=x[i][1];
  16. t=x[i][0];
  17. }
  18. if(max==x[i][1]){
  19. if(t>x[i][0])t=x[i][0];
  20. }
  21. }
  22. return t;
  23. }

二、P3367 【模板】并查集

 思路

这道题就是一道基本的并查集的模板.....

代码实现

  1. #include<stdio.h>
  2. int n, m;
  3. int dis[10001];
  4. int heb2(int x)
  5. {
  6. if (dis[x] == x)return x;
  7. else
  8. {
  9. dis[x] = heb2(dis[x]);
  10. return dis[x];
  11. }
  12. }
  13. void find(int x, int y)
  14. {
  15. if (heb2(x) == heb2(y))printf("Y\n");
  16. else printf("N\n");
  17. }
  18. void heb1(int x, int y)
  19. {
  20. int xx, yy;
  21. xx = heb2(x);
  22. yy = heb2(y);
  23. if (xx != yy)dis[yy] = xx;
  24. }
  25. int main()
  26. {
  27. int z, x, y;
  28. scanf_s("%d %d", &n, &m);
  29. for (int i = 1; i <= n; i++)dis[i] = i;
  30. while (m--)
  31. {
  32. scanf_s("%d %d %d", &z, &x, &y);
  33. if (z == 1)heb1(x, y);
  34. else find(x, y);
  35. }
  36. return 0;
  37. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/727608
推荐阅读
相关标签
  

闽ICP备14008679号