美文网首页
OJ刷题笔记

OJ刷题笔记

作者: yingtaomj | 来源:发表于2017-05-21 19:43 被阅读43次

结束读取

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)//两个参数
  • next_permutation 、prev_permutation求字符串的下一个(前一个)字典序全排列
    若手动实现,原理是
    从尾端向前找两个相邻元素,前一个是i,后一个是ii,并满足i<ii。再从尾端向前找一个j,满足i<*j。将第i个元素和第j个元素对调,并将ii之后(包括ii)的所有元素颠倒排序,即求出下一个元素。
    善用swap(s[i],s[j])。

没有自带的GCD函数!!

typedef long long ll
ll gcd(ll x, ll y)
{
    return y == 0 ? x : gcd(y, x%y);
}

map


map<int, int> record;
//map自动排序,record.begin()是it->first从小到大的排序
//map.end()是没有赋值的
record.count(a);//a出现的次数
record.clear();
record[a]=b; 
//or 
record["ddd"]=b;  

map<int, int>::iterator it;
it = record.lower_bound(power);//第一项
if (it == record.end()) //没有找到
//删除该项
erase(it++);

queue stack


queue<int> q;
1. while(!q.empty())
2. q.top();
3. q.pop();
4. q.push(3);

stack<int> s;
//the same

priority_queue<node,vector<node>,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]来记录。
  • 最大公约数:需要两个数是连续的,把得到的最大公约数的second变成最小的序号
    • 同样是二重循环
    • 判断map中有没有该数:if(!map.count(9))代表没有该数

参数传递

  • 字符串的传递,实参直接用字符串名a,形参用char *a,使用正常,仍然可以用strlen等。修改之后不用返回,因为传入的是地址。

文件操作

int main(int argc,char **argv)
{
        freopen(argv[1],"r",stdin);
        freopen(argv[2],"w",stdout);
        /*
                        算法程序设计
        */
        return 0;
}

相关文章

  • OJ刷题笔记

    结束读取 while (!cin.eof()) 叶结构 stdlib.h qsort bsearch algori...

  • 南阳oj刷题

    C语言刷题 网站:南阳oj80题 1.这个网站是崩掉的,只能看题,无法判题。也就是你写完只能自己检测,但是不能提交...

  • NOIP刷题网站系统noipoj

    刷题链接 http://noipoj.cn NOIP OJ 在线评测系统 http://poj.org/ poj...

  • HDU、ZOJ、POJ刷题(难易)顺序

    网上有大量的OJ题目分类,根据题目分类刷题有利于巩固某一特定的算法,但是如果纯粹的刷题,根据合适的难度进行盲刷会更...

  • 2016.04.05  22:45

    昨天没写。。。。今天不能补,今天确实很忙,听了听白大爷的K线。。刷了刷OJ题,还得刷java题库,师父安排的有点多...

  • OJ刷题知识点

    C++ | vector vector:向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence ...

  • 晨间日记

    计算机刷题 看书写笔记 高数刷题 英语刷题 奋斗到天亮,加油奥利给

  • 资料库

    个人站点 知乎 简书 码云 github 算法刷题 力扣中国 leetcode 牛客网 七月在线 PAT 北大oj...

  • LeetCode OJ

    最近一年有一个OJ异常火爆,叫做LeetCode OJ。这个OJ最大的特点就是一共只有200多道题(请自动忽略本人...

  • 谷歌工程师为金三银四筹备1000道Leetcode刷题笔记

    对于刷题相关的文章,在之前我也推荐过不少,今天再给大家推荐一份算法刷题笔记,这份笔记与以往的刷题有所区别,作者把 ...

网友评论

      本文标题:OJ刷题笔记

      本文链接:https://www.haomeiwen.com/subject/jkjvxxtx.html