竞赛
考级
#include <iostream> using namespace std; int n, m, a, b; int main () { }
虽然官方在数据上偷了亿点懒,乱写都能过,但我们还是要写正解的 二分+check,二分来确定最多能兑换的奖品份数,check(int x)用来检查是否可以用xxx份奖品的兑换券数量满足条件。 唯一一次认真写
奇奇怪怪的ac方式,官方肯定在数据上偷大懒了 大家尽量不要看,最好使用二分正经解题 #include<bits/stdc++.h> using namespace std; int main(){ int n,m,a,b; cin>>n>>m>>a>>b; cout<<(n+m)/(a+b); return 0; }
普通数学解 但肯定不应是正解 暴力枚举法 枚举方案1 并未考虑 n 极大,a 极小数据,超时应是必然 暴力简单优化 优化特判 a == b 的情况,并且显然是单峰情况,一旦下降,则有解。同样存在极限超时情况 暴力"玄学"优化 简单来说,在超时的极限赌一把,能过就不再优化了 很好,用数学法赌过了,不再优化
#include <bits/stdc++.h> using namespace std; int main(){ int a,b,c,d; cin>>a>>b>>c>>d; cout<<(a+b)/(d+c); }
提交答案之后,这里将显示提交结果~