• 个人简介

    反极域电子教室代码

    #include<bits/stdc++.h>
    #include <windows.gh>
    using namespace std;
    void movexy(short x, short y){
        COORD position={x, y};
        HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleCursorPosition(hOut, position);
    }
    int main(){
        movexy(37, 7);
        cout<<"反电子教室系统"<<endl;
        cout<<endl;
        cout<<"                                     目前可以反击:"<<endl;
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
        cout<<"                      红蜘蛛多媒体网络教室 - 输入 k-rs即可反击"<<endl;
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 11);
        cout<<"                              极域电子教室 - 输入 k-jy即可反击"<<endl;
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12);
        cout<<"                          伽卡他卡电子教室 - 输入 k-yk即可反击"<<endl;
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
        cout<<"                                  如果在开启本程序后关闭本程序,"<<endl;
        cout<<"                                        本次反击将无效!"<<endl;
        cout<<"    input >>> ";
        string s;
        cin>>s;
        if(s=="k-rs"){
            system("cls");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
            cout<<"                                  红蜘蛛反击系统启动成功"<<endl;
            Sleep(1000);
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
            while(1)
            {
                system("taskkill /f /t /im REDAgent.exe");
                system("cls");
            }
        }
        if(s=="k-jy"){
            system("cls");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 11);
            cout<<"                                  极域反击系统启动成功"<<endl;
            Sleep(1000);
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
            while(1)
            {
                system("taskkill /f /t /im StudentMain.exe");
                system("cls");
            }
        }
        if(s=="k-yk"){
            system("cls");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12);
            cout<<"                                  伽卡他卡反击系统启动成功"<<endl;
            Sleep(1000);
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
            while(1){
                system("taskkill /f /t /im Student.exe");
                system("cls");
            }
        } 
        return 0;
    }
    

    map(键值对)笔记

    #include <bits/stdc++.h>
    using namespace std;
    int main(){	
    	map<int,int> m;//创建键值对 
    	//键类型,值类型 
    	m[1]=2;//插入键为1,值为2,如果存在键为1的键值对,将键为1的值修改为2 	
    	m[1]++;	
    	cout << m[1] << endl;
    	cout << m.count(3) << endl; //如果存在键为3的键值对,返回1,否则返回0 
    	cout << m.size() << endl; //返回键值对的数量 
    	m.erase(1);//删除键为1的键值对 
    	m.insert({1,3});//插入键值对1-3
    	m[5]=6;
    	m[2]=4; 	
    	//会自动将键值对按照键的升序排序(如果键是字符串,按照字典序排序) 
    	for(auto it:m){
    		cout<<it.first<<" ";//first表示键 
    		cout<<it.second<<endl;//second表示值 
    	}
    	//要加-std=c++11
    	//键值对中键是唯一的,值是不唯一的
    	//插入,删除,修改的时间复杂度都是O(log(n)) 
    	return 0;
    }
    

    原码,反码,补码之间的转换

    数据是以二进制的形式存放的
    以补码的形式存放
    
    正数
    9
    0000 1001 原码 = 反码 = 补码
    
    负数
    -9
    1000 1001 原码 
    1111 0110 反码 = 原码除了符号位取反/补码-1 
    1111 0111 补码 = 反码+1
    补码的作用:简化整数加减法的运算
    举例:
      10-9:
      	0000 1010  (10的补码) 
      +	1111 0111  (-9的补码)
      ----------------
      	0000 0001   (1的补码)
    

    十进制小数转二进制小数

    口诀: 乘2取整,正序排列
    
    0.25 转为二进制小数
    0.25*2=0.5  取整整数 0
    0.5*2=1     取整整数 1
    正序排列 0.01 
    

    二进制小数转十进制

    举例:
      0 . a b c
      0 . a*1/2的1次方 + b*1/2的2次方 + c*1/2的3次方 
    

    不同类型的数据范围

    1Byte = 8bit
    关键词         二进制bit       字节Byte
    bool          8               1
    char          8               1
    short         16              2
    int           32              4
    long long     64              8
    float         32              4
    double        64              8
    

    无符号整数 string a.size()的返回值是无符号整

    unsigned int 全部表示正数 范围是 0 ~ 23212^{32}-1

    unsigned long long 全部表示正数 范围是 0 ~ 26412^{64}-1

    对于有符号数:

    正数的最大值:2位数11 2^{位数-1}-1

    负数的最小值:2位数1 -2^{位数-1}

    负数会比正数多一个

    二叉堆基本操作
    
    
    二叉堆(优先队列priority_queue)
    父<子:小顶堆 
    父>子:大顶堆
    
    插入的时间复杂度:O(log(n))
    删除的时间复杂度:O(log(n))
    查询最值的时间复杂度:O(1)
    
     
    	创建一个二叉堆
    	priority_queue<int,vector<int>,greater<int> > small;//小顶堆
    	priority_queue<int,vector<int>,less<int> > big;//大顶堆
    	堆名.push(元素);//插入元素
    	堆名.pop();//删除堆顶
    	堆名.top();//返回堆顶
    	堆名.size();//返回二叉堆的大小
    	堆名.empty();//如果二叉堆为空返回1,否则返回0 
    

    二分模板

    int f(int x){
    	int l=1,r=n,ans=-1;
    	while(l<=r){
    		int m=(l+r)/2;
    		if(a[m]>x){
    			r=m-1;
    		}
    		else if(a[m]<x){
    			l=m+1;
    		}
    		else if(a[m]==x){
    			ans=m;
    			r=m-1;
    		}
    	}
    	return ans;
    }
    

    BFS模板

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    int a[105][105];
    int v[105][105];
    int idx[]={0,1,0,-1};
    int idy[]={1,0,-1,0};
    int ha,la,hb,lb;
    queue<int> qx;
    queue<int> qy;
    bool bfs(int x,int y){
    	if(x==hb&&y==lb){
    		return 1;
    	}
    	qx.push(x);
    	qy.push(y);
    	v[x][y]=1;
    	while(qx.size()!=0&&qy.size()!=0){
    		int tx=qx.front(),ty=qy.front();
    		qx.pop();
    		qy.pop();
    		if(tx==hb&&ty==lb){
    			return 1;
    		}
    		for(int i=0;i<4;i++){
    			int xx=tx+idx[i],yy=ty+idy[i];
    			if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&v[xx][yy]!=1){
    				qx.push(xx);
    				qy.push(yy);
    				v[xx][yy]=1;
    			}
    		}
    	}
    	return 0;
    }
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			cin>>a[i][j];
    			if(a[i][j]==1){
    				v[i][j]=1;
    			}
    		}
    	}
    	cin>>ha>>la>>hb>>lb;
    	if(bfs(ha,la)==1){
    		cout<<"YES";
    	}
    	else{
    		cout<<"NO";
    	}
    	return 0;
    }
    

    队列基本操作

    que.push(x);//将x入队 
    que.pop();//出队 
    que.front();//返回队头 
    que.back();//返回队尾 
    que.size();//返回队列元素个数 
    que.empty();//队列为空
    !que.empty();//队列不为空 
    
    
  • 通过的题目

  • 最近活动

题目标签

初窥门径
110
顺序结构
46
分支结构
35
循环结构
25
略有小成
24
字符串
21
二维数组
12
驾轻就熟
10
GESP三级
10
其他
8
循环嵌套
8
排序
8
GESP
7
一维数组
6
搜索
6
枚举
6
GESP二级
6
蓝桥杯
4
计数排序
4
模拟
4