OJブラシノート

2855 ワード

読み取りの終了
while (!cin.eof())
リーフ構造
typedef struct node
{
    char value;
    node* left;//     pnode
    node* right;
}*pnode;

stdlib.h
qsort
    qsort(p,n,sizeof(node),cmp);
    //       
    int cmp(const void* a, const void* b)
    {
        int* c = (int* )a;//   
        int* d = (int* )b;
        return *c - *d;
    }
    //      
    int cmp(const void* a, const void* b)
    {
        node* c=(node*) a;
        node* d=(node*) b;
        if (c->x!=d->x)//     ->
            return c->x-d->x;
        else
            return c->y-d->y;
    }
//       :
int cmp(const void *a, const void *b)
{
    node **x = (node **)a;
    node **y = (node **)b;
    return (*x)->name.compare((*y)->name) ;
}
qsort(root->children, root->child, sizeof(node *), cmp);

bsearch
node* find,key;
//        key,      
//      
find = (node*)bsearch((const void*)key, p, n, sizeof(node), cmp);//the same cmp
if(find == NULL)
  //didn't find

algorithm
あります.
  • max min関数
  • sort(s,s+n)/2つのパラメータ
  • next_permutation 、prev_permutationは文字列の次の(前の)辞書順の全配列を求めて手動で実現すると、原理は末端から2つの隣接要素を前に探し、前はi、後はiiであり、i
    自前のGCD関数はありません!!
    typedef long long ll
    ll gcd(ll x, ll y)
    {
        return y == 0 ? x : gcd(y, x%y);
    }
    

    map
    map record;
    //map    ,record.begin() it->first       
    //map.end()      
    record.count(a);//a     
    record.clear();
    record[a]=b; 
    //or 
    record["ddd"]=b;  
    
    map::iterator it;
    it = record.lower_bound(power);//   
    if (it == record.end()) //    
    //    
    erase(it++);
    

    queue stack
    queue q;
    1. while(!q.empty())
    2. q.top();
    3. q.pop();
    4. q.push(3);
    
    stack s;
    //the same
    
    priority_queue,cmp>q;//  push  ,  cmp    
    struct cmp// qsort      
    {
        bool operator()(node a,node b)
        {
            return a.step>b.step;//    
        }
    };
    

    string.h
    memsetは、ゼロまたはすべてのバイトの同じ数しか設定できず、各バイト(32ビット)に同じ内容を埋め込むことができます.
    だいすうもんだい
    10^{12} long long a; scanf("%lld",&a)
    ダイナミックプランニング
  • 最長子シーケンス:前後の連続関係を考慮する必要がなく、a[i]、b[i]で記録する.
  • 最大公約数:2つの数が連続する必要があり、得られた最大公約数のsecondを最小のシーケンス番号にする
  • は同様に二重サイクル
  • である.
  • mapにその数があるか否かを判断する:if(!map.connt(9))はその数がないことを表す

  • パラメータ伝達
  • 文字列の伝達、実パラメータは直接文字列名a、形パラメータはchar*a、正常に使用し、strlenなどを使用することができます.アドレスが入っているので、変更後は返さなくてもいいです.

  • ファイルアクション
    int main(int argc,char **argv)
    {
            freopen(argv[1],"r",stdin);
            freopen(argv[2],"w",stdout);
            /*
                                  
            */
            return 0;
    }