ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

有关csp自我反思

2019-12-18 11:02:01  阅读:219  来源: 互联网

标签:return Point int 自我 字符串 3000 反思 last csp


首先说说体会把

这次前几个都是模拟,最后一道题以为自己可能会结果是半吊子根本不会,导致浪费了三个小时写第五题只有十分
如果不畏惧字符串而专心的写第三题的话,应该结果会不一样把。希望下次能好好考
第一题就是个简单的报数
#include <bits/stdc++.h>

using namespace std;

int ans[4] = {0};

int judge(int x)
{
    int last = 0;
    if(x%7==0)
        return 1;
    else
    {
        while(x>0)
        {
            last = x%10;
            x/=10;
            if(last==7)
                return 1;
        }
    }
    return 0;
}
int main()
{
   // ios::sync_with_stdio(false);
   int n;
   int num = 0;
   cin>>n;
   for(int i=1; num<n; i++)
   {
        if(judge(i))
        {
            ans[(i-1)%4]++;
        }
        else
        {
            num++;
        }
   }
   for(int i=0; i<4; i++)
    cout<<ans[i]<<endl;

    return 0;
}
第二题。考试的时候太毛躁了,其实直接暴力搜索就好了,心态真的太差了
浪费自己的时间,主要还是自己太菜了
#include <bits/stdc++.h>

using namespace std;

struct Point{
    int x,y;

    Point(const Point& b)
    {
        x = b.x;
        y = b.y;
    }
    Point()
    {

    }
    Point(int a, int b)
    {
        x=a;
        y=b;
    }
    const bool operator <(Point b) const
    {
        return x==b.x?y>b.y:x>b.x;
    }
};

//int valid[3000][3000]={0};
int ans[5] = {0};

priority_queue<Point> q;

vector<Point> g[3000];

void judge(Point a, int i, int j) //判断是否合法
{
    int flag[4] = {0};//看是不是一个合法的点,得找他的,上下左右
    int score=0;
    for(int m = 0; m<g[i-1].size(); m++)
    {
        if(g[i-1][m].x==(a.x-1)&&g[i-1][m].y==a.y)
            flag[0] = 1;
        if(g[i-1][m].x==(a.x-1)&&g[i-1][m].y==(a.y+1))
           score++;
        if(g[i-1][m].x==(a.x-1)&&g[i-1][m].y==(a.y-1))
           score++;

    }
     for(int m = 0; m<g[i].size(); m++)
    {
        if(g[i][m].y==(a.y+1))
            flag[1] = 1;
        if(g[i][m].y==(a.y-1))
            flag[2] = 1;
    }
     for(int m = 0; m<g[i+1].size(); m++)
    {
        if(g[i+1][m].x==(a.x+1)&&g[i+1][m].y==a.y)
            flag[3] = 1;
        if(g[i+1][m].x==(a.x+1)&&g[i+1][m].y==(a.y+1))
            score++;
        if(g[i+1][m].x==(a.x+1)&&g[i+1][m].y==(a.y-1))
            score++;
    }

    for(int m=0; m<4; m++)
       if(!flag[m])
        {
           // valid[i][j] =0
           //cout<<flag[m]<<" ";
            return ;
        }
    ans[score]++;
    //cout<<score<<endl;
}


int main()
{
    int n;
    cin>>n;
    int x;
    int y;
    for(int i=0; i<n; i++)
    {
        cin>>x>>y;
       q.push(Point(x,y));
    }
    int raw = 0;
    Point to = q.top();
    g[raw].push_back(to);
    //cout<<to.x<<" "<<to.y<<endl;
    int curx = to.x;
    q.pop();
    while(!q.empty())
    {
        to = q.top();
        //cout<<to.x<<" "<<to.y<<endl;
        q.pop();
        if(curx!=to.x) //代表在另外的行了
        {
            raw++;
            curx = to.x;
            g[raw].push_back(to);
        }
        else{
            g[raw].push_back(to);
        }
    }
    //现在已经存起来了
    //开始判断结果,先排序
    if(raw<2)
    {
        //cout<<"11"<<endl;
        cout<<"0"<<endl;
        cout<<"0"<<endl;
        cout<<"0"<<endl;
        cout<<"0"<<endl;
        cout<<"0"<<endl;
    }
    else
    {
        //cout<<raw<<endl;
        //for(int i=0; i<=raw; i++)
         //   sort(g[i].begin(),g[i].end());
        for(int i=1; i<=raw-1; i++)
        {
            //cout<<g[i].size()<<endl;
            for(int j=1; j<g[i].size()-1; j++)
            {
                //cout<<"diaoyonfg"<<endl;
                judge(g[i][j],i,j);
            }
        }
        for(int i=0; i<5; i++)
            cout<<ans[i]<<endl;
    }
    return 0;
}

/*
7
1 2
2 1
0 0
1 1
2 0
0 1
1 0

11
9 10
10 10
11 10
12 10
13 10
11 9
11 8
12 9
10 9
10 11
12 11
*/
第三题是个字符串,当时想用dfs来做,但是我是真的不喜欢做字符串的题,于是直接写了前两个样例点的就看后面的了
第四题没仔细看,直接看第五题,觉得自己会,想骗分,结果模两次不满足分配律,直接凉凉

最后总分230,下次再来,凉凉。 下次一定好好做第三题

标签:return,Point,int,自我,字符串,3000,反思,last,csp
来源: https://www.cnblogs.com/Crossea/p/12058703.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有