结构题sort排序,cmp常用于排序倒序的处理
struct node {
int sum, a, b;
}s[2102100];
bool cmp(node x, node y) {
if (x.sum != y.sum) {
return x.sum < y.sum;
}
if (x.a != y.a) {
return x.a < y.a;
}
return x.b < y.b;
}
前者是>=x的模板,后者=<x的模板
bool check(int x) {}
int bsearch_1(int l, int r)
{
while (l < r)
{
int mid = l + r >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
}
return l;
}
int bsearch_2(int l, int r)
{
while (l < r)
{
int mid = l + r + 1 >> 1;
if (check(mid)) l = mid;
else r = mid - 1;
}
return l;
}
位运算 这两种位运算可以用于简单的运算乘和除(1<<和>>1),位运算的优先级是最低的。下面给出优先级的表格 例题,有关基础dfs 使用dfs进行深度优先搜索
#include<iostream>
using namespace std;
int n, pd[100], used[100];
void print()
{
int i;
for (i = 1; i <= n; i++) {
printf("%5d", used[i]);
}
cout << endl;
}
void dfs(int k)
{
int i;
if (k == n)
{
print();
return;
}
for (i = 1; i <= n; i++) {
if (!pd[i]) {
pd[i] = 1;
used[k + 1] = i;
dfs(k + 1);
pd[i] = 0;
}
}
}
int main()
{
cin >> n;
dfs(0);
return 0;
}
return code;
|