ACM做题随做随思

  1. 程序停止运行:数组开太大;
  2. 输入一串单词,可以“string s; while(cin>>s){//代码块}”,因为cin>>s遇到空格会停止;
  3. map<key,value> cnt;cnt.count(key) 表示 返回容器中具有key的元素的数目;
  4. set_union( ) 取并集;set_intersection() 取交集;
  5. 判断是否已生成某数,可使用set,因为它有count()函数;
  6. 检查元素i是否存在数组中,可选用一标志变量;
  7. 常见的集合运算都可以用位运算简单实现,最常见的二元位运算时:与&、或|、非! ;
  8. 异或运算符“^”具有开关性质,例如A^B^B=A;
  9. A&B、A|B、A^B分别对应集合的交、并和对称差;
  10. 空集为0,全集{0,1,2,…,n-1}的二进制为n个1,即十进制的2n-1;
  11. 程序中常将全集定义为ALL_BITS = (1<<n) - 1 ;
  12. 设置一个无穷大常量:①const int INF = INT_MAX;②#define INF 0x7fffffff;③#define INF 0x3f3f3f3f;
  13. 出现Runtime Error(ACCESS_VIOLATION),可能是数组开小了。
  14. int n = 10, l, m, r;  l = n>>1;(等价于l=n/2);  r=n<<2;(等价于r=n*2);  m=n|1;(等价于m=n+1);  

 

posted @ 2017-07-27 21:29  GGBeng  阅读(236)  评论(0编辑  收藏  举报