tot[now] = i;
dfs(now + 1);
// 显式回溯:撤销之前的选择
tot[now] = 0;
没有显式回溯 隐式回溯是利用系统栈
1 构造题(智慧题)
//构造有n个数的A数列 (1到m的排列)满足题目给的q组要求求最大的max
tot[a[i].b] tot数组存的是A数列的值
tot[now]=i
构造好数列 有q次询问 1到q一次询问就行 相当于是离线处理了
if (tot[a[i].b] - tot[a[i].a] == a[i].c) sum += a[i].d
2
set.upper_bound(x)
upper_bound(set.begin(),set.end(),x);必然超时
3数学题
上界-下界 =可以被取到的值域 高斯求和找上下界
m到n+1 枚举i
3 2
0 1 2(已经三个数了) 3(n+1)
i=2
0+1 3+2 5-1+1 =5
i=3
0+1+2 3+2+1 6-3+1=4
i=4
0+1+2+3 3+2+1+0 6-6+1=1
5+4+1=10
找规律题 可以用打表(不会)
4deque 优先队列 两种数据结构特性去维护 增删改查功能
5