• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
jacklee404
Never Stop!
博客园    首页    新随笔    联系   管理    订阅  订阅
1779B - MKnez's ConstructiveForces Task

1779B - MKnez's ConstructiveForces Task

思路

Proof:

  1. 当\(n\)为偶数的时候显然,\([-x, x, -x, x, -x ...]\)是一个可行解

  2. 当n为奇数时,相邻两项关系可得\(s_i + s_{i-1} = s_i + s_{i + 1}\) ,所以\(s_{i-1} = s_{i + 1}\), 假设\(s_1 = a, s_2 = b\),那么序列长度为\(n = 2k + 1, k \in Z\)的序列可以写为\([a, b, a, b, a....a]\), 其和为\(sum = (k + 1)a + kb\), 由\(a + b = sum\), 可得\(ka + (k-1)b = 0\), 因为k已知,所以该方程的一组解可以为\(a = k - 1, b = -k\), 显然\(k > 1\) 时,\(a,b\) 均满足题给条件,所以当\(n\)为奇数时,当且仅当\(n>3\)时,有解。

Code

void solve() {
	int n; cin >> n;
	if (n % 2 != 0) {
		if (n < 5)
			cout << "NO\n";
		else {	
			cout << "YES\n";
			for (int i = 1; i <= n; i ++) {
				if (i % 2) cout << n / 2 - 1;
				else cout << - n / 2;
				cout << " \n"[i == n];
			}
		}
	} else {
		cout << "YES\n";	
		for (int i = 1; i <= n; i ++) {
			if (i % 2) cout << 10;
			else cout << -10;
			cout << " \n"[i == n];
		}
		cout << "\n";
	}
}

反思

/(ㄒoㄒ)/~~, 真该补补数学了,这种都推不出来

  1. 构造题思维广泛,有推规律的,也有推公式的,这种推公式的做的太少,已知想着找特例,对这题而言却不好找
  2. 数学太薄弱了,没有找到切入点
posted on 2023-01-04 10:34  Jack404  阅读(24)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3