摘要

题目链接 难度等级 完成状态 完成分数 最后编辑时间 失误原因(初次提交分数)
Jeopardy! ★☆☆☆☆ 答案正确 100 2015-02-24 14:18:18 字母打反(5)

题意

知识竞赛每题有一个得分,其中分为特别题和普通题,特别题可以将得分改为小等于自己当前分数的任何数。问应当如何安排答题顺序。

题解

普通题先答,得分大的先答,贪心排序即可。

代码

413C.cpp代码已折叠
展开折叠内容
显示/移除行号
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<string>
  4. #include<algorithm>
  5. #include<cstring>
  6. using namespace std;
  7. #define lld unsigned long long int
  8. #define dsi(n) int n;scanf("%d",&n)
  9. #define si(n) scanf("%d",&n)
  10. #define f(i,n) for(int i=1;i<=n;++i)
  11. #define fi(n) f(i,n)
  12. #define f0(i,n) for(int i=0;i!=n;++i)
  13. #define fd(i,n) for(int i=n;i>=1;--i)
  14. #define ci const int&
  15. #define foreach(i,s) for(typeof(s.begin()) i=s.begin();i!=s.end();++i)
  16. #define c(x) const x&
  17. lld a[1000]={},s[1000]={},ans=0;
  18. int main()
  19. {
  20. dsi(n);dsi(k);
  21. fi(n)
  22. {
  23. cin>>a[i];
  24. }
  25. fi(k)
  26. {
  27. dsi(t);
  28. s[i]=a[t];
  29. a[t]=0;
  30. }
  31. sort(s+1,s+k/*fixed:不是n*/+1);
  32. fi(n)
  33. ans+=a[i];
  34. fd(i,k)
  35. ans+=max(ans,s[i]);
  36. cout<<ans;
  37. return 0;
  38. }

著作权声明[编辑]

关于[编辑]