wa了5遍?!!

(1)前4遍,思路没简化,企图模拟整个过程,但是调用sort函数时由于没有把奇数的屋子和偶数的屋子统一,排序出了问题。

思路:遍历n段,每次只扫未被标记过的一段,ans++并且从该段出发,访问到第n段,将所有和该段不重叠的段标记为1,ans不变。

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define maxn 500
  4. #define rep(i,a,b) for(int i=(a);i<(b);i++)
  5. #define ll long long
  6. struct gg{
  7. int s,e;
  8. }a[maxn];
  9. int vis[maxn];
  10.  
  11. int cmp(gg k1,gg k2){
  12. return k1.s<k2.s;
  13. }
  14.  
  15. int main()
  16. {
  17. int T;
  18. cin>>T;
  19. while(T--){
  20. int n;
  21. memset(vis,0,sizeof(vis));
  22. scanf("%d",&n);
  23. rep(i,0,n){
  24. int x,y;
  25. scanf("%d%d",&a[i].s,&a[i].e);
  26. if(a[i].s>a[i].e)
  27. swap(a[i].s,a[i].e);
  28. a[i].s=a[i].s%2==0?a[i].s:a[i].s+1;
  29. a[i].e=a[i].e%2==0?a[i].e:a[i].e+1;
  30. }
  31. sort(a,a+n,cmp);
  32.  
  33. int ans=0;
  34.  
  35. rep(i,0,n){
  36. if(!vis[i]){
  37. int last=a[i].e;
  38. ans++,vis[i]=1;
  39. rep(j,i+1,n){
  40. if(!vis[j]){
  41. if(a[j].s>last){
  42. last=a[j].e;
  43. vis[j]=1;
  44. }
  45. }
  46. }
  47. }
  48. }
  49.  
  50. ans*=10;
  51. printf("%d\n",ans);
  52.  
  53. }
  54.  
  55. return 0;
  56. }

  (2)简化思路:把从一个屋子到另一个屋子看作线段,计算所有线段中被重叠次数最多的线段对应的重叠次数。理解:和某线段不重叠的线段不计入总时间。只要知道重叠次数最多的线段,就能知道有多少线段要计入总时间。

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define maxn 500
  4. #define rep(i,a,b) for(int i=(a);i<(b);i++)
  5. #define ll long long
  6.  
  7. int vis[maxn];
  8. int main()
  9. {
  10. int T;
  11. cin>>T;
  12. while(T--){
  13. int n;
  14. memset(vis,0,sizeof(vis));
  15. scanf("%d",&n);
  16. rep(i,0,n){
  17. int x,y;
  18. scanf("%d%d",&x,&y);
  19. if(x>y)
  20. swap(x,y);
  21. if(x%2)
  22. x++;
  23. if(y%2)
  24. y++;
  25. for(int j=x;j<=y;j+=2)
  26. vis[j]++;
  27. }
  28. int ans=0;
  29. rep(i,0,401){
  30. ans=max(ans,vis[i]);
  31. }
  32. ans*=10;
  33. printf("%d\n",ans);
  34. }
  35. return 0;
  36. }

  

HDU - 1050的更多相关文章

  1. --hdu 1050 Moving Tables(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1050 AC code: #include<stdio.h> #include<str ...

  2. hdu 1050 Moving Tables 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1050 这道题目隔了很久才做出来的.一开始把判断走廊有重叠的算法都想错了.以为重叠只要满足,下一次mov ...

  3. hdu 1050 Moving Tables

    http://acm.hdu.edu.cn/showproblem.php?pid=1050 这个题我首先直接用的常规贪心,用的和那个尽可能看更多完整节目那种思路.但是.......一直WA....T ...

  4. HDU – 1050 Moving Tables

    http://acm.hdu.edu.cn/showproblem.php?pid=1050 当时这道题被放在了贪心专题,我又刚刚做了今年暑假不AC所以一开始就在想这肯定是个变过型的复杂贪心,但是后来 ...

  5. hdu 1050 Moving Tables (Greedy)

    Problem - 1050 过两天要给12的讲贪心,于是就做一下水贪心练习练习. 代码如下: #include <cstdio> #include <iostream> #i ...

  6. hdu 1050 (preinitilization or postcleansing, std::fill) 分类: hdoj 2015-06-18 11:33 34人阅读 评论(0) 收藏

    errors, clauses in place, logical ones, should be avoided. #include <cstdio> #include <cstr ...

  7. hdu 1050 Moving Tables_贪心

    题意:你搬n个桌子,桌子从一个地方搬到另一个地方,走廊只允许同时一个桌子通过,教室分布在两边,奇数在一边,偶数在一边,当桌子不冲突时可以同时搬运,冲突时要等别的那个桌子搬完再搬. 思路:因为奇数桌子在 ...

  8. HDU 1050(搬椅子 数学)

    题意是在一个有 400 个房间的走廊中搬动房间里的椅子,如果两次的路线重叠,就要分两次搬动,如果不重叠,就可以一次搬动. 开始的时候直接当成求线段重叠条数的题,发现这种思路完全是错的,比如 1 - 3 ...

  9. HDU 1050 Moving Tables (贪心)

    题意:在一个走廊两边都有对称分布的连续房间,现在有n张桌子需要从a移动到b房间.每次移动需要10分钟, 但是如果两次移动中需要经过相同的走廊位置,则不能同时进行,需要分开移动.最后求最少需要多长时间移 ...

随机推荐

  1. vue 父子之间的通讯

    //父组件<template>     <Button @click='openChild'><Button>      <child-modal :moda ...

  2. Python scrapy爬虫数据保存到MySQL数据库

    除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 ...

  3. centos关机与重启命令

    Linux centos重启命令: 1.reboot   普通重启 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过10分钟自动重启(root用户 ...

  4. 通过VuePress管理项目文档(二)

    通过vue组件实现跟:Element相似的效果.需要在VuePress网站中将自己的项目中的Vue组件运行结果展示在页面中. 至于如何将组件在VuePress网站中展示请参考:https://segm ...

  5. loj121-动态图连通性

    Solution 线段树分治, 然后直接在线段树上dfs, 在进入/回溯的过程中维护并查集的merge/split. 对于split操作, 可以在merge时按秩合并, 然后利用栈记录, split时 ...

  6. css 图像热区

    CSS图像热区 在img标签当中,存在一个属性usemap属性,用来和map标签进行绑定,从而实现图像热区.所谓的图像热区,其实指的是在图像中插入一个连接,当用户点击图像的指定区域后就会进行页面跳转. ...

  7. Vim内直接使用p粘贴系统剪切板

    解决方法 set clipboard=unnamed

  8. [CTSC2017]网络

    [CTSC2017]网络 连一条长度为len的边,使得基环树的直径最小 结论:一定连在某条直径两个点上(否则更靠近不劣) 然后二分答案判定. dp[i]:链上一个点往下延伸的最大深度 考虑对于任意两个 ...

  9. noi.ac89A 电梯

    题目 思路 首先按照\(t\)排序!!!! 首先考虑一个暴力\(dp\) 用\(f[i]\)表示前\(i\)个人到达地点所需要的时间. 那么就有如下的转移 \[f_i = min_{1 \le j \ ...

  10. JavaEESpringMVC基础整理

    1.什么是 SpringMVC ? 在介绍什么是 SpringMVC 之前,我们先看看 Spring 的基本架构.如下图: 我们可以看到,在 Spring 的基本架构中,红色圈起来的 Spring W ...