NOIP2012普及组初赛难点整理
1.如果平面上任取 n 个整点(横纵坐标都是整数),其中一定存在两个点,它们连线的中点也是整点,那么 n至少是__5__。
分析:构造法。
想象一下纵横交错的棋盘,每个交汇点的横纵坐标都是整数。如果存在三点共线(横向、纵向、斜向),那么一定存在其中两个点连线的中点也是整点。如下图所示:
要保证一定存在两个点、它们连线的中点也是整点,那么需要构造出最坏情况下至多选多少个点、不在一条直线上,此时再添加任意一个点,则一定出现3点一线。构造方法如下:
在 NOI 期间,主办单位为了欢迎来自全国各地的选手,举行了盛大的晚宴。在第十八桌,有 55 名大陆选手和 55 名港澳选手共同进膳。为了增进交流,他们决定相隔就坐,即每个大陆选手左右相邻的都是港澳选手、每个港澳选手左右相邻的都是大陆选手。那么,这一桌共有____种不同的就坐方案。注意:如果在两个方案中,每个选手左边相邻的选手均相同,则视为同一个方案。
分析:圆排列问题。
5名大陆选手的排列方案数为:5!5!
5名港澳选手安排在大陆选手之间的5个空位的排列方案数为:5!5!
总的排列方案数为:5!×5!5!×5!。下图是一种排列的方案:但每位选手左边相邻的选手均相同,为重复方案。
最终结果为:5!×5!÷5=28805!×5!÷5=2880
#include <iostream>
using namespace std;
int n, i, j, a[100][100];
int solve(int x, int y){
int u, v;
if (x == n)return a[x][y];
u = solve(x + 1, y);
v = solve(x + 1, y + 1);
if (u > v)
return a[x][y] + u;
else
return a[x]