首页 > 其他分享 >atcoder ABC 279

atcoder ABC 279

时间:2022-12-09 16:35:52浏览次数:41  
标签:atcoder ABC int ll mid long main 279 include

前言

我只是一个入门没多久的菜鸡啊,代码挺残缺的,所以谨慎观看

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

相关文章