前言
我只是一个入门没多久的菜鸡啊,代码挺残缺的,所以谨慎观看
A
题目的意思是,输入一个字符串,然后一个一个看,如果是v加一,如果是w加二。
#include<cstdio>
#include<cstring>
int ans;
int main(){
char in[105];
scanf("%s",in);
int len = strlen(in);
for(int i =0;i<len;i++){
if(in[i]=='v')ans++;
else ans+=2;
}
printf("%d",ans);
return 0;
}
B
判断B字符串是否为A字符串的子字符串
输入方式
A
B
我的代码
#include<iostream>
#include<string>
using namespace std;
string a1,a2;
int main(){
cin>>a1>>a2;
if(a1.find(a2)!=string::npos){
cout<<"Yes"<<endl;
return 0;
}
cout<<"No"<<endl;
return 0;
}
C
题意可能是要问你输入的两个矩阵是否可以变化为一个矩阵。但是没有关系啊,很显然,只要每行的#数量一样,那一定可以变化为同一个矩阵。
上代码
#include<iostream>
#include<string>
#define ll long long
using namespace std;
ll in[400005];
ll out[400005];
ll h, k;
int main() {
string n;
cin >> h >> k;
for (ll i = 0; i < h; i++) {
cin>>n;
for (ll j = 0; j < k; j++) {
if (n[j] == '#') {
in[i]++;
}
}
}
for (ll i = 0; i < h; i++) {
cin>>n;
for (ll j = 0; j < k; j++) {
if (n[j] == '#') {
out[i]++;
}
}
}
for (ll i = 0; i < h; i++) {
if (in[i] != out[i]) {
cout << "No" << endl;
return 0;
}
}
cout << "Yes" << endl;
return 0;
}
ABC只做ABC应该没有问题吧(不是)
D
题意,要你找给定函数的最小值。
该函数为:F(x)=B*x-A/sqrt(x+1)
输入格式:
A B
限制:
1≤A≤10 e18
1≤B≤10 e18
典型三分,但是这题比较特殊啊,因为是整数,所以我的代码可能有点怪。我实际上只是把二分的判断条件改掉。
代码:
#include<iostream>
#include<math.h>
using namespace std;
long double a, b;
long double c, d;
long double func(long long x) {
return b * x + a / (sqrt(x + 1));
}
int main() {
cin >> a >> b;
c = a;
long long mid ,left,right;
if (a < b) {
mid = 1;
while (1) {
d = b * mid + a / (sqrt(mid + 1));
if (d > c) {
printf("%.10llf", c);
return 0;
}
c = d;
mid++;
}
}
else {
left = 0;
right = 1e18;
while (left <= right) {
mid = (right - left) / 2+ left ;
if (func(mid) < func(mid - 1) && func(mid) < func(mid + 1)) {
printf("%.10llf", func(mid));
return 0;
}
if (func(mid) < func(mid - 1)) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
}
return 0;
}
标签:atcoder,ABC,int,ll,mid,long,main,279,include
From: https://www.cnblogs.com/bvwvd/p/16969282.html