题目168皇后·改作者: turbo时间限制: 1s章节: 深度优先搜索问题描述规则同8皇后问题但是棋盘上每格都有一个数字要求八皇后所在格子数字之和最大。输入说明一个8*8的棋盘。数据规模和约定棋盘上的数字范围0~99输出说明所能得到的最大数字和总结基础1311. 使用 abs() 函数头文件需要导入 #include stdlib.h2. 与 2n 皇后问题类似place() 递归放置每一行的皇后is_valid() 判断该位置是否可以放置皇后3. 递归放置皇后时在递归返回时应该恢复 sum 的值即回溯sum - board[row][col]#include stdio.h #include stdlib.h int board[8][8]; int queen_col[8]; int sum 0, max 0; int is_valid(int row, int col, int queen_col[]){ for(int i 0; i row; i){ if(queen_col[i] col) return 0; if(abs(queen_col[i] - col) abs(i - row)) return 0; } return 1; } void place(int row){ if(row 8){ if(sum max) max sum; return; } for(int col 0; col 8; col){ if(is_valid(row, col, queen_col) 0) continue; queen_col[row] col; sum board[row][col]; place(row 1); sum - board[row][col]; } } int main(){ for(int i 0; i 8; i){ for(int j 0; j 8; j) scanf(%d, board[i][j]); } place(0); printf(%d, max); return 0; }题目17棋盘多项式作者: turbo时间限制: 1s章节: 深度优先搜索问题描述八皇后问题是在棋盘上放皇后互相不攻击求方案。变换一下棋子还可以有八车问题八马问题八兵问题八王问题注意别念反。在这道题里棋子换成车同时棋盘也得换确切说是进行一些改造。比如现在有一张n*n的棋盘我们在一些格子上抠几个洞这些洞自然不能放棋子了会漏下去的。另外一个车本来能攻击和它的同行同列。现在你想想在攻击的过程中如果踩到一个洞便会自取灭亡。故车的攻击范围止于洞。此题给你棋盘的规模n以及挖洞情况求放k个车的方案数(k从0到最多可放车数)输入说明第一行一个整数n表示棋盘大小接下来n行每行n个用空格隔开的数字0或10的形状表示洞1表示没有洞数据规模和约定n8输出说明若干行第i行表示放i个车的方案数总结基础132题1. 一行或一列可以放多个车0相隔判断一个位置是否能放车只需检查该位置上下左右方向有无车遇到0或边界停止检查2. 对于位置xy首先判断该位置是否有洞或有车若能放车board[i][j] 1将车放置到该位置后判断是否冲突若无冲突递归放置下一个位置dfs(i, j, count 1)回溯board[i][j] 1#include stdio.h int board[10][10];//棋盘0表示洞2表示车 int n; long long result[100] {0}; int check(int x, int y){ //向上检查同一列直到遇到0或边界 for(int i x - 1; i 1 board[i][y] ! 0; i--){ if(board[x][y] board[i][y]) return 0; } //向下检查同一列 for (int i x 1; i n board[i][y] ! 0; i) { if (board[x][y] board[i][y]) return 0; } //向左检查同一行 for (int j y - 1; j 1 board[x][j] ! 0; j--) { if (board[x][y] board[x][j]) return 0; } //向右检查同一行 for(int j y 1; j n board[x][j] ! 0; j){ if(board[x][y] board[x][j]) return 0; //冲突 } return 1; } void dfs(int x, int y, int count){ //记录方案数 if(count 0) result[count]; //遍历所有位置 for(int i x; i n; i){ int start_j (i x) ? y 1 : 1; for(int j start_j; j n; j){ if(board[i][j] 1){//可放位置 board[i][j] 2;//放车标记为2 if(check(i, j) 1)//检查是否冲突 dfs(i, j, count 1); board[i][j] 1;//回溯 } } } } int main(){ scanf(%d, n); for(int i 1; i n; i){ for(int j 1; j n; j) scanf(%d, board[i][j]); } for(int i 0; i 100; i) result[i] 0; dfs(1, 0, 0);//从(1,0)开始这样第一个位置是(1,1) for(int k 1; k n * n; k){ if(result[k] 0) printf(%lld\n, result[k]); } return 0; }题目183000米排名预测作者: turbo时间限制: 1s章节: 深度优先搜索问题描述3000米长跑时围观党们兴高采烈地预测着最后的排名。因为他们来自不同的班对所有运动员不一定都了解于是他们分别对自己了解的一些运动员的实力作出了评估即对部分运动员做了相对排名的预测并且告诉了可怜留守的班长。因为无聊于是他们就组团去打Dota去了。比赛结束后他们向班长询问最后的排名但班长不记得了只记得他们中哪些人的预测是正确的哪些人的预测是错误的。他们想知道比赛的排名可能是什么。输入说明第一行两个整数n mn为运动员数量m为围观党数量。运动员编号从0到n-1。接下来m行每行为一个围观党的相对排名预测。每行第一个数c表示他预测的人数后面跟着c个0~n-1的不同的数表示他预测的运动员相对排名最后还有一个数0表示这个预测是错误的1表示是正确的。数据规模和约定1n10, 2cn, 1m10保证数据合法且答案中排名可能数不超过20000。对于一个排名序列一个预测是正确的当且仅当预测的排名的相对顺序是排名序列的一个子序列。一个预测是错误的当且仅当这个预测不正确。输出说明第一行一个数k为有多少种排名的可能。下面k行每行一个0~n-1的排列为某一个可能的排名每个数字后有一个空格即行尾也有一个空格。所有排名按字典序依次输出。比如输入3 22 0 1 12 2 1 0则输出10 1 2总结基础134题#include stdio.h #include stdlib.h int n, m; int predictions[10][10]; //存储每个预测的运动员序列 int pred_len[10]; //每个预测的长度 int pred_correct[10]; //每个预测的正确标志 (0/1) int result[10]; //当前生成的排列 int visited[10] {0}; //DFS访问标记 int ans[20000][10]; //存储所有有效排名 int ans_count 0; //有效排名数量 //检查预测序列是否是最终排名的子序列 int is_subsequence(int pred_idx, int rank[]){ int *seq predictions[pred_idx]; int len pred_len[pred_idx]; int i 0, j 0; while(i len j n){ if(seq[i] rank[j]){ i; } j; } return i len; //匹配完整个预测序列 } //检查当前排名是否满足所有预测 int check_rank(int rank[]){ for(int i 0; i m; i){ int is_subseq is_subsequence(i, rank); if(is_subseq ! pred_correct[i]){ return 0; //预测结果与标志不符 } } return 1; //所有预测都符合 } //DFS生成所有排列 void dfs(int depth){ if(depth n){ if(check_rank(result)){//满足所有预测 for(int i 0; i n; i){ ans[ans_count][i] result[i]; } ans_count; } return; } for(int i 0; i n; i){ if(!visited[i]){ visited[i] 1; result[depth] i; dfs(depth 1); visited[i] 0; } } } int main(){ scanf(%d %d, n, m); for(int i 0; i m; i){ int c; scanf(%d, c); pred_len[i] c; for(int j 0; j c; j) scanf(%d, predictions[i][j]); scanf(%d, pred_correct[i]); } dfs(0);//生成所有排列并验证 printf(%d\n, ans_count); for(int i 0; i ans_count; i){ for(int j 0; j n; j) printf(%d , ans[i][j]); printf(\n); } return 0; }翻译Generative artificial intelligence refers to a class of AI technologies that can generate new content such as text, images, and audio. Unlike traditional discriminative models, generative models learn the distribution of data and produce new samples based on learned patterns. In recent years, with the advancement of deep learning techniques, generative models have achieved significant progress in many fields. For instance, generative adversarial networks and large language models are capable of producing high-quality images and natural language text. These technologies have broad application prospects in areas such as content creation, intelligent assistants, and virtual reality. However, generative AI also introduces challenges such as the spread of misinformation and copyright protection issues. Therefore, how to strengthen regulation while promoting technological development has become an important research topic.生成式人工智能指的是AI技术的一个种类它可以生成新的内容例如文本图像和视频。与传统判别式模型不同生成式模型学习数据的分配并且基于学习模式生成新的样本。近年来随着深度学习技术进步生成式模型在很多领域取得了重大进展。例如生成式网络和大语言模型能够生成高质量的图像和自然语言文本。这些技术拓宽了在诸如文本产生智能助手和虚拟现实等领域的应用前景。然而生成式AI也引进挑战例如错误信息的传播和版权保护问题。因此在促进技术发展的同时如何增强管理已经变成一个重要的研究课题。单词
进阶16 17 18 翻译53 单词46
题目168皇后·改作者: turbo时间限制: 1s章节: 深度优先搜索问题描述规则同8皇后问题但是棋盘上每格都有一个数字要求八皇后所在格子数字之和最大。输入说明一个8*8的棋盘。数据规模和约定棋盘上的数字范围0~99输出说明所能得到的最大数字和总结基础1311. 使用 abs() 函数头文件需要导入 #include stdlib.h2. 与 2n 皇后问题类似place() 递归放置每一行的皇后is_valid() 判断该位置是否可以放置皇后3. 递归放置皇后时在递归返回时应该恢复 sum 的值即回溯sum - board[row][col]#include stdio.h #include stdlib.h int board[8][8]; int queen_col[8]; int sum 0, max 0; int is_valid(int row, int col, int queen_col[]){ for(int i 0; i row; i){ if(queen_col[i] col) return 0; if(abs(queen_col[i] - col) abs(i - row)) return 0; } return 1; } void place(int row){ if(row 8){ if(sum max) max sum; return; } for(int col 0; col 8; col){ if(is_valid(row, col, queen_col) 0) continue; queen_col[row] col; sum board[row][col]; place(row 1); sum - board[row][col]; } } int main(){ for(int i 0; i 8; i){ for(int j 0; j 8; j) scanf(%d, board[i][j]); } place(0); printf(%d, max); return 0; }题目17棋盘多项式作者: turbo时间限制: 1s章节: 深度优先搜索问题描述八皇后问题是在棋盘上放皇后互相不攻击求方案。变换一下棋子还可以有八车问题八马问题八兵问题八王问题注意别念反。在这道题里棋子换成车同时棋盘也得换确切说是进行一些改造。比如现在有一张n*n的棋盘我们在一些格子上抠几个洞这些洞自然不能放棋子了会漏下去的。另外一个车本来能攻击和它的同行同列。现在你想想在攻击的过程中如果踩到一个洞便会自取灭亡。故车的攻击范围止于洞。此题给你棋盘的规模n以及挖洞情况求放k个车的方案数(k从0到最多可放车数)输入说明第一行一个整数n表示棋盘大小接下来n行每行n个用空格隔开的数字0或10的形状表示洞1表示没有洞数据规模和约定n8输出说明若干行第i行表示放i个车的方案数总结基础132题1. 一行或一列可以放多个车0相隔判断一个位置是否能放车只需检查该位置上下左右方向有无车遇到0或边界停止检查2. 对于位置xy首先判断该位置是否有洞或有车若能放车board[i][j] 1将车放置到该位置后判断是否冲突若无冲突递归放置下一个位置dfs(i, j, count 1)回溯board[i][j] 1#include stdio.h int board[10][10];//棋盘0表示洞2表示车 int n; long long result[100] {0}; int check(int x, int y){ //向上检查同一列直到遇到0或边界 for(int i x - 1; i 1 board[i][y] ! 0; i--){ if(board[x][y] board[i][y]) return 0; } //向下检查同一列 for (int i x 1; i n board[i][y] ! 0; i) { if (board[x][y] board[i][y]) return 0; } //向左检查同一行 for (int j y - 1; j 1 board[x][j] ! 0; j--) { if (board[x][y] board[x][j]) return 0; } //向右检查同一行 for(int j y 1; j n board[x][j] ! 0; j){ if(board[x][y] board[x][j]) return 0; //冲突 } return 1; } void dfs(int x, int y, int count){ //记录方案数 if(count 0) result[count]; //遍历所有位置 for(int i x; i n; i){ int start_j (i x) ? y 1 : 1; for(int j start_j; j n; j){ if(board[i][j] 1){//可放位置 board[i][j] 2;//放车标记为2 if(check(i, j) 1)//检查是否冲突 dfs(i, j, count 1); board[i][j] 1;//回溯 } } } } int main(){ scanf(%d, n); for(int i 1; i n; i){ for(int j 1; j n; j) scanf(%d, board[i][j]); } for(int i 0; i 100; i) result[i] 0; dfs(1, 0, 0);//从(1,0)开始这样第一个位置是(1,1) for(int k 1; k n * n; k){ if(result[k] 0) printf(%lld\n, result[k]); } return 0; }题目183000米排名预测作者: turbo时间限制: 1s章节: 深度优先搜索问题描述3000米长跑时围观党们兴高采烈地预测着最后的排名。因为他们来自不同的班对所有运动员不一定都了解于是他们分别对自己了解的一些运动员的实力作出了评估即对部分运动员做了相对排名的预测并且告诉了可怜留守的班长。因为无聊于是他们就组团去打Dota去了。比赛结束后他们向班长询问最后的排名但班长不记得了只记得他们中哪些人的预测是正确的哪些人的预测是错误的。他们想知道比赛的排名可能是什么。输入说明第一行两个整数n mn为运动员数量m为围观党数量。运动员编号从0到n-1。接下来m行每行为一个围观党的相对排名预测。每行第一个数c表示他预测的人数后面跟着c个0~n-1的不同的数表示他预测的运动员相对排名最后还有一个数0表示这个预测是错误的1表示是正确的。数据规模和约定1n10, 2cn, 1m10保证数据合法且答案中排名可能数不超过20000。对于一个排名序列一个预测是正确的当且仅当预测的排名的相对顺序是排名序列的一个子序列。一个预测是错误的当且仅当这个预测不正确。输出说明第一行一个数k为有多少种排名的可能。下面k行每行一个0~n-1的排列为某一个可能的排名每个数字后有一个空格即行尾也有一个空格。所有排名按字典序依次输出。比如输入3 22 0 1 12 2 1 0则输出10 1 2总结基础134题#include stdio.h #include stdlib.h int n, m; int predictions[10][10]; //存储每个预测的运动员序列 int pred_len[10]; //每个预测的长度 int pred_correct[10]; //每个预测的正确标志 (0/1) int result[10]; //当前生成的排列 int visited[10] {0}; //DFS访问标记 int ans[20000][10]; //存储所有有效排名 int ans_count 0; //有效排名数量 //检查预测序列是否是最终排名的子序列 int is_subsequence(int pred_idx, int rank[]){ int *seq predictions[pred_idx]; int len pred_len[pred_idx]; int i 0, j 0; while(i len j n){ if(seq[i] rank[j]){ i; } j; } return i len; //匹配完整个预测序列 } //检查当前排名是否满足所有预测 int check_rank(int rank[]){ for(int i 0; i m; i){ int is_subseq is_subsequence(i, rank); if(is_subseq ! pred_correct[i]){ return 0; //预测结果与标志不符 } } return 1; //所有预测都符合 } //DFS生成所有排列 void dfs(int depth){ if(depth n){ if(check_rank(result)){//满足所有预测 for(int i 0; i n; i){ ans[ans_count][i] result[i]; } ans_count; } return; } for(int i 0; i n; i){ if(!visited[i]){ visited[i] 1; result[depth] i; dfs(depth 1); visited[i] 0; } } } int main(){ scanf(%d %d, n, m); for(int i 0; i m; i){ int c; scanf(%d, c); pred_len[i] c; for(int j 0; j c; j) scanf(%d, predictions[i][j]); scanf(%d, pred_correct[i]); } dfs(0);//生成所有排列并验证 printf(%d\n, ans_count); for(int i 0; i ans_count; i){ for(int j 0; j n; j) printf(%d , ans[i][j]); printf(\n); } return 0; }翻译Generative artificial intelligence refers to a class of AI technologies that can generate new content such as text, images, and audio. Unlike traditional discriminative models, generative models learn the distribution of data and produce new samples based on learned patterns. In recent years, with the advancement of deep learning techniques, generative models have achieved significant progress in many fields. For instance, generative adversarial networks and large language models are capable of producing high-quality images and natural language text. These technologies have broad application prospects in areas such as content creation, intelligent assistants, and virtual reality. However, generative AI also introduces challenges such as the spread of misinformation and copyright protection issues. Therefore, how to strengthen regulation while promoting technological development has become an important research topic.生成式人工智能指的是AI技术的一个种类它可以生成新的内容例如文本图像和视频。与传统判别式模型不同生成式模型学习数据的分配并且基于学习模式生成新的样本。近年来随着深度学习技术进步生成式模型在很多领域取得了重大进展。例如生成式网络和大语言模型能够生成高质量的图像和自然语言文本。这些技术拓宽了在诸如文本产生智能助手和虚拟现实等领域的应用前景。然而生成式AI也引进挑战例如错误信息的传播和版权保护问题。因此在促进技术发展的同时如何增强管理已经变成一个重要的研究课题。单词