A题——Pens and Pencils
这个题写的是比较快的,但是问题是在下的英文实在是不咋样,所以我读题本身就慢好多。但是努力学习就好了。
这个题目当时看完给我感觉就是暴力,注意一点就是
eg:三场讲座一根pen刚好,但是四场就不够了,但是第二根pen用不完,我们这里是进一不四舍五入。我们需要2个pen。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int a,b,c,d,k;
cin>>a>>b>>c>>d>>k;
int sum1,sum2;
sum1=(a-1)/c+1;
sum2=(b-1)/d+1;
if(sum1+sum2>k)
cout<<"-1"<<endl;
else
cout<<sum1<<" "<<sum2<<endl;
}
return 0;
}
B题
B题——Rooms and Staircases
思路:
如果没有梯子,那么我们最多只能将一行完全走完,最多的结果为n
但是一旦有了梯子(假设在第k间房子),也就是说我们能形成一二层之间的通道,假设我们是从二楼左边开始出发,遇到梯子就下来,让后在一楼继续朝左侧行驶,也就是说从左侧开始到左侧结束。我们会有两结果,一个梯子左边,2(k)个房间。另外一个是2(n-k+1)个房间。最终只需要比较大小输出即可。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
int k;
cin>>n;
string s;
cin>>s;
k=s.find('1');
int r=s.rfind('1');
if(k==-1)
cout<<n<<endl;
else
cout<<max(r+1,n-k)*2<<endl;
}
return 0;
}
C题
C题——The Football Season
注意一点:
输入数据w>d;
因为d<w,那么可以知道y<w,因为当y≥w时,w个d不如x=d时,d个w划算。
然后w的范围也比较小,所以直接枚举判断就是了。
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main ()
{
cin.tie(nullptr);
cout.tie(nullptr);
ios::sync_with_stdio(false);
ios_base::sync_with_stdio(false);
ll n, p, w, d;
cin >> n >> p >> w >> d;
for (ll y = 0; y <= w; y++) {
ll sum = p - y*d;
if (sum < 0)
continue;
if (sum % w == 0) {
ll x = sum / w;
ll z = n-x-y;
if (z >= 0) {
cout << x << ' ' << y << ' ' << z;
return 0;
}
}
}
cout << -1;
return 0;
}
网友评论