游戏开发网站建设重庆分类健康管理

当前位置: 首页 > news >正文

游戏开发网站建设,重庆分类健康管理,房产信息网新楼盘,有免费的服务器吗作者#xff1a;指针不指南吗 专栏#xff1a;蓝桥杯倒计时冲刺 #x1f43e;马上就要蓝桥杯了#xff0c;最后的这几天尤为重要#xff0c;不可懈怠哦#x1f43e; 文章目录1.递增序列2.等差素数列3.七段码4.亲戚5.连通块中点的数量1.递增序列 题目 链接#xff1a;指针不指南吗 专栏蓝桥杯倒计时冲刺 马上就要蓝桥杯了最后的这几天尤为重要不可懈怠哦 文章目录1.递增序列2.等差素数列3.七段码4.亲戚5.连通块中点的数量1.递增序列 题目 链接 递增序列 - 蓝桥云课 (lanqiao.cn) ) 本题为填空题只需要算出结果后在代码中使用输出语句将所填结果输出即可。 对于一个字母矩阵我们称矩阵中的一个递增序列是指在矩阵中找到两个字母它们在同一行同一列或者在同一 45 度的斜线上这两个字母从左向右看、或者从上向下看是递增的。 例如如下矩阵中 LANN QIAO有L N、L N、A N、A N、I O、A O、L Q、A I、N O、N O、A Q、I N、A N 等 13 个 递增序列。注意当两个字母是从左下到右上排列时从左向右看和从上向下看 是不同的顺序。 对于下面的 30行 50 列的矩阵请问总共有多少个递增序列 VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQF ZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGA BDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRL YVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKBPNIHMYOELYZIKH ZYZHSLTCGNANNXTUJGBYKUOJMGOGRDPKEUGVHNZJZHDUNRERBU XFPTZKTPVQPJEMBHNTUBSMIYEGXNWQSBZMHMDRZZMJPZQTCWLR ZNXOKBITTPSHEXWHZXFLWEMPZTBVNKNYSHCIQRIKQHFRAYWOPG MHJKFYYBQSDPOVJICWWGGCOZSBGLSOXOFDAADZYEOBKDDTMQPA VIDPIGELBYMEVQLASLQRUKMXSEWGHRSFVXOMHSJWWXHIBCGVIF GWRFRFLHAMYWYZOIQODBIHHRIIMWJWJGYPFAHZZWJKRGOISUJC EKQKKPNEYCBWOQHTYFHHQZRLFNDOVXTWASSQWXKBIVTKTUIASK PEKNJFIVBKOZUEPPHIWLUBFUDWPIDRJKAZVJKPBRHCRMGNMFWW CGZAXHXPDELTACGUWBXWNNZNDQYYCIQRJCULIEBQBLLMJEUSZP RWHHQMBIJWTQPUFNAESPZHAQARNIDUCRYQAZMNVRVZUJOZUDGS PFGAYBDEECHUXFUZIKAXYDFWJNSAOPJYWUIEJSCORRBVQHCHMR JNVIPVEMQSHCCAXMWEFSYIGFPIXNIDXOTXTNBCHSHUZGKXFECL YZBAIIOTWLREPZISBGJLQDALKZUKEQMKLDIPXJEPENEIPWFDLP HBQKWJFLSEXVILKYPNSWUZLDCRTAYUUPEITQJEITZRQMMAQNLN DQDJGOWMBFKAIGWEAJOISPFPLULIWVVALLIIHBGEZLGRHRCKGF LXYPCVPNUKSWCCGXEYTEBAWRLWDWNHHNNNWQNIIBUCGUJYMRYW CZDKISKUSBPFHVGSAVJBDMNPSDKFRXVVPLVAQUGVUJEXSZFGFQ IYIJGISUANRAXTGQLAVFMQTICKQAHLEBGHAVOVVPEXIMLFWIYI ZIIFSOPCMAWCBPKWZBUQPQLGSNIBFADUUJJHPAIUVVNWNWKDZB HGTEEIISFGIUEUOWXVTPJDVACYQYFQUCXOXOSSMXLZDQESHXKP FEBZHJAGIFGXSMRDKGONGELOALLSYDVILRWAPXXBPOOSWZNEAS VJGMAOFLGYIFLJTEKDNIWHJAABCASFMAKIENSYIZZSLRSUIPCJ BMQGMPDRCPGWKTPLOTAINXZAAJWCPUJHPOUYWNWHZAKCDMZDSR RRARTVHZYYCEDXJQNQAINQVDJCZCZLCQWQQIKUYMYMOVMNCBVY ABTCRRUXVGYLZILFLOFYVWFFBZNFWDZOADRDCLIRFKBFBHMAXX第一次 #includebits/stdc.h using namespace std;const int N40,M60; int a[N][M]; int n2,m4; char g[N][M];int main() {memset(a,-1,sizeof a);for(int i0;in;i)for(int j0;jm;j){cing[i][j];a[i][j]g[i][j]-A1;}int cnt0; for(int i0;in;i)for(int j0;jm;j){if(a[i][j]a[i][j1])cnt;if(a[i][j]a[i1][j])cnt;if(a[i][j]a[i1][j1])cnt;if(a[i][j]a[i1][j-1])cnt;}coutcnt; return 0; }样例做不出来 原因 上面的代码只能计算出来相邻的递增字母而题目要求的是同一行不相邻也是可以的斜上对角线也没有计算进去审题没理解到位 此外也可以不用将 字母映射成 数字 第二次 #includebits/stdc.h using namespace std;const int N40,M60; int a[N][M]; int n30,m50; char g[N][M];int main() {memset(a,-1,sizeof a);for(int i0;in;i)for(int j0;jm;j){cing[i][j];a[i][j]g[i][j]-A1;}int cnt0; for(int i0;in;i)for(int j0;jm;j){int k;//行 for(k1;jkm;k)if(a[i][j]a[i][jk])cnt;//列for(k1;ikn;k)if(a[i][j]a[ik][j])cnt;//右下对角线for(k1;iknjkm;k)if(a[i][j]a[ik][jk])cnt;//左下对角线if(j1){for(k1;iknj-k0;k)if(a[i][j]a[ik][j-k])cnt;}//斜上对角线if(i1){for(k1;i-k0jkm;k)if(a[i][j]a[i-k][jk])cnt;} }coutcnt; return 0; }反思 每次都在审题上绊倒 每一行每一列要十分注意是否是相邻如果不是要遍历每一行 2.等差素数列 题目 链接( 等差素数列 - 蓝桥云课 (lanqiao.cn) ) 本题为填空题只需要算出结果后在代码中使用输出语句将所填结果输出即可。 2,3,5,7,11,13,… 是素数序列。 类似7,37,67,97,127,157 这样完全由素数组成的等差数列叫等差素数数列。 上边的数列公差为 30长度为 6。 2004 年格林与华人陶哲轩合作证明了存在任意长度的素数等差数列。 这是数论领域一项惊人的成果 有这一理论为基础请你借助手中的计算机满怀信心地搜索 长度为 10 的等差素数列其公差最小值是多少 我的题解 #includebits/stdc.h using namespace std;int a[10000];bool isPrime(int n) {for(int i2;in;i)if(n%i0)return false;return true; }int main() {int k0;int res[10];for(int i2;i10000;i)//通过题目可以盲目推测出来 素数范围 总不能超过 10000{if(isPrime(i))a[k]i; //这里构造一个素数 表即素数数组}int d5;int i,j;for(d5;;d) //表d示公差 {for(i0;ik-1;i) //i表示 数列的第一个数 {int cnt0; //数列的长度要求是 10 这是用 cnt 来表示 数列的长度for(ji;jk-1;j) // j 表示数列 后面的数 遍历完 j cnt 都没有满足10就换 i 继续遍历{if(cnt10){if(a[j]a[i]d*cnt) //等差数列的性质{cnt;}else continue; //如果 a[j] 不满足就跳过找一下 a[j] 满足的}else //找到 cnt10即找到 满足条件的 d 了输出即可{coutdendl;return 0;}}}}return 0; }反思 写代码的时候逻辑很乱条理不清晰提前没有写注释后面修改的时候就很懵 动手模拟一下往往会事半功倍 此外数据开的范围要足够大 3.七段码 题目 链接( 七段码 - 蓝桥云课 (lanqiao.cn) ) 本题为填空题只需要算出结果后在代码中使用输出语句将所填结果输出即可。 小蓝要用七段码数码管来表示一种特殊的文字。 上图给出了七段码数码管的一个图示数码管中一共有 7 段可以发光的二 极管分别标记为 a,b,c,d,e,f,g。 小蓝要选择一部分二极管至少要有一个发光来表达字符。在设计字符 的表达时要求所有发光的二极管是连成一片的。 例如b 发光其他二极管不发光可以用来表达一种字符。 例如 c 发光其他二极管不发光可以用来表达一种字符。这种方案与上 一行的方案可以用来表示不同的字符尽管看上去比较相似。 例如a,b,c,d,e 发光f,g 不发光可以用来表达一种字符。 例如b,f 发光其他二极管不发光则不能用来表达一种字符因为发光 的二极管没有连成一片。 请问小蓝可以用七段码数码管表达多少种不同的字符 第一次 emm没认真看题直接用的 排列组合公式相加想的太简单了果然蓝桥杯没有白给的分 要求所有的发光二极管是连成一片的所以我穷举了还穷举错了 第二次 //准备使用 bfs 和并查集 补充知识中4.亲戚 题目 链接( 1249. 亲戚 - AcWing题库 ) 或许你并不知道你的某个朋友是你的亲戚。 他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。 如果能得到完整的家谱判断两个人是否是亲戚应该是可行的但如果两个人的最近公共祖先与他们相隔好几代使得家谱十分庞大那么检验亲戚关系实非人力所能及。 在这种情况下最好的帮手就是计算机。 为了将问题简化你将得到一些亲戚关系的信息如Marry和Tom是亲戚Tom和Ben是亲戚等等。 从这些信息中你可以推出Marry和Ben是亲戚。 请写一个程序对于我们的关于亲戚关系的提问以最快的速度给出答案。 输入格式 输入由两部分组成。 第一部分以 N,M开始。N 为问题涉及的人的个数。这些人的编号为 1,2,3,…,N。下面有 M 行每行有两个数 ai,bia_i,b_iai​,bi​ 表示已知 aia_iai​ 和 bib_ibi​ 是亲戚。 第二部分以 Q 开始。以下 Q 行有 Q 个询问每行为 ci,dic_i,d_ici​,di​ 表示询问 cic_ici​ 和 did_idi​ 是否为亲戚。 输出格式 对于每个询问ci,dic_i,d_ici​,di​ 输出一行若 cic_ici​ 和 did_idi​ 为亲戚则输出“Yes”否则输出“No”。 数据范围 1≤N≤20000, 1≤M≤10610^6106 , 1≤Q≤10610^6106 . 输入样例 10 7 2 4 5 7 1 3 8 9 1 2 5 6 2 3 3 3 4 7 10 8 9输出样例 Yes No Yes我的题解 #includebits/stdc.h using namespace std;const int N4*1e510; int p[N]; int n,m;int find(int x) //查找他的 根节点 路径压缩 {if(x!p[x]) p[x]find(p[x]);return p[x]; }int main() {scanf(%d%d,n,m); //输入输出 cin cout 不适用while(n–) p[n]n; //初始化while(m–){int a,b;scanf(%d%d,a,b);p[find(a)]find(b); //两个 集合 合并}int q;cinq;while(q–){int a,b;scanf(%d%d,a,b);find(a)find(b)?printf(Yes\n):printf(No\n); //查找}return 0; }反思 复习并查集熟练默写 模板 数据超过 一百万的时候 scanf printf cin cout 之间的差距就会出现 为避免这种情况发生考试的时候一律使用 scanf printf 5.连通块中点的数量 题目 链接( 837. 连通块中点的数量 - AcWing题库 ) 给定一个包含 n 个点编号为 1∼n的无向图初始时图中没有边。 现在要进行 m 个操作操作共有三种 C a b在点 a 和点 b 之间连一条边a 和 b 可能相等Q1 a b询问点 a 和点 b 是否在同一个连通块中a 和 b 可能相等Q2 a询问点 a 所在连通块中点的数量 输入格式 第一行输入整数 n 和 m。 接下来 m 行每行包含一个操作指令指令为 C a bQ1 a b 或 Q2 a 中的一种。 输出格式 对于每个询问指令 Q1 a b如果 a 和 b 在同一个连通块中则输出 Yes否则输出 No。 对于每个询问指令 Q2 a输出一个整数表示点 a 所在连通块中点的数量 每个结果占一行。 数据范围 1≤n,m≤10510^5105 输入样例 5 5 C 1 2 Q1 1 2 Q2 1 C 2 5 Q2 5输出样例 Yes 2 3我的代码 #includebits/stdc.h using namespace std;const int N1e510;int p[N]; int s[N];int find(int x) {if(x!p[x]) p[x]find(p[x]);return p[x]; }void add(int a,int b) {s[find(b)]s[find(a)];p[find(a)]find(b); //这个位置 两个语句的顺序是不可以 改变的 }int main() {int n,m;scanf(%d%d,n,m);for(int i0;in;i) p[i]i,s[i]1;char op[3];while(m–){scanf(%s,op);if(op[0]C){int a,b;scanf(%d%d,a,b);if(find(a)find(b)) continue;add(a,b);}else{if(op[1]1){int a,b;scanf(%d%d,a,b);find(a)find(b)?printf(Yes\n):printf(No\n);}else{int a;scanf(%d,a);printf(%d\n,s[find(a)]);}}}return 0; }反思 根据具体的题目在模板上添加东西维护比如这个题就是加上它的 集合大小注意它的初始化 要不断地考虑题目中的逻辑顺序