头像

baibaile

1




离线:3小时前


最近来访(5)
用户头像
Haoqi007
用户头像
yxᴄ
用户头像
emmmml
用户头像
丁真大佬
用户头像
ephemeral.


[toc]

1. 增
    a. 增加一个数据库
        1). CREATE DATABASE < 数据库名称 > ;
    b. 增加一个表
        1). create table 表名 (属性以及各类属性,限制条件常见有 定长字符类型 CHAR,非定长字符类型 VARCHER, 整数类型 INTEGRE, 非空属性 NOT NULL)
    c. 增加一列
        1).ALTER TABLE < 表名 > ADD COLUMN < 列的定义 >;


2. 删除
    a. 删除一个数据库
        1). DROP DATABASE < 数据库名称 >;
    b. 删除一个表
        1). DROP  table < 表名 >;
    c. 删除一个列
        1). ALTER TABLE < 表名 > DROP COLUMN < 列名 >;
    d. 删除整个表内容
        1). truncate table <表名>;
    e.  删除符合条件的数据
        1). DELETE FROM <表名>  <条件>;


3. 改
    a. update
        1).update <表名>
          SET <列名> = <表达式> [, <列名2>=<表达式2>...];  
          WHERE <条件>;  -- 可选,非常重要。  
          ORDER BY 子句;  --可选
          LIMIT 子句; --可选

    b. AS 
        1).select product_id AS id



4. 查
    a. select  
    b. distinct
        i. select distinct product_type from product;

<>  和~不相等
希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。

例子
    create table Addressbook 
    (regist_no INTEGER NOT NULL,
    name VArCHAR(128) NOT NULL,
    address VARCHAR(256) NOT NULL,
    tel_no CHAR(10),mail_address CHAR(20),
    -- 指定主键
    PRIMARY KEY (regist_no));



简单的入栈出栈

#include <iostream>
#include <cstring>
#include <algorithm>
#include <stack>

using namespace std;

int main() {
    string str;
    cin >> str;
    int n = str.size();
    stack<char> s;
    for(int i = 0 ; i < n; i ++){
        if(s.empty()){
            s.push(str[i]);
        }else{
            if(str[i] == s.top()){
                s.pop();
            }else s.push(str[i]);
        }
    }
    string res = "";
    while(!s.empty()){
        res += s.top();
        s.pop();
    }
    int len = res.size();
    for(int i = len - 1; i >= 0 ; i --){
        cout << res[i];
    }
    return 0;
}




#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>

using namespace std;

int main()
{
    unordered_map<string,int> map;
    int n;
    cin >> n;
    while (n -- ){
        string a,b;
        string s = "";
        cin >> a >> b;
        s = a + "1" +  b;
        if(map.count(s))
            continue;
        else{
            map[s] = 1;
        }
    }
    cout << map.size() << endl;
    return 0;
}


活动打卡代码 AcWing 35. 反转链表

baibaile
23天前

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {

        if(!head || !head -> next ) return head;

        auto a = head, b = head -> next;
        while(b){
            auto c = b -> next;
            b -> next = a;
            a = b;
            b = c;
        }
        head -> next = nullptr;
        return a;
    }
};



baibaile
23天前
class MinStack {
public:
    stack<int> sk,sk_min;
    int t = INT_MAX;

    /** initialize your data structure here. */
    MinStack() {

    }

    void push(int x) {
        sk.push(x);
        if(!sk_min.empty())
            sk_min.push(min(x, sk_min.top()));
        else sk_min.push(x);

    }

    void pop() {
        sk.pop();
        sk_min.pop();
    }

    int top() {
        return sk.top();
    }

    int getMin() {
        return sk_min.top();
    }
};




baibaile
23天前
// 采取列二分

class Solution {
public:
    vector<int> getMinimumValue(int n) {
        typedef long long ll;
        const ll INF = 1e15;

        int l = 0, r = n - 1;
        while( l < r) {
            int mid = (l + r) >> 1;

            // k 存储最小值所在行
            int k;
            // val 存储的是最小值
            ll val = INF;
            for(int i = 0; i < n; i ++){
                int t = query(i, mid);
                if(t < val){
                    val = t;
                    k = i;
                }
            }

            // 向着存在最小值的列逼近
            ll left = mid ? query(k, mid - 1) : INF;
            ll right = mid + 1 ? query(k, mid + 1) : INF;

            if(val < left && val < right) return {k, mid};
            if(left < val) r = mid - 1;
            else l = mid + 1;
        }


        // 在存在最小值的列中求出最小值
        int k;
        ll val = INF;
        for(int i = 0; i < n; i ++){
            int t = query(i, r);
            if(t < val){
                val = t;
                k = i;
            }
        }

        return {k, r};
    }
};


活动打卡代码 AcWing 885. 求组合数 I

baibaile
23天前
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 2010,mod = 1e9 + 7;
int c[N][N];

void init(){
    for(int i = 0 ; i < N; i++){
        for(int j = 0; j <= i; j ++){
            if(j == 0) c[i][j] = 1;
            else c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;
        }
    }
}


int main()
{
    init();

    int n;
    cin >> n;
    while (n -- ){
        int a, b;
        cin >> a >> b;
        cout << c[a][b] << endl;
    }
    return 0;
}


活动打卡代码 AcWing 2. 01背包问题

baibaile
23天前
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 1010;
int v[N],w[N],f[N][N];


int main()
{
    int n,m;
    cin >> n >> m;
    for(int i = 1;i<=n;i++) cin >> v[i] >> w[i];

    // 第几件物品
    for(int i = 1;i<=n;i++)
    {
        // 所占空间
        for(int j = 1;j<=m;j++){
            if(j < v[i])
            {
                f[i][j] = f[i -1][j];
            }
            else{
                // f[i][j] = max(f[i -1][j],f[i-1][j-v[i]] + w[i]);
                f[i][j] = max(f[i - 1][j], f[i - 1][j - v[i]] + w[i]);
            }
        }

    }
    cout << f[n][m];
}


活动打卡代码 AcWing 104. 货仓选址

baibaile
23天前
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 1e5 + 10;
int a[N];
int n;

int main()
{
    cin >> n;
    for(int i = 0 ; i < n;i ++) scanf("%d", &a[i]);

    sort(a,a + n);
    int res = 0;

    for(int i = 0 ; i < n;i ++)
        res += abs(a[i] - a[n / 2]);

    cout << res << endl;
    return 0;
}



baibaile
23天前
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

const int N=510;

int g[N][N];   
int dist[N];    
bool st[N];     

int n,m;

int Dijkstra()
{
    memset(dist, 0x3f,sizeof dist);    

    dist[1]=0;  

    for(int i=0;i<n;i++)     
    {
        int t=-1;      

        for(int j=1;j<=n;j++)   
            if(!st[j]&&(t==-1||dist[t]>dist[j]))     
                t=j;

        st[t]=true;   

        for(int j=1;j<=n;j++)           
            dist[j]=min(dist[j],dist[t]+g[t][j]);
    }

    if(dist[n]==0x3f3f3f3f) return -1;  
    return dist[n];
}
int main()
{
    cin>>n>>m;

    memset(g,0x3f,sizeof g);    

    while(m--)
    {
        int x,y,z;
        cin>>x>>y>>z;
        g[x][y]=min(g[x][y],z);     
    }

    cout<<Dijkstra()<<endl;
    return 0;
}