贪心的策略。每次只加上最小的就可以了

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int INF=0x3f3f3f3f;
  4. typedef long long ll;
  5. ll a[1010];
  6. int main()
  7. {
  8. ios::sync_with_stdio(false);
  9. cin.tie(0);
  10. cout.tie(0);
  11. ll t;
  12. cin>>t;
  13. while(t--)
  14. {
  15. ll ans=0,n,k;
  16. cin>>n>>k;
  17. for(ll i=0; i<n; i++)
  18. cin>>a[i];
  19. sort(a,a+n);
  20. for(ll i=1; i<n; i++)
  21. {
  22. ans+=(k-a[i])/a[0];
  23. }
  24. cout<<ans<<"\n";
  25. }
  26. return 0;
  27. }

晚上的思路是用hashmap来实现…但做着做着到了12点,做不下去了就耻辱得下机。。

看群里也有人在讨论这道题..各种想法的都有,结果大家都想多了。这不就是一道贪心题/doge

\(T/2\)作为界限,小的涂白(1),大的涂黑(0)。边读入边做就行了。

《论审题的重要性》

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int INF=0x3f3f3f3f;
  4. typedef long long ll;
  5. const int max_n=1e5+5;
  6. ll a[max_n];// c whilte d black
  7. int main()
  8. {
  9. ios::sync_with_stdio(false);
  10. cin.tie(0);
  11. cout.tie(0);
  12. ll t;
  13. cin>>t;
  14. while(t--)
  15. {
  16. memset(a,0,sizeof(a));
  17. ll n,k,cnt=0,x;
  18. cin>>n>>k;
  19. for(ll i=0; i<n; i++)
  20. {
  21. cin>>x;
  22. if (x*2==k)
  23. a[i]=(cnt++)%2;
  24. else if (x*2<k)
  25. a[i]=1;
  26. }
  27. for(ll i=0; i<n; i++)
  28. cout<<a[i]<<' ';
  29. cout<<"\n";
  30. }
  31. return 0;
  32. }

下面的题目等div3结束抽空补了

版权声明:本文为william4s原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/william4s/p/13745259.html