定理与方法专区:

1.两点间的曼哈顿距离如果为偶数,那么两点间可以走偶数步到达

2.求小于等于n 的素数的个数。(即欧拉函数)

100=(2^2)*(5^2)    num[100]=(2+1)*(2+1)=9;

10=2*5            num[10]=(1+1)*(1+1)=4;

48=(2^4)*(3^1)    num[48]=(4+1)*(1+1)=10;

3.以格子点为顶点的线段,覆盖的点的个数为GCD(dx,dy),其中,dxdy分别为线段横向占的点数和纵向占的点数。如果dx或dy为0,则覆盖的点数为dy或dx。

4.Pick公式:平面上以格子点为顶点的简单多边形,如果边上的点数为on,内部的点数为in,则它的面积为A=on/2+in-1。

5.任意一个多边形的面积等于按顺序求相邻两个点与原点组成的向量的叉积之和/2(黑书上有说明)

6.定理:下降子序列个数等于最长不下降子序列的长度

7.假如把树枝分成黑白二色。黑色树枝最多的生成树的黑色树枝为x个,黑色树枝最少的生成树的黑色树枝为y个,那么x~y范围内的有黑色树枝的个数的生成树都存在。

struct node

{

int u;

int v;

bool friend operator < (const node a, const node b)

{

if(a.u!=b.u)return a.u<b.u;//从小到大

else return a.v<b.v;

}

}edge[100];

sort(edge,edge+n);

3. stl的应用

1.queue(队列)

push(x) 将x压入队列的末端

pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值

front() 返回第一个元素(队顶元素)

back() 返回最后被压入的元素(队尾元素)

empty() 当队列为空时,返回true

size() 返回队列的长度

2. priority_queue(优先队列)

empty() 如果队列为空返回真

pop() 删除对顶元素

push() 加入一个元素

size() 返回优先队列中拥有的元素个数

top() 返回优先队列对顶元素

priority_queue<int>q;//通过操作,按照元素从大到小的顺序出队

struct cmp1

{

bool operator ()(int &a,int &b){

return a>b;//最小值优先

}

};

struct cmp2{

bool operator ()(int &a,int &b){

return a<b;//最大值优先

}

};

//自定义数据结构

struct number1{

int x;

bool operator < (const number1 &a) const {

return x>a.x;//最小值优先

}

};

struct number2{

int x;

bool operator < (const number2 &a) const {

return x<a.x;//最大值优先

}

};

int main()

{

priority_queue<int>que;//采用默认优先级构造队列

priority_queue<int,vector<int>,cmp1>que1;//最小值优先

priority_queue<int,vector<int>,cmp2>que2;//最大值优先

priority_queue<int,vector<int>,greater<int>   >que3;//最小值优先注意“>>”

priority_queue<int,vector<int>,less<int> >que4;////最大值优先

priority_queue<number1>que5; //最小优先级队列

priority_queue<number2>que6;  //最大优先级队列

}

3. 栈(stack)

push(x) 将x加入栈中,即入栈操作

pop() 出栈操作(删除栈顶),只是出栈,没有返回值

top() 返回第一个元素(栈顶元素)

size() 返回栈中的元素个数

empty() 当栈为空时,返回 true

4. 映射(map)

st.clear();  //将st置零

  st.empty();  //判断st是否为空

  st.erase()   //删除用,可以删除关键字,或者成片删除

          //比如st.erase(1); 删除关键字为1的,成功返回1,否则为0;

          //比如st.erase(st.begin(),st.end());删除了整个st,删除的是前闭后 开的区间;

  st.find();   //用find函数来定位数据出现位置,它返回的一个迭代器,当数据出现 时,

          //它返回数据所在位置的迭代器,如果map中没有要查找的数据,它 返回的迭代器等于         

//end函数返回的迭代器,比如st.find(1);就是可以查找st->firs为1的那个元素;

st.begin();  //第一个元素的位置的迭代器

  st.end();   //最后一个元素后面的位置的迭代器,实际上不存在

  st.rbegin(),st.rend()    //最后一个元素的迭代器,和第一个元素前面的迭代器(不存 在),可以反向访问

  st.size();   //返回已经插入了多少数据

  st.insert();  //插入数据,st.insert(map<int,string>::value_type(1,"student_one"));

注意事项:

  1. 注意特殊情况。
  2. G++输出double用f%。
  3. 一定要考虑0啊。
  4. 定义变量的时候注意定义的是全局还是局部。
  5. 回溯时,一定要看好是否完全回溯了。
  6. 注意visit数组的标记。
  7. Short int 数组可以存到5001*5001。
  8. 注意使用long long。
  9. 注意变量的初始化。
  10. 结果是否需要mod一个数。
  11. 求最大值的时候,看是否存在负数的情况。

oj中G++和C++的区别:

、输出double类型时,如果采用G++提交,scanf采用%lf,prinf采用%f,否则会报错

、使用GCC/G++的提醒:

 对于64位整数, long long int 和 __int64 都是支持并且等价的.但是在读和写的时候只支持scanf("%
I64d", ...)和printf("%I64d", ...).
不支持"%lld"是因为MinGW下的GCC和G++使用的msvcrt.dll动态链接库并不支持C99标准.
根据ISO C++标准,在G++下,main函数的返回值必须是int,否则将会导致Compile Error(编译错误)的判答 、G++/GCC使用scanf、printf时注意引用<stdio.h>,只引用<iostream>不识别 、提交C语言代码最好使用G++,G++兼容C和C++。C的代码可以用GCC也可用G++提交,而C++的代码不能够用GCC提交,只能用G++。因此最好一个通过不了的两个都试试,编译器的问题有的时候不好找(尤其是遇到long long 类型的和double的输入输出的时候)。 、对于输入输出,建议不要使用cin和cout,这种输入输出方式会比较慢,在数据量大的时候容易引起超时。 、关于main函数,定义一定要是int型,并记得加上return 。 int main(){... return ; } 、当使用类似于for (int i=;i<n;i++)这种形式对循环变量进行定义时,注意循环变量的作用域只在这个循环内。 、输入法在敲代码和提交代码的时候一定要确保关闭,代码中(除了注释部分)有全角字符会引起CE,注释建议使用英文。

提交题目:

Q: 我提交了程序,OJ回复的那些评判结果是什么意思?
A: 下面是常见的OJ评判结果以及它们表示的意思:

Queuing : 提交太多了,OJ无法在第一时间给所有提交以评判结果,后面提交的程序将暂时处于排队状态等待OJ的评判。不过这个过程一般不会很长。

Compiling : 您提交的代码正在被编译。

Running : 您的程序正在OJ上运行。

Judging : OJ正在检查您程序的输出是否正确。

Accepted (AC) : 您的程序是正确的,恭喜!

Presentation Error (PE) : 虽然您的程序貌似输出了正确的结果,但是这个结果的格式有点问题。请检查程序的输出是否多了或者少了空格(' ')、制表符('\t')或者换行符('\n')。

Wrong Answer (WA) : 输出结果错,这个一般认为是算法有问题。

Runtime Error (RE) : 运行时错误,这个一般是程序在运行期间执行了非法的操作造成的。以下列出常见的错误类型:

    • ACCESS_VIOLATION 您的程序想从一些非法的地址空间读取或向其中写入内容。一般例如指针、数组下标越界都会造成这个错误的。
    • ARRAY_BOUNDS_EXCEEDED 您的程序试图访问一个超出硬件支持范围的数组单元。
    • FLOAT_DENORMAL_OPERAND 进行了一个非正常的浮点操作。一般是由于一个非正常的浮点数参与了浮点操作所引起的,比如这个数的浮点格式不正确。
    • FLOAT_DIVIDE_BY_ZERO 浮点数除法出现除数为零的异常。
    • FLOAT_OVERFLOW 浮点溢出。要表示的数太大,超出了浮点数的表示范围。
    • FLOAT_UNDERFLOW 浮点下溢。要表示的数太小,超出了浮点数的表示范围。
    • INTEGER_DIVIDE_BY_ZERO 在进行整数除法的时候出现了除数为零的异常。
    • INTEGER_OVERFLOW 整数溢出。要表示的数值太大,超出了整数变量的范围。
    • STACK_OVERFLOW 栈溢出。一般是由于无限递归或者在函数里使用了太大的数组变量的原因。
    • ...... 其他错误,包括C++标准库/STL运行时库错误等,这里不再举例。
    • Time Limit Exceeded (TLE) : 您的程序运行的时间已经超出了这个题目的时间限制。

      Memory Limit Exceeded (MLE) : 您的程序运行的内存已经超出了这个题目的内存限制。

      Output Limit Exceeded (OLE) : 您的程序输出内容太多,超过了这个题目的输出限制。

      Compilation Error (CE) : 您的程序语法有问题,编译器无法编译。具体的出错信息可以点击链接察看。

      System Error (SE) : OJ内部出现错误。由于我们的OJ可能存在一些小问题,所以出现这个信息请原谅,同时请及时与管理员联系。

      Out Of Contest Time : 超出比赛时间,这个信息只有在比赛的时候才会出现。

ACM零散知识的更多相关文章

  1. iOS网络相关零散知识总结

    iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径   ...

  2. 【转】ACM博弈知识汇总

    博弈知识汇总 转自:http://www.cnblogs.com/kuangbin/archive/2011/08/28/2156426.html 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍 ...

  3. ACM博弈知识汇总(转)

    博弈知识汇总 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可.两个人轮流从堆中取物体若干,规定最后取光物体者取胜.这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻 ...

  4. ACM数学知识体系

    在盛情收到学弟邀请给他们整理ACM数学方面的知识体系,作为学长非常认真的弄了好久,希望各学弟不辜负学长厚爱!!!非常抱歉因为电脑全盘格式化好多word.PPT都丢失,我尽量具体地给大家找到各知识点学习 ...

  5. 零散知识记录-一个MQ问题

    [背景]我有一项零散工作:维护大部门的一台测试公用MQ服务器.当大部分MQ被建立起来,编写了维护手册,大家都按照规程来后,就基本上没有再动过它了.周五有同学跟我反映登录不进去了,周日花了1个小时来解决 ...

  6. acm小知识

    __builtin_popcount(i); __builtin_popcountll(i) ;//计算i的二进制表示中1的个数 int a[M] , b[M] ; memcpy(a+i , b+j ...

  7. SAS零散知识总结

    1,变量名命名规范:以字母或者下划线开始,可包含字母.下划线.数字,且不超过32个字符: 2,INFILE用于读取外部数据文件,一般于FILENAME(和LIBNAME用户一致,但路径要精确到文件名( ...

  8. 11-30 k线图demo中学到的零散知识

    1. 使用NSObject类的方法performSelectorInBackground:withObject:来创建一个线程. 具体的代码: [Object performSelectorInBac ...

  9. C# 零散知识 扩展方法 类型约束

    今天看到这么一段代码,我看下面调用了NotifyPropertyChanged定义了两个参数,但是调用的时候只写了一个参数.后来查了下,原来这个是扩展方法的用法, 就是说给T扩展了一个方法Notify ...

随机推荐

  1. 关于Unity中的transform组件(一)

    一.transform组件用途 1.维护场景树 2.对3D物体的平移,缩放,旋转 二.场景树定义 在Hierarchy视图中显示的: 一个game_scene场景,下面有Main Camera节点,D ...

  2. EF报LINQ to Entities 不识别方法“Web_JZRepository.Models.copy_materials_details get_Item(Int32) ”,因此该方法无法转换为存储表达式。

    说明用了如 List<T> list=new List<T>(); je.copy_materials_details.SingleOrDefault(x => x.ID ...

  3. 修改CFileDialog的标题

    CFileDialog   f(TRUE);   f.m_ofn.lpstrTitle   =   "我的标题";   f.DoModal(); 设置标题! CFileDialog ...

  4. iOS开发经验总结(一)

    本文转载至 :http://dreamahui.iteye.com/blog/1878650 软件开发方面 1.  在每个页面的入口和出口(一般是viewDidLoad和dealloc)打上日志,可以 ...

  5. DNS rebinging攻击方式

    一.什么是DNS rebinding? 在dns协议中,请求和响应完成一台机器对一个域名的查询,响应信息包含请求域名站点对应的IP地址.假设你向DNS服务器A请求域名youself.domain.co ...

  6. oracle 存储过程返回结果集

    好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集. 配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过 ...

  7. iOS 按钮文字加划掉线

    UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(, , , )]; NSDictionary *normalTitleAttribu ...

  8. LeetCode 笔记系列16.1 Minimum Window Substring [从O(N*M), O(NlogM)到O(N),人生就是一场不停的战斗]

    题目: Given a string S and a string T, find the minimum window in S which will contain all the charact ...

  9. spring配置文件注解方式引入的两种方式

    一.#{beanID['propertiesName']}方式 <bean id="propertyConfigurer" class="org.springfra ...

  10. R语言中的MySQL操作

    R语言中,针对MySQL数据库的操作执行其实也有很多中方式.本人觉得,熟练掌握一种便可,下面主要就个人的学习使用情况,总结其中一种情况-----使用RMySQL操作数据库. 1.下载DBI和RMySQ ...