标签:移位 实现 答案 数列 false 排序 经典的 数字 下标
二分可以优化很多
使用dfs进行暴力搜索要知道两次递归的关系,以及递归一次的时候进行的操作,合理的设置参数来达到某些目的
要能够识别暴力搜索,是有些东西看起来有规律,但是实际上不用讨论规律,直接暴力就能够实现,这种做法往往会被忽略
二进制枚举的几个技巧
//枚举0-2^n - 1
int len;
for(int i = 0; i <(1 << len); i ++){
//1<<len 即为 2^n
}
//取每一位为1进行对于操作
for(int i = 0; i < len; i ++){
if(num & (1 < i)){//num为长度为len的数字,1<i进行移位操作,然后使用&就可以获得对应位的二进制了
}
}
1108
打表预处理
使用unique优化结果集合
二分法查找顺序集合
sort(arr, arr + n);
int size = unique(arr, arr + n) - arr;//unique返回的是排序后多余的下标
//如 1 2 2 3 4 4 => 1 2 3 2 4 会返回指向第二个2的指针,因此相剪就会变成排序后的长度,再重新利用arr就可以使用去重后的数列
1063
埃式打表法求素数,然后判断回文
利用预处理前缀和来快速查找区间的个数
//打表法求素数
bool p[N];//false为素数
void init(){
memset(p, 0, sizeof(p));
p[1] = [1];//1不是素数
for(int i = 2; i < N; i ++){
if(! p[i]){
for(long long j = 1ll * i * i; j < N; j += i){//1.使用longlong,2.递增是+i,不是+1
p[j] = true;
}
}
}
}
//使用前缀和
int pre[N];
for(int i = 1; i < N; i ++){
if(! p[i] && check(i))
sum[i] = sum[i - 1] + 1;
else
sum[i] = sum[i - 1];
}
PIPIOJ 1130: 奇偶交错排列
PIPIOJ 1133: 棋盘问题
PIPIOJ 1138: N皇后问题
PIPIOJ 1102: PIPI学加法
PIPIOJ 1049: PIPI的按钮Ⅰ
PIPIOJ 1066: 竖式问题
PIPIOJ 1322: 同心共筑中国梦
PIPIOJ 1084: 最长公共子序列Ⅱ
PIPIOJ 1168: PIPI的方格
标签:移位 实现 答案 数列 false 排序 经典的 数字 下标
原文地址:https://www.cnblogs.com/faberry/p/12380425.html