AtCoder Beginner Contest 174 A ~ E

时间:2022-07-24
本文章向大家介绍AtCoder Beginner Contest 174 A ~ E,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

A 签到

#include<iostream>
 
using namespace std;
 
 
int main(){
  int n;
  cin>>n;
  if(n>=30) cout<<"Yes"<<endl;
  else cout<<"No"<<endl;
  return 0;
}

B 签到

#include <bits/stdc++.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    int n;
    long long d;
    int count = 0;
    long long a, b;
 
    cin >> n >> d;
 
    d *= d;
 
    for (int i = 0; i < n; i++)
    {
        cin >> a >> b;
        if (a * a + b * b <= d)
        {
            count++;
        }
    }
    cout << count;
}

C 大数就取模。然后暴力求解即可

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define pb push_back
const int maxn=2e5+10;
const int mod=1e9+7;
 
ll k;
 
ll power(ll base,ll n)
{
    ll r=1;
    while(n)
    {
        if(n%2) r=r*base%k;
        base=base*base%k;
        n/=2;
    }
    return r;
}
 
 
 
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>k;
    ll sum=0;
    int len=1;
    while(1)
    {
        sum+=power(10,len-1)*7;
        sum%=k;
        if(sum%k==0)
        {
            cout<<len<<'n';
            return 0;
        }
        len++;
        if(len>1e6)
        {
            cout<<-1<<'n';
            return 0;
        }
    }
 
 
 
}

D 思路:其实就是把所有的R的熟练一统计然后都给移到左边就行。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
    int n;
    string s;
    cin>>n>>s;
    cout<<count(s.begin(),s.begin()+count(s.begin(),s.end(),'R'),'W');
}

我看有人用指针来做的,其实道理是一样的,就是字符串中所有的R都在左边,然后所有的W都在右边就行了。

#define DIN freopen("input.txt","r",stdin);
#define DOUT freopen("output.txt","w",stdout);
#include <bits/stdc++.h>
#include <cstdio>
#define mem(a,b) memset(a,b,sizeof(a))
#define REP(i,a,b) for(int i=(a);i<=(int)(b);i++)
#define REP_(i,a,b) for(int i=(a);i>=(b);i--)
#define pb push_back
using namespace std;
typedef long long LL;
typedef vector<int> VI;
typedef pair<LL,LL> P;
int read()
{
    int x=0,flag=1; char c=getchar();
    while((c>'9' || c<'0') && c!='-') c=getchar();
    if(c=='-') flag=0,c=getchar();
    while(c<='9' && c>='0') {x=(x<<3)+(x<<1)+c-'0';c=getchar();}
    return flag?x:-x;
}
 
const int maxn=2e5+5;
char s[maxn];
int l,r;
 
int main()
{
    int n=read();
    scanf("%s",s+1);
    l=1,r=n;
    int ans=0;
    while(l<=r)
    {
        while(l<=n && s[l]=='R') l++;
        while(r>=1 && s[r]=='W') r--;
        if(l<r) swap(s[l],s[r]),ans++;
    }
    cout<<ans;
 
    return 0;
}

E

#include <bits/stdc++.h>
#define int long long
using namespace std;

int n,k,ans=1e9+7;
int a[200005];

inline int up(int aa,int bb)
{
	if (aa%bb==0)  return aa/bb;
	else return (aa/bb)+1;
}

bool check(int len)//check函数
{
	int tot=0;
	for (int i=1;i<=n;i++)  tot=tot+up(a[i],len)-1;
	
	if (tot<=k)  return true;
	else return false;
}

int Binary_search(int l,int r)//递归式二分写法
{
	if (l==r||l+1==r)
	{
		if (check(l))  ans=min(ans,l);
		if (check(r))  ans=min(ans,r);
		return ans; 
	}
	int mid=(l+r)>>1;
	if (check(mid))
	{
		ans=min(ans,mid);
		return Binary_search(l,mid);
	}
	else return Binary_search(mid+1,r);
}

signed main()
{
	cin>>n>>k;
	for (int i=1;i<=n;i++)  cin>>a[i];
	
	cout<<Binary_search(1,1e9)<<endl;
	
	return 0;
}