NOIP2019普及级别模拟 3.30校模拟

好吧我还是第一次写这种总结类的玩意…

考场心情…hmm…我没睡醒。是的是这样的,反正题都有两三个看错了或者没看懂…

最关键的是!!我!居!然!把!Freopen!写!在!了!程!序!最!后!

然后就和谐愉快欢乐的爆0了。

好的那么来记录一下这次0分考试叭…

A. 【NOIP2018普及级别模拟】数池塘

 

第一眼望去…好的老师你放水了…这个很显然…

一定是在学搜索的时候玩的模板级水题…

脑海里盘旋起了明老师的重庆话…“到边边儿~跳出来~每张牌牌挨到来!手中牌,插进来,千万莫忘要收牌~”

好的。深搜认定。

#include<iostream>
using namespace std;
bool a[1001][1001];
int total=0;
int n,m;
void search(int x,int y){
    if(x>n||y>m||x<1||y<1){
        return;
    }
    if(a[x][y]==false){
        return;
    }
    if(a[x][y]){
        a[x][y]=false;
        search(x+1,y);
        search(x-1,y);
        search(x,y-1);
        search(x,y+1);
        search(x+1,y+1);
        search(x-1,y-1);
        search(x+1,y-1);
        search(x-1,y+1);
     //a[x][y]=true; } }
int main(){ cin>>n>>m; char index='a'; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>index; if(index=='W'){ a[i][j]=true; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]){ total++; search(i,j); } } } cout<<total; }

无非就是像染色一样,找到一个W就把他周围所有的W全染成“.”,记得count就好了。

但是发觉我一“收牌”丫就RE了,于是就注释了a[x][y]=true;

然后就愉快的拿到了保底分AC…

B. 【NOIP2018普及级别模拟】接苹果

 

我还真不知道奶牛爱吃苹果。

好吧,第一反应——老师老师我知道!这题是标准的动态规划!!

第二反应——啊,DF是怎么玩的来着…忘…掉…了…

于是就直接0了。

之后去翻洛谷的题解,恍然大悟。

哇!原来不止我一个人喜欢盲起搜索!

//来源洛谷题解  已经完全理解,并可以重构。 
#include <cstdio>      
#include <iostream>
#include <cstring>
using namespace std;
int n, w, a[1005], f[1005][3][35];          
int dfs(int i,int j,int k)                      
{
    if (i > n)return 0;                      
    if (f[i][j][k] != -1)return f[i][j][k];   
    int tmp1 = 0, tmp2 = 0;            
    if (k < w && a[i] != j)                
        tmp1 = dfs(i + 1, -1 * j + 3, k + 1) + 1;   
    tmp2 = dfs(i + 1, j, k) + (j == a[i] ? 1 : 0);     
    return f[i][j][k] = max(tmp1, tmp2);       
}
int main()
{
    //freopen("  .in","r",stdin);          //朕就是今天在这里傻不兮兮的把freopen写到了程序末尾才爆了0…… 
    //freopen("  .out","w",stdout);
    cin >> n >> w;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    memset(f, -1, sizeof(f));         
    cout << dfs(1, 1, 0);              
}

看完题解才觉得“其实我可以的!”

好吧,在某一时间中,我们只有两种选择:

1.跑到另一棵树

2.待在原地不要动

于是就有了tmp1与tmp2这种神奇的小别致。如果这个时刻我们不动都可以拿到一个苹果,那我肯定不走呀!!然后我们比较一下两种可能谁更大就好了。i表示时刻点,j表示所在树,k表示移动的次数。

C. 【NOIP2018普及级别模拟】.找数

这题我不想说什么,为我的神志不清开心的拍起肚皮

分明是刚学都能会的…我硬生生看成了求第K小的数…

还细心地帮他去了个重…(然而并不用)

不如先欣赏一下这个智障操作好了…

#include<iostream> 
#include<algorithm>
#include<cstdio>
using namespace std;
const int MAXN=3005000;
int xu[MAXN];
bool qc[MAXN];
int k,n;
int main(){
    int x;
    scanf("%d%d",&n,&k);
    k++;
    for(int i=1;i<=n;i++){
        scanf("%d",&x);
        if(qc[x]==false){
            xu[++xu[0]]=x;
            qc[x]=true;
        }
    }
    sort(xu+1,xu+1+xu[0]);
    printf("%d",xu[k]);
    //freopen("find.in","r",stdin);
//    freopen("find.out","w",stdout);
} 

啊,仿佛还能嗅得到当时脑子里的海鲜味。

#include<bits/stdc++.h>
//代码源自WKJ,已经理解并可以重构 
using namespace std;
int n,k;
int a[3000000];
bool cmpy(int x,int y){
    return x>y;
}
int main(){
//    freopen("find.in","r",stdin);
//    freopen("find.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    sort(a+1,a+n+1,cmpy);//所以说是第几大…我还以为是算第几小… 
    printf("%d",a[k]);
    return 0;
}

D. 【NOIP2018普及级别模拟】最短路线

这题我依然没有AC…因为据说涉及到高精度压位,懵逼着呢。等会钻研一下。

猜你喜欢

转载自www.cnblogs.com/Uninstalllingyi/p/10631860.html