2 条题解
-
0
妈的考完之后发现没有考虑x = 0的边界条件 直接炸了 \n 按照题意模拟每天两个人走的步数即可。
import sys def main(): t = int(input()) for _ in range(t): n, x, y = map(int, input().split()) data = list(map(int, sys.stdin.readline().strip().split())) data.sort(reverse = True) total = 0 today = 0 if x == 0: print(0) break for i in range(n): today += 1 total += data[i] x += y if total >= x: print(today) break else: print(-1) if __name__ == "__main__": main() -
0
本题模拟+贪心即可,仅需将能走的步数从大到小排序,然后按顺序取数直到超过“她”走的步数即可,若不能超过,则证明无解。注意初始化时“她”已经在格,还有不开longlong见祖宗
void solve(){ int n,x,y;cin>>n>>x>>y; vector<int> a(n+1); for(int i=1;i<=n;i++){ cin>>a[i]; } // 从大到小排序 sort(a.begin()+1,a.end(),greater()); ll sum=0,ta=x; ll ans=-1; for(int i=1;i<=n;i++){ sum+=a[i]; ta+=y; if(sum>=ta){ ans=i;break; } } cout<<ans<<endl; }
- 1
信息
- ID
- 1119
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 9
- 标签
- 递交数
- 344
- 已通过
- 33
- 上传者