AKSZ-BFS2
2024-05-26 18:20:04
发布于:广东
复杂的dfs和bfs
倒水问题
隐性图:题目描述不像某种类型,但实际上就是这种类型
康托展开(数学知识)
相关题目:P1379 八数码难题
例子:
则其康托展开数的计算过程:
后面比2
小的数有个(分别是),这个数后面有个数(),所以这一步是;
后面比8
小的数有个(分别是),这个数后面有个数(),所以这一步是;
(以此类推……)
步骤
1. 首先将数转成数组
for(int i=8;i>=0;--i){
v[i] =t %10 ;
t/=10;
}//上面的数转成数组
2. 找逆序对
int ans=0;
for(int i=0;i<9;++i){
int rev = 0;//找逆序对
for(int j = i + 1;j<9;++j){
rev+=v[i]>v[j];
}
ans += rev * fc[8-i];
}
return ans;
#include<deque>//头文件
deque<int> q;//定义
q.size();
q.push_front(x) //往队列前添元素x
q.push_back(x)//往队列后添元素x
q.front();//取第一个元素
q.back();//取最后一个元素
q.pop_front();//删头
q.pop_back();//删尾
__int128
含义
__int128
是一种比short
,int
,long
,long long
都大的整数类型,它支持。
快读函数
__int128 read(){
char arr[30];
__int128 res =0;
sacnf("%s",arr);
for(int i=1;i<=strlen(arr);++i){
res *= 10;
res +=arr[i]-'0';
}
return res;
}
快写函数
void print(__int128 num){
if(num>9)print(num/10);
putchar(num % 10 + '0');
}
__int128
输入输出
相关题目推荐
全部评论 1
__int128是不允许直接使用 cin ,cout 输出要手写。__int128 板子有个地方需要更正 , 它的读入是从1开始,应该从下标0开始 。或者 scanf("%s",arr+1);
2024-05-29 来自 广东
0
有帮助,赞一个