当前位置 : 主页 > 编程语言 > 其它开发 >

2022.3.15学习记录

来源:互联网 收集:自由互联 发布时间:2022-05-30
1.今日完成题目 题目一 题意:从(1,1)能否走到终点(2,n) 题解:若同一列中全为‘1’,则绝对不可能走到终点,因为图只有两行 查看代码 #includecstdio#includecstring#includeiostream#incl

1.今日完成题目

题目一

题意:从(1,1)能否走到终点(2,n)

题解:若同一列中全为‘1’,则绝对不可能走到终点,因为图只有两行

查看代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<vector>
#include<cmath>
using namespace std;
#define maxn 100020
#define inf 1e8
char maps[2][200];
int t,num;
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    cin>>t;
    for(int z=0;z<t;z++)
    {
        int n;
        cin>>n;
        num=0;
        for(int i=0;i<n;i++)
            maps[0][i]=maps[1][i]='0';
        for(int i=0;i<2;i++)
        {
            for(int j=0;j<n;j++)
            {
                cin>>maps[i][j];
            }
        }
        // cout<<maps[0][1];
        int flag=1;
        for(int j=0;j<n;j++)
        {
            // cout<<"!!"<<endl;
            if(maps[0][j]=='1'&&maps[1][j]=='1')
            {
                cout<<"NO"<<endl;
                flag=0;
                break;
            }
        }
        if(flag){
            cout<<"YES"<<endl;
        }
        // cout<<n<<endl;
    }
    return 0;
}

 

 题目二

题意:是否可以把分成两组人数相同的同学分别集中安排到不同的week day(chose from Monday to Frinday)上课

题解:暴力统计是否存在两列数据中方便上课的同学数>=总人数的一半并且满足这两列数据中所有同学都可以来上课

查看代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<vector>
#include<cmath>
using namespace std;
#define maxn 100020
#define rep(i,l,r) for(register int i = l ; i <= r ; i++)
#define repd(i,r,l) for(register int i = r ; i >= l ; i--)
#define inf 1e8
const int N=1e3+10;
int maps[N][6],num[6];
vector<int> vis[6];
set<int>s;
void mergep(int x,int y)
{
    for(int i=0;i<vis[x].size();i++) s.insert(vis[x][i]);
     for(int i=0;i<vis[y].size();i++) s.insert(vis[y][i]);
 }
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        memset(maps,0,sizeof(maps));
        memset(num,0,sizeof(num));
        memset(vis,0,sizeof(vis));
        rep(i,1,n) rep(j,1,5) {
            cin>>maps[i][j];
            if(maps[i][j]) num[j]++,vis[j].push_back(i);
        }
        int flag=0;
        for(int i=1;i<=4;i++) {
            for(int j=i+1;j<=5;j++){
            s.clear();
            mergep(i,j);
            if(num[i]>=(n>>1)&&num[j]>=(n>>1)&&s.size()==n)
            {
                flag=1;
                cout<<"YES"<<endl;
                break;
            }
            }
            if(flag) break;
        }
        if(!flag)
        cout<<"NO"<<endl;
    }
    return 0;
}

 2.总结部分

one.今天的第一题因为数据的类型用错,导致我多用了很长时间来debug,所以今后写的时候要考虑好该用什么数据类型,debug时也优先看看这些细节的地方(数据类型,数据范围等)

two.今天看完一位兄弟的博文后深有感触——谁都不是神,看一遍就会,做一道就会举一反三。靠的是不断地复习巩固,不断地反思。因此,我决定以后每天都更新一下博文来总结今天的学习内容,同时以后每周也会刻意的去复习已经学过的知识。

最后,不要茫然,选好了路边便风雨兼程走下去,加油,加油,加油!!!

网友评论