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