Contest1808

 ANGLES

#include<bits/stdc++.h>
 
using namespace std;
 
int main()
{
    int n,a,b,c;
    scanf("%d",&n);
    while (n--)
    {
        scanf("%d%d%d",&a,&b,&c);
        if (a+b+c==180)
        {
            printf("%d %d %d Seems OK
",a,b,c);
        }
        else
        {
            printf("%d %d %d Check
",a,b,c);
        }
    }
}

GOLF CROQUET

#include<bits/stdc++.h>
 
#define po set<node>::iterator
using namespace std;
const int maxn = 1e5 + 10;
int n, cnts, cntt, len, sw, tw;
char s[maxn], t[maxn], o[maxn];
 
int main() {
    //freopen("1.txt", "r", stdin);
    char ch;
    while (ch = getchar()) {
        if (ch == '
')break;
        s[++cnts] = ch;
    }
    while (ch = getchar()) {
        if (ch == '
')break;
        t[++cntt] = ch;
    }
    int flag=0;
    scanf("%d", &len);
    scanf("%s", o + 1);
    for (int i = 1; i <= len; ++i) {
        if (i % 2) {
            if (o[i] == 'S')continue;
            if (o[i] == 'H') {
                sw++;
                if (sw == 7){
                    if(i<len)flag=1;
                    goto ed;
                }
            }
            if (o[i] == 'D') {
                if (sw + 2 > 7) {
                    sw=7;
                    if(i<len)flag=1;
                    goto ed;
                } else if (sw + 2 == 7) {
                    sw += 2;
                    if(i<len)flag=1;
                    goto ed;
                } else {
                    sw += 2;
                    //cout<<"debug i="<<i<<' '<<sw<<endl;
                }
            }
            if (o[i] == 'O') {
                tw++;
                if (tw == 7) {
                    if(i<len)flag=1;
                    goto ed;
                }
            }
        } else {
            if (o[i] == 'S')continue;
            if (o[i] == 'H') {
                tw++;
                if (tw == 7){
                    //if(i<len)flag=1;
                    goto ed;
                }
            }
            if (o[i] == 'D') {
                if (tw + 2 > 7) {
                    tw=7;
                    //if(i<len)flag=1;
                    goto ed;
                } else if (tw + 2 == 7) {
                    tw += 2;
                    //if(i<len)flag=1;
                    goto ed;
                } else {
                    tw += 2;
                }
            }
            //O H H O H
            //S S D S D
            if (o[i] == 'O') {
                sw++;
                if (sw == 7) {
                    if(i<len)flag=1;
                    goto ed;
                }
            }
        }
    }
    ed:;
    int ss = 1, tt = 1;
    while (ss <= cnts) {
        printf("%c", s[ss++]);
    }
    printf(" ");
    printf("%d ", sw);
    while (tt <= cntt) {
        printf("%c", t[tt++]);
    }
    printf(" ");
    printf("%d", tw);
    printf(". ");
    if (sw != tw && max(sw, tw) != 7) {
        if (sw > tw) {
            ss = 1;
            while (ss <= cnts) {
                printf("%c", s[ss++]);
            }
        } else if (sw < tw) {
            tt = 1;
            while (tt <= cntt) {
                printf("%c", t[tt++]);
            }
        }
        printf(" is winning.
");
    } else if (sw != tw && max(sw, tw) == 7) {
        if (sw > tw) {
            ss = 1;
            while (ss <= cnts) {
                printf("%c", s[ss++]);
            }
        } else if (sw < tw) {
            tt = 1;
            while (tt <= cntt) {
                printf("%c", t[tt++]);
            }
        }
        printf(" has won.
");
    } else {
        printf("All square.
");
    }
    return 0;
}

BYTE ME!

#include<bits/stdc++.h>
#define po set<node>::iterator
using namespace std;
const int maxn=1e5+10;
int n;
int c[16][10];
int o[10],q[16],s[16];
int main(){
    //freopen("1.txt","r",stdin);
    scanf("%d",&n);
    for(int i=1;i<=n;++i){
        for(int j=1;j<=8;++j){
            scanf("%d",&c[i][j]);
        }
        for(int j=1;j<=8;++j){
            if(c[i][j])q[i]++;
        }
        q[i]=q[i]%2;
    }
    int cnt=0;
    for(int i=1;i<=8;++i){
        scanf("%d",o+i);
        if(o[i])cnt++;
    }
    cnt=cnt%2;
    int cnt1=0,cnt2=0;
    for(int i=1;i<=n;++i){
        if(q[i]) cnt1++;
        else cnt2++;
    }
    if(cnt1==1){
        printf("Even
");
        cnt=1;
    }
    else
    {
        printf("Odd
");
        cnt=0;
    }
    for(int i=1;i<=n;++i){
        if(q[i]==cnt){
            printf("Byte %d is broken
",i);
            break;
        }
    }
    for(int i=1;i<=8;++i){
        for(int j=1;j<=n;++j){
            if(c[j][i]){
                s[i]++;
            }
        }
    }
    for(int i=1;i<=8;++i){
        if(o[i]){
            s[i]++;
        }
        s[i]=s[i]%2;
    }
    int ss=0,tt=0,ids,idt;
    for(int i=1;i<=8;++i){
        if(s[i]){
            ss++;
            ids=i;
        }
        else{
            tt++;
            idt=i;
        }
    }
    if(ss==1){
        printf("Bit %d is broken
",ids);
    }
    else{
        printf("Bit %d is broken
",idt);
    }
    return 0;
}
 

TREES

#include<bits/stdc++.h>
using namespace std;
 
struct node
{
    char c;
    node* lc=NULL;
    node* rc=NULL;
    int h,hl,hr;
    void geths()
    {
        if (lc!=NULL) lc->geths();
        if (rc!=NULL) rc->geths();
        hl= lc==NULL?0:lc->h+(lc->rc==0);
        hr= rc==NULL?0:rc->h+(rc->lc==0);
        h=1+hl+hr;
    }
};
 
void build(node* &root)
{
    char cc;
    scanf(" %c",&cc);
    if (cc=='@')
    {
        return;
    }
    root = new node();
    root->c=cc;
    build(root->lc);
    build(root->rc);
}
const int N = 405;
char a[N+5][N+5];
 
void print(node*p,int sx,int sy)
{
    if (p==NULL) return;
    int x=sx,y=sy;
    if (p->lc!=NULL)
    {
        for (int i=1; i<p->lc->hr; i++)
        {
            x--;
            a[x][y]='|';
        }
        x--;
        y++;
        a[x][y]='/';
        x--;
        y++;
        print(p->lc,x,y);
    }
    a[sx][sy]=p->c;
    x=sx;
    y=sy;
    if (p->rc!=NULL)
    {
        for (int i=1; i<p->rc->hl; i++)
        {
            x++;
            a[x][y]='|';
        }
        x++;
        y++;
        a[x][y]='\';
        x++;
        y++;
        print(p->rc,x,y);
    }
}
int main()
{
    int _,ca=0;
    scanf("%d",&_);
    while (_--)
    {
        printf("Graph %d
",++ca);
        memset(a,' ',sizeof(a));
        node *root;
        build(root);
        root->geths();
        print(root,root->hl+1,0);
        for (int i=1; i<=root->h; i++)
        {
            int jend=N;
            for (; a[i][jend]==' '; jend--);
            a[i][jend+1]=0;
            printf("%s
",a[i]);
        }
        printf("
");
    }
    return 0;
}

 PACKING

import java.util.Scanner;
 
public class Main {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner cin=new Scanner(System.in);
        int _=cin.nextInt();
        for (int t=1;t<=_;t++){
            int w[]=new int[110];
            int v[]=new int[110];
            int dp[][]=new int[1100][1100];
            int n=cin.nextInt();
            int w1=cin.nextInt();
            int w2=cin.nextInt();
            for (int i=1;i<=n;i++){
                w[i]=cin.nextInt();
            }
            for (int i=1;i<=n;i++){
                v[i]=cin.nextInt();
            }
            for (int i=1;i<=n;i++){
                for (int j=w1;j>=0;j--){
                    for (int k=w2;k>=0;k--){
                        if (j>=w[i]) dp[j][k]=max(dp[j][k],dp[j-w[i]][k]+v[i]);
                        if (k>=w[i]) dp[j][k]=max(dp[j][k],dp[j][k-w[i]]+v[i]);
                    }
                }
            }
            System.out.println("Problem "+t+": "+dp[w1][w2]);
        }
    }
    static int max(int a,int b){
        if (a>b) return a;
        return b;
    }
 
}

DOMINO KKILLING

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;
map<PII,char>m;
int ans;

void solve(int s,int t,int x,int y,int cnt)
{
    ans=max(ans,cnt);
    if (s<0||t<0)
    {
        return;
    }
    if (m[make_pair(s,t)]=='-')
    {
        m[make_pair(s,t)]='.';
        if (y==1)
        {
            solve(s,t+1,0,1,cnt+1);
        }
        else
        {
            if (y==-1)
            {
                solve(s,t-1,0,-1,cnt+1);
            }
            else
            {
                return;
            }
        }
    }
    else if (m[make_pair(s,t)]=='|')
    {
        m[make_pair(s,t)]='.';
        if (x==1)
        {
            solve(s+1,t,1,0,cnt+1);
        }
        else
        {
            if (x==-1)
            {
                solve(s-1,t,-1,0,cnt+1);
            }
            else
            {
                return;
            }
        }
    }
    else if (m[make_pair(s,t)]=='\')
    {
        m[make_pair(s,t)]='.';
        if (x==1&&y==-1||x==1&&y==0||x==0&&y==-1)
        {
            solve(s+1,t-1,1,-1,cnt+1);
        }
        else if (x==-1&&y==1||x==-1&&y==0||x==0&&y==1)
        {
            solve(s-1,t+1,-1,1,cnt+1);
        }
        else
            return;
    }
    else if (m[make_pair(s,t)]=='/')
    {
        m[make_pair(s,t)]='.';
        if (x==1&&y==1||(x+y)==1)
        {
            solve(s+1,t+1,1,1,cnt+1);
        }
        else if (x==-1&&y==-1||(x+y)==-1)
        {
            solve(s-1,t-1,-1,-1,cnt+1);
        }
        else
            return;
    }
    else return;
}


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,s,x,y;
    while (cin>>n>>s>>x>>y)
    {
        if (x==0&&y==0&&n==0&&s==0)
        {
            break;
        }
        m.clear();
        int a,b,S,T;
        char c;
        ans=0;
        for (int i=0; i<n; i++)
        {
            cin>>a>>b>>c;
            m[make_pair(a,b)]=c;
            if (i==s)
            {
                S=a;
                T=b;
            }
        }
        solve(S,T,x,y,0);
        printf("%d
",ans);
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/Accpted/p/11337867.html