2023牛客寒假算法基础集训营3 - A C D F

题目链接:传送门
视频讲解:传送门

A 不断减损的时间

思路
要使得整体和最小,就需要尽可能多的利用操作是的正的偶数一直除 2 变成奇数即可

C 忽远忽近的距离

思路
需满足对于所有的 i,\(2 \le |a_i - i| \le 3\)
则考虑循环节

  • \(n < 4 || n = 7\) 时,无解
  • 剩下的当 \(n\) 为偶数时,考虑到长度为 4 的区间 \([i, i + 3]\) 可以输出 "i + 1 i + 2 i - 2 i - 1";长度为 6 的区间 \([i, i + 5]\) 可以输出 "i + 3 i + 4 i + 5 i - 3 i - 2 i - 1"
  • 剩下的奇数,可以先预处理前 5 个数字,比如说输出 "4 5 1 2 3",后面即可利用上面偶数的规律补全即可

代码

void solve(){
	int n;
	cin >> n;
	if(n <= 3 || n == 7) cout << -1;
	else if(n % 2){
		cout << "4 5 1 2 3 ";
		for(int i = 6; i <= n; i += 4){
			if(n - i + 1 == 6){
				cout << i + 3 << ' ' << i + 4 << ' ' << i + 5 << ' ' << i << ' ' << i + 1 << ' ' << i + 2 << ' ';
				break;
			}else{
				cout << i + 2 << ' ' << i + 3 << ' ' << i << ' ' << i + 1 << ' ';
			}
		}
	}else if(n % 2 == 0){
		for(int i = 1; i <= n; i += 4){
			if(n - i + 1 == 6){
				cout << i + 3 << ' ' << i + 4 << ' ' << i + 5 << ' ' << i << ' ' << i + 1 << ' ' << i + 2 << ' ';
				break;
			}else{
				cout << i + 2 << ' ' << i + 3 << ' ' << i << ' ' << i + 1 << ' ';
			}
		}
	}
	return ;
}

D 宿命之间的对决

结论题:n为偶数必胜态,n为奇数必败态

原因:一个偶数减去因子,可以变成奇数或者偶数;一个奇数减去因子,只能变成偶数。又已知博弈选手足够聪明且1为最终必败态,故有上述结论。

代码:

//>>>Qiansui
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<vector>
#define ll long long
#define ull unsigned long long
#define mem(x,y) memset(x,y,sizeof(x))
//#define int long long
 
inline ll read()
{
	ll x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}

using namespace std;
const int maxm=2e5+5,inf=0x3f3f3f3f;

void solve(){
	ll n;
	cin>>n;
	if(n%2==0) cout<<"kou\n";
	else cout<<"yukari\n";
	return ;
}
/*
偶数总可以变成奇数
而奇数只能变成偶数
1为最终的必败态
故n为偶数必胜态
n为奇数必败态
*/

signed main(){
	//  ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int _=1;
	//  cin>>_;
	while(_--){
		solve();
	}
	return 0;
}

F 迎接终结的寂灭

42 是宇宙的答案

posted on 2023-01-20 23:06  Qiansui  阅读(18)  评论(0编辑  收藏  举报