Atcoder Beginner Contest 297

A - Double Click

AC代码: 

#include
#include
#include
using namespace std;
const int N=110;
int t[N];
int main()
{
    int n,d;
    cin>>n>>d;
    for(int i=1;i<=n;i++) cin>>t[i];
    bool flag=false;
    int idx=-1;
    for(int i=2;i<=n;i++){
        if(t[i]-t[i-1]<=d){
            idx=i;
            flag=true;
            break;
        }
    }
    if(flag) cout<

B - chess960

AC代码:

#include
#include
#include
#include
using namespace std;
int cnt1,cnt2,cnt3,cnt4,cnt5;
vectora,b,c;
int main()
{
    string s;
    cin>>s;
    bool flag=true;
    for(int i=0;ib[0]&&c[0]

C - PC on the Table

AC代码:

#include
#include
#include
#include
using namespace std;
const int N=110;
char s[N][N];
int h,w;
int main()
{
    cin>>h>>w;
    for(int i=1;i<=h;i++){
        for(int j=1;j<=w;j++){
            cin>>s[i][j];
        }
    }
    for(int i=1;i<=h;i++){
        for(int j=1;j<=w-1;j++){
            if(s[i][j]=='T'&&s[i][j+1]=='T'){
                s[i][j]='P';
                s[i][j+1]='C';
            }
        }
    }
    for(int i=1;i<=h;i++){
        for(int j=1;j<=w;j++){
            cout<

D - Count Subtractions

数据太大了,纯模拟必定超时

Atcoder Beginner Contest 297_第1张图片

代码如下: 

#include
#include
#include
#include
#define int long long
using namespace std;
signed main()
{
    int a,b;
    cin>>a>>b;
    int cnt=0;
    while(a!=b){
        if(ab){
            a=a-b;
            cnt++;
        }
    }
    cout<

可以始终认定A大于B

如果AmodB等于0,那么cnt+=A/B-1

如果AmodB不等于0,那么cnt+=A/B,A=A%B

 Atcoder Beginner Contest 297_第2张图片

为什么想到整除呢?因为大的数如果减去小的数之后还是比小的数要大的话,肯定还是减去那个小的数,所以想到整除

AC代码:

#include
#include
#include
#define int long long
using namespace std;
int cnt;
signed main()
{
    int a,b;
    cin>>a>>b;
    while(a!=b){
        if(a

E - Kth Takoyaki Set

共有N个整数,然后任意组合(同一个数可以用多次)的和,求第k小的和是多少

利用set自动升序,将一批一批的数放入set中,先将所有数都放入set中,然后接下来每一次都是将set中的第一个数(最小的数)加上原来的N个数放入set中,最后输出set中第k个数

为方便获取第k个数,可以用k次循环,然后每次删掉第一个数,k次循环后,set中的第一个数就是要求的第k小的数

AC代码:

#include
#include
#include
#include
#include
#define int long long
using namespace std;
signed main()
{
    vectore;
    sets;
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        e.push_back(x);
    }
    sort(e.begin(),e.end());
    s.insert(0);
    while(k--){
        int x;
        for(int i=0;i

你可能感兴趣的:(Atcoder,Beginner,Contest,c++,算法,vector,set)