2019第十届蓝桥杯c/c++,b组

感觉、、我比去年还菜

/*2019-3-28成绩出来了、省二,

和去年一样,去年是差点省一,今年差点省三。。。

数的分解10分,迷宫15分,这样丢了25分

完全二叉树的权值20分的题,当成满二叉树做的,按丢5分算(其实觉的丢的分不止这些)

这样丢了30分。。。妈耶,我想一巴掌呼死自己

等会、、等差数列还有20分呢、、、、mdlx

ps 学校的机房还是不能用longlong,又浪费好长时间调bug,醉了

*/

没啥想法的第一题,瞪眼瞪出的490

手算的第二题BYQ

拆2019的,我好像少读了个条件、、(还是说那个特殊数的和来着,忘了、、)

迷宫的手动模拟了下dfs,mdzz,眼都花了,最后写了个dfs

等差数列智障写了个最小的差分、、应该求gcd+特判gcd==0的

完全二叉树不是,满二叉树、、gg

倒数第二题,sort直接写的,据说,不对,要考虑括号、、、(我寻思着题目里也没说啊)

最后一题太麻烦,直接输出随机数了

 

凉了、、、这么一算我,分都没了、、

C

#include
using namespace std;
typedef unsigned long long ll;
const int maxn = 1e5+7,mod = 1e9+7;
int dp[20190324+10] = {0,1,1,1};
int main(){
    for(int i=4;i<=20190324;i++)
        dp[i] = (dp[i-1]+dp[i-2]+dp[i-3])%10000;
    printf("%d\n",dp[20190324]);
    return 0;
}
// 4659

 

D

wsl,少看了个条件,不能有 2 或 4

#include
using namespace std;
typedef unsigned long long ll;
const int maxn = 1e5+7,mod = 1e9+7;
bool jude(int x){
    while(x){
        if(x%10 == 2 || x%10 == 4)
            return true;
        x /= 10;
    }
    return false;
}
int main(){
    ll ans = 0;
    for(int i=1;i<=2019;i++){
        if(jude(i))continue;
        for(int j=i+1;j<=2019 && 2019-(i+j)>j;j++){
            if(jude(j) || jude(2019-(i+j)))continue;
            ans++;
        }
    }
    printf("%lld\n",ans);
    return 0;
}
// 40785

 

迷宫,bfs+dfs

当时写错了qwq

咱这个代码可以看下是怎么走哒,笑

 

 

 

 

*1 1 1 1  1 11  1  1 1 11  1 11 1  1****1   1 1 1
*   1   1     1 1 1  1    1       1**11* 11 1  1 1
*1111 11 1  1   1     11 1  1 111***11 ******1
*1******* 1 1 1   11 1    1 1  ***1 1 1 1 11* 1 11
***11111***** 1 1    1  1 1   1*1     1 11  ***
11  1   11 1*1    1 1 11   11 1**11 1 1 1 1111*111
   11 11 1 1*1  1  1  1 1      1*  1 1  111****
1 1     1 1** 1  11 1 1 1 11111 *11    1   *111 1
  111     1*1 1    11   1      1***1 1  11 ***1  1
11   11 1  **111  1   1  1 1 1 1 1*1 1 1   11*1
   1    1  1*    1 1  1 1 1 111 1 * 1 1 1 1  **1 1
111  1  1 1 *1  1    1     1 1 1 1*1  1  1   1*1
      1     * 1 1 11  1111 1   11 ****1 1 1 1** 11
1 1 1 1  111*   1    11    1 11  1111*11 1   *1
1 1 1 1 1   *11 1 1 1  1 1    1 1*****111 111*1  1
1       1 11*  1    1 11  1 11 1 *1 111    *** 1
1 1 1  1    *  1 1  1    1   1   * 1   1111*1 1  1
  1 1  1 1 1*11 1  1 1 1   11 1 1*11 111****11 1 1
11  1 1    1*   11      1 1  1 1 *** 1 **111    1
    1   11  * 11 1 11 1      1  1 1**1 *1    111 1
1 1  1 1   1*1    *** 111 11  1 11 1*11*1 1 1    1
  1 1    1  **11 1*1*1    1   1   1 *1** 1   1 1 1
1 1    1   11* 1***1*   1 1 1  1 1 1*1*11111 1  1
     1  1 1  ****11 *1 1  1 1  1    *1**********1
11 1      1  111 111**1  1    111 1 *1 11 111 1*
     11 1   1   1   1*******1*** 111*1      11 *11
1 1 1   1 1   1   1   11111***1*1 1**1 1      1*
1     1 1  1 1  1 1 11       1 *1 1*1   1 111 1*
  1111    1    1       11 111  ***** 1        1*11
1      11  111 1 111 1   1   11 111 1 1 11 1111***

DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUUL
LLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR
186

Process returned 0 (0x0)   execution time : 1.883 s
Press any key to continue.
#include
#include
using namespace std;
typedef unsigned long long ll;
const int maxn = 1e5+7,mod = 1e9+7;
char s[100][100],ans[1000],t[5] = "DLRU",out[1000];
int cnt = 1e9;
int dx[4] = {1,0,0,-1};
int dy[4] = {0,-1,1,0};
bool vis[100][100];
int mmp[100][100],flag;
void Setout(int x,int y){
    COORD coord;
    coord.X = x; //第3行
    coord.Y = y; //第3列
    //获取控制台缓冲区句柄
    HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    //设置光标位置
    SetConsoleCursorPosition(ConsoleHandle, coord);
}
void dfs(int x,int y,int deep){
    if(flag)return;
    if(x == 30 && y == 50){
        if(cnt>deep){
            cnt = deep;
            for(int i=0;i0&&ty>0&&tx<=30&&ty<=50&& s[tx][ty]=='0' && !vis[tx][ty] && mmp[tx][ty]>mmp[x][y]){
            ans[deep] = t[i];
            vis[tx][ty] = 1;
            Setout(ty-1,tx-1);
            printf("*");
            dfs(tx,ty,deep+1);
            if(flag)return;
            vis[tx][ty] = 0;
            Setout(ty-1,tx-1);
            printf(" ");
        }
    }
}
struct node{int x,y,id;};
void bfs(){
    queue Q;
    mmp[1][1] = 0;
    Q.push(node{1,1,0});
    while(!Q.empty()){
        node top = Q.front();
        Q.pop();
        for(int i=0;i<4;i++){
            node t = {top.x+dx[i],top.y+dy[i],top.id+1};
            if(t.x>0&&t.y>0&&t.x<=30&&t.y<=50 && s[t.x][t.y] == '0' && mmp[t.x][t.y]>t.id){
                mmp[t.x][t.y] = t.id;
                Q.push(t);
            }
        }
    }
}
int main(){
    memset(mmp,0x3f,sizeof mmp);
    for(int i=1;i<=30;i++)
        scanf("%s",s[i]+1);
    bfs();
    system("cls");
    for(int i=1;i<=30;i++){
        for(int j=1;j<=50;j++)//printf("%c",s[i][j]=='0'?mmp[i][j]%2+'0':'#');
            printf("%c",s[i][j]=='0'?' ':'1');
        puts("");
    }
    //printf("%d\n",mmp[30][50]);
    vis[1][1] = 1;
    Setout(0,0);printf("*");
    dfs(1,1,0);
    Setout(0,31);
    for(int i=0;i

 

你可能感兴趣的:(某次比赛)