《算法集训传送门》
👉引言
铭记于心🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉
💖
❄️我们的算法之路❄️💖
众所周知,作为一名合格的程序员,算法 能力 是不可获缺的,并且在算法学习的过程中我们总是能感受到算法的✨魅力✨。
☀️🌟短短几行代码,凝聚无数前人智慧;一个普通循环,即是解题之眼🌟☀️
💝二分,💝贪心,💝并查集,💝二叉树,💝图论,💝深度优先搜索(dfs),💝宽度优先搜索(bfs),💝数论,💝动态规划等等, 路漫漫其修远兮,吾将上下而求索! 希望在此集训中与大家共同进步,有所收获!!!🎉🎉🎉
今日主题:思维
👉⭐️第一题💎
✨题目
1.Nim游戏
✨思路:
只需简单的数学推理,显而易见的是,如果石头堆中只有一块、两块、或是三块石头,那么在你的回合,你就可以把全部石子拿走,从而在游戏中取胜;如果堆中恰好有四块石头,你就会失败。因为在这种情况下不管你取走多少石头,总会为你的对手留下几块,他可以将剩余的石头全部取完,从而他可以在游戏中打败你。因此,要想获胜,在你的回合中,必须避免石头堆中的石子数为 44 的情况
✨代码:
classSolution{public:boolcanWinNim(int n){return n %4!=0;}};
👉⭐️第二题💎
✨题目
2.灯泡开关
✨代码:
classSolution{public:intbulbSwitch(int n){returnsqrt(n +0.5);}};
👉⭐️第三题💎
✨题目
3.所有蚂蚁掉下来的最后一刻
✨代码:
classSolution{public:intgetLastMoment(int n, vector<int>& left, vector<int>& right){int lastMoment =0;for(int ant : left){
lastMoment =max(lastMoment, ant);}for(int ant : right){
lastMoment =max(lastMoment, n - ant);}return lastMoment;}};
👉⭐️第四题💎
✨题目
4. Roof Construction
✨代码:
#include<bits/stdc++.h>usingnamespace std;intmain(){int t;
cin >> t;while(t--){int n;
cin >> n;int k =0;while((1<<(k +1))<= n -1)++k;for(int i =(1<< k)-1; i >=0; i--){
cout << i <<' ';}for(int i =(1<< k); i < n; i++){
cout << i <<' ';}
cout <<'\n';}}
🌹写在最后💖:
相信大家对今天的集训内容的理解与以往已经有很大不同了吧,或许也感受到了算法的魅力,当然这是一定的,路漫漫其修远兮,吾将上下而求索!伙伴们,明天见!🌹🌹🌹
版权归原作者 梦想new的出来 所有, 如有侵权,请联系我们删除。