uva 1623——Enter The Dragon

以你之姓@ 2022-08-09 16:42 282阅读 0赞

题意:有n个装满水的湖,可以预知将来m天下雨情况,每次下满一个湖,或者不下,不下雨的时候可以让某个湖变干,问是否存在一种方案使得每次下雨之前湖总是干的。

思路:贪心。什么时候下雨,就什么时候在下雨之前把湖变干。实际上就是找该湖上一次满后的第一个不下雨的日子来把它变干。

code:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <algorithm>
  5. #include <cstring>
  6. #include <sstream>
  7. #include <string>
  8. #include <vector>
  9. #include <list>
  10. #include <queue>
  11. #include <stack>
  12. #include <map>
  13. #include <set>
  14. #include <bitset>
  15. using namespace std;
  16. typedef long long ll;
  17. typedef unsigned long long ull;
  18. typedef long double ld;
  19. const int INF=0x3fffffff;
  20. const int inf=-INF;
  21. const int N=1000005;
  22. const int M=2005;
  23. const int mod=1000000007;
  24. const double pi=acos(-1.0);
  25. #define cls(x,c) memset(x,c,sizeof(x))
  26. #define cpy(x,a) memcpy(x,a,sizeof(a))
  27. #define fr(i,s,n) for (int i=s;i<=n;i++)
  28. #define lson l,m,rt<<1
  29. #define rson m+1,r,rt<<1|1
  30. #define lrt rt<<1
  31. #define rrt rt<<1|1
  32. #define middle int m=(r+l)>>1
  33. #define lowbit(x) (x&-x)
  34. #define pii pair<int,int>
  35. #define mk make_pair
  36. #define IN freopen("in.txt","r",stdin);
  37. #define OUT freopen("out.txt","w",stdout);
  38. int v[N],la[N],s[N];
  39. set<int>ep;
  40. set<int>::iterator p;
  41. int main()
  42. {
  43. int T,n,m,f;
  44. scanf("%d",&T);
  45. while (T--)
  46. {
  47. cls(s,0);cls(la,0);f=0;
  48. ep.clear();
  49. scanf("%d %d",&n,&m);
  50. fr(i,0,m-1)
  51. {
  52. scanf("%d",&v[i]);
  53. if (f) continue;
  54. if (!v[i]) ep.insert(i);//cout<<i<<endl;
  55. else
  56. {
  57. p=ep.lower_bound(la[v[i]]);
  58. if (p==ep.end()) f=1;
  59. else
  60. {
  61. //cout<<*p<<endl;
  62. s[*p]=v[i];
  63. la[v[i]]=i;
  64. ep.erase(p);
  65. }
  66. }
  67. }
  68. if (f) puts("NO");
  69. else
  70. {
  71. puts("YES");
  72. fr(i,0,m-1)
  73. {
  74. if (!v[i]) printf("%d ",s[i]);
  75. }
  76. puts("");
  77. }
  78. }
  79. }

发表评论

表情:
评论列表 (有 0 条评论,282人围观)

还没有评论,来说两句吧...

相关阅读

    相关 uva 1623——Enter The Dragon

    题意:有n个装满水的湖,可以预知将来m天下雨情况,每次下满一个湖,或者不下,不下雨的时候可以让某个湖变干,问是否存在一种方案使得每次下雨之前湖总是干的。 思路:贪心