弱校联盟10.3

Problem A。 Best Matched Pair

找出最大的每一位递增1的一对乘积,n^2枚举

#include<bits/stdc++.h>
using namespace std;
int n,a[2000],ans=-1;
bool ck(int a){
    int b=-1;
    while(a){
        int t=a%10;//23456
        a/=10;
        if(b!=-1&&t!=b-1)return 0;
        b=t;
    }    
    return 1;
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            if(ck(a[i]*a[j]))
                ans=max(ans,a[i]*a[j]);
    printf("%d",ans);
}

Problem B。 Help the Princess!

公主能否逃到出口且不被士兵们赶上。

从出口bfs,如果出口离公主比离任意一个士兵近,则可以逃出。

#include<bits/stdc++.h>
#define N 205
using namespace std;
int n,m;
char mp[N][N];
int dx[6]={0,0,1,-1};
int dy[6]={1,-1,0,0};
int sod=-1,pri;
int vis[N][N];
struct node{int x,y,d;}q[50000];
void bfs(){
    int l=0,r=0;
    while(l<=r){
        node k=q[l++];
        if(mp[k.x][k.y]=='$' && sod==-1) sod=k.d;
        if(mp[k.x][k.y]=='@') pri=k.d;
        for(int i=0;i<4;i++)
        {
            node p=(node){k.x+dx[i],k.y+dy[i],k.d+1};
            if(p.x>=0 && p.x<n && p.y>=0 && p.y<m){
                if(mp[p.x][p.y]!='#' && !vis[p.x][p.y]) {
                    q[++r]=p;
                    vis[p.x][p.y]=1;
                }
            }
        }
    }
}
int main(){
    scanf("%d%d ",&n,&m);
    
    for(int i=0;i<n;i++){
        char s[1000];
        cin.getline(s,1000);
        for(int j=0;s[j];j++){
            mp[i][j]=s[j];
            if(s[j]=='%')q[0]=(node){i,j,0},vis[i][j]=1;
        }
    }
    bfs();
    if(sod!=-1 && sod<=pri)puts("No");
    else puts("Yes");
}

Problem D。 Parentheses

问你需要交换t次即可匹配正确的长度最小、字典序最小的括号序列。

n对括号最多需要1+2+..+n次交换,当它是)))..(((的形式时,)))(((需要6次,然后把中间两个交换一下,))()((就还需要5次,再交换一次靠近左边的)(,变成了)())((就需要4次,而3次,只要2对括号。

t次交换,先找出需要多少对括号,然后先给它)))...(((的形式,然后交换s-(p-t)(比如5次交换,就是3-(6-5)=2)和s.

#include<bits/stdc++.h>
#define N 1000000
using namespace std;
int t,s,p;
char a[N];
int main(){
    scanf("%d",&t);
    for(s=1;p<t;s++)p+=s;
    s--;
    for(int i=0;i<s;i++)a[i]=')',a[i+s]='(';
    swap(a[s],a[t-p+s]);
    printf("%s",a);
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【USACO 3.2】Magic Squares

    4*2个格子分别为 1234 8765 的魔板有3种操作,A:上下两排互换,B:最后一列放到第一列前面,C:中间四个顺时针旋转1格。 现在给出目标状态,...

    饶文津
  • 【CodeForces 504A】Misha and Forest

    有n个点,代号分别为0到n-1,然后第i个点有di个相连点,与i 相连的点的XOR sum 为si,求所有的边。

    饶文津
  • 【HDU 5839】Special Tetrahedron(计算几何)

    共面判断就是用叉乘计算出ijk三点所在面的法向量,然后判断il向量是否和法向量垂直,是则共面。

    饶文津
  • 【USACO 3.2】Magic Squares

    4*2个格子分别为 1234 8765 的魔板有3种操作,A:上下两排互换,B:最后一列放到第一列前面,C:中间四个顺时针旋转1格。 现在给出目标状态,...

    饶文津
  • 颜色聚合向量

    package com.imageretrieval.features; /** * 颜色聚合向量<br> * 参考链接:http://www.docin...

    Venyo
  • 每天一算: Number of Boomerangs

    五分钟学算法
  • 牛客小白月赛11D(分治、RMQ)

    定义一个玄学节点叫做 R,每次操作读入 val ,执行 Insert(R,val)。

    ACM算法日常
  • LeetCode31|打印从1到最大的n位数

    这道题算是api的使用方式了,数据的计算,其实自己也没有什么好说的了,但是由于文章的字数必需要达到300字,所有有些时候就只好在这里唠会嗑了,因为文章的原创对于...

    后端Coder
  • 2018 团队设计天梯赛题解---华山论剑组

    2018 年度的团队设计天梯赛前几天结束了。但是成绩真的是惨不忍睹。。。毕竟是团队的比赛,如果团队平均水平不高的话,单凭一个人,分再高也很难拉起来(当然,一个人...

    指点
  • 【CodeForces 504A】Misha and Forest

    有n个点,代号分别为0到n-1,然后第i个点有di个相连点,与i 相连的点的XOR sum 为si,求所有的边。

    饶文津

扫码关注云+社区

领取腾讯云代金券