题目名称

骑士遍历

和谐俱乐部

农场派对

对称二叉树

存盘文件名

knight

Beautiful

party

tree

输入文件名

knight.in

Beautiful.in

party.in

tree.in

输出文件名

knight.out

Beautiful.out

party.out

tree.out

时限

1s

1s

1s

1s

内存限制

128MB

128MB

128MB

128MB

题1:骑士遍历(knight)

【题目描述】

楚继光判断邪狼可能藏在一个n×n的(n≤10)正方形区域,楚继光骑着战马从任一点A(x,y)开始,试图找出一条路径,使马不重复地走遍区域的每一个点。马走的规则是走“日”字,可向任意方向走。

【输入格式】

三个整数n,x, y。n代表棋盘大小,x,y代表A点坐标,棋盘坐标从(0,0开始)。

【输出格式】

棋盘路径(搜索方向从最下方开始,依次逆时钟旋转)。

【输入样例】

5 2 0

【输出样例】

23 4 13 8 21

12 7 22 3 14

17 24 5 20 9

6 11 18 15 2

25 16 1 10 19


这道题肥肠简单,深搜AC,我的代码如下:

 #include<bits/stdc++.h>
using namespace std;
int a[][],n;
bool b[][];
int dx[]={,,,,-,-,-,-};//搜索是从{1,-2}开始的
int dy[]={-,-,,,,,-,-};//这里题目表述不清,但是增量一定要这样写!不然输出和答案不一
void search(int x,int y,int t)
{
if(t==n*n)
{
for(int j=n-;j>=;j--)
{
for(int i=;i<n;i++)
cout<<a[i][j]<<' ';
cout<<endl;
}
exit();//讲解的时候老师说这里最好不要用强制退出,容易出错,再定义一个bool变量判断是否有路径就可以啦
}
for(int i=;i<;i++)
{
int p=x+dx[i],q=y+dy[i];
if(p>=&&p<n&&q>=&&q<n&&!(b[p][q]))
{
b[p][q]=true;
a[p][q]=t+;
search(p,q,a[p][q]);
b[p][q]=false;
}
} }
int main()
{
//freopen("knight.in","r",stdin);(考试的时候一定记得这两行不要写错啦!!!)
//freopen("knight.out","w",stdout);(最好是一拿到题目就写,不怕一万就怕万一)
int x,y;cin>>n>>x>>y;
a[x][y]=;b[x][y]=true;
search(x,y,);
cout<<"-1";//本题数据有bug,会出现没有解决方案的情况,此时输出“-1”
return ;
}

题2和谐俱乐部(Beautiful

【题目描述】

“木秀于林,风必摧之;堆出于岸,流必湍之;行高于人,众必非之”,人类最可怕的罪之一,就是嫉妒。它生出许多最黑暗、污秽的罪行,使魔法世界的历史为之蒙羞。

魔法学院的某一个私人俱乐部有N个会员,每一个会员都是既美丽又强壮的,我们以A代表强壮,以B代表美丽。但他们都有一个缺点是嫉妒。例如i会员嫉妒j会员的条件是:Ai ≤ Aj并且Bi ≥ Bj,Ai ≥Aj并且Bi≤Bj,但是如果j会员的美丽和强壮都不如i会员,则i会员会忽视j会员的存在。而如果j会员的美丽和强壮都强于i会员的话,则i会员会非常尊敬j会员。

为了庆祝新年的到来,俱乐部经理准备组织一次舞会,但是他担心各会员之间由于嫉妒而引发争斗。所以,邀请哪些会员前来参加舞会实在是伤透了经理的脑筋。那么,精通电脑编程的你,能告诉经理发放邀请函最多人数是多少吗?

【输入格式】

第一行为整数N(2≤ N≤10000),代表N个会员。

剩下N行为每个会员的A值和B值。( 1≤ Ai,Bi ≤109 )

【输出格式】

一行为最大邀请人数。

【输入样例】

4

1 1

1 2

2 1

2 2

【输出样例】

2


这道题呢就是先排序,然后再求最长上升子序列(DP),没有一点技巧!只不过要仔细看题目:如果j会员的美丽和强壮 都 不如i会员,则i会员会忽视j会员的存在。而如果j会员的美丽和强壮 都 强于i会员的话,则i会员会非常尊敬j会员。我的修改后的代码(这道题一开始只得了部分分)如下:

 #include<bits/stdc++.h>
using namespace std;
int n,mi;
struct node{
int a,b,l;
bool operator <(const node &y)const
{
return a<y.a;
}
}x[];
int main()
{
//freopen("Beautiful.in","r",stdin);
//freopen("Beautiful.out","w",stdout);
cin>>n;
for(int i=;i<=n;i++)
{
cin>>x[i].a>>x[i].b;
x[i].l=;
}
sort(x+,x+n+);
for(int i=n-;i>=;i--)
{
mi=;
for(int j=i+;j<=n;j++)
{
if(x[i].b<x[j].b&&x[j].l>mi&&x[i].a<x[j].a)//一开始我没写x[i].a<x[j].a,因此错了两个点,所以说题目一定要看清楚!
{
mi=x[j].l;
}
}
x[i].l=mi+;
}
mi=x[].l;
for(int i=;i<=n;i++)
if(x[i].l>mi)mi=x[i].l;
cout<<mi;
return ;
}

题3:农场派对(party)

此题详情和代码请见↓↓↓

农场派对(party)(信息学奥赛一本通 1497) - endl\n - 博客园  https://www.cnblogs.com/ljy-endl/p/11285884.html


题4对称二叉树(tree)

 

此题详情和代码请见↓↓↓

【18NOIP普及组】对称二叉树(信息学奥赛一本通 1981)(洛谷 5018) - endl\n - 博客园  https://www.cnblogs.com/ljy-endl/p/11281818.html

Noip2019暑期训练2的更多相关文章

  1. Noip2019暑期训练2 反思

    经过两次测试,通过深刻的反思,我主要发现了以下易犯错误: 1.做题目时过于追求速度,导致好几处代码都出现手误打错的现象!而且,千万不要图快.图方便就复制粘贴,非常容易出错!(例如T3-party中直接 ...

  2. Noip2019暑期训练1

    题目名称 时空定位 棋子移动 高精度乘法 数独游戏 存盘文件名 location piece mul sudoku 输入文件名 location.in piece.in mul.in sudoku.i ...

  3. [小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10

    [小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10 各位看众朋友们,你们好,今天是2018年08月14日,星期二,农历七月初四,欢迎阅看今天的颓废联编节目 最近发生的灵异事件有 ...

  4. ACM暑期训练总结

    ACM暑期集训总结报告 不知不觉,ACM暑期集训已经过去了一个月了(其实我还差几天才够一个月,因为最后几天要回家办助学贷款,所以没坚持到最后,当了个逃兵.....[汗])也到了结束的时候.在这一个月中 ...

  5. 「暑期训练」「基础DP」 Common Subsequence (POJ-1458)

    题意与分析 很简单:求最长公共子序列. 注意子序列与子串的差别:一个不连续一个连续.一份比较好的参考资料见:https://segmentfault.com/a/1190000002641054 状态 ...

  6. 牛客网2018暑期训练 第三场 a题

    #include <bits/stdc++.h> using namespace std; vector<int> path; ; short dp[maxn][maxn][m ...

  7. CSU-ACM2018暑期训练7-贪心

    A:合并果子(贪心+优先队列) B:HDU 1789 Doing Homework again(非常经典的贪心) C:11572 - Unique Snowflakes(贪心,两指针滑动保存子段最大长 ...

  8. 「暑期训练」「基础DP」免费馅饼(HDU-1176)

    题意与分析 中文题就不讲题意了.我是真的菜,菜出声. 不妨思考一下,限制了我们决策的有哪些因素?一,所在的位置:二,所在的时间.还有吗?没有了,所以设dp[i][j]" role=" ...

  9. 7/31 CSU-ACM2018暑期训练7-贪心

    比赛链接 A-CSU - 1588 现在有n堆果子,第i堆有ai个果子.现在要把这些果子合并成一堆,每次合并的代价是两堆果子的总果子数.求合并所有果子的最小代价. Input 第一行包含一个整数T(T ...

随机推荐

  1. selenium中元素操作之浏览器窗口滚动&网页日期控件操作(js操作)(五)

    js的滚动条scrollIntoView() Arguments[] - python与js之间的羁绊 1.移动到元素element对象的“底端”,与当前窗口的“底部”对齐: driver.execu ...

  2. 2019 蚂蚁金服java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.蚂蚁金服等公司offer,岗位是Java后端开发,因为发展原因最终选择去了蚂蚁金服,入职一年时间了,也成为了面 ...

  3. Python DBUtils 连接池对象 (PooledDB)

    数据处理框架用到 mysql, 需要在多进程中的多线程中使用 mysql 的连接 使用到的模块: DBUtils 实现: 使用 DBUtils 中的 PooledDB 类来实现. 自己写一个类, 继承 ...

  4. Linux中打开文件显示行号相关命令

    一.显示行号 :set number 或 :set nu 二.取消显示行号 :set nu! 三.每次打开显示行号 修改vi ~/.vimrc 文件,添加:set number

  5. Spring 在xml文件中配置Bean

    Spring容器是一个大工厂,负责创建.管理所有的Bean. Spring容器支持2种格式的配置文件:xml文件.properties文件,最常用的是xml文件. Bean在xml文件中的配置 < ...

  6. Vue+SpringBoot后端接收包含单属性和List数组的json对象

    这次主要是针对springboot后台接收的json中包含多对象(如List数组/单属性)所写的一篇文章.虽然网上类似情况很多,尝试了一个晚上,都没有解决问题,最后还是在师兄的帮助下完美解决. vue ...

  7. idea 启动项目报错,more than one fragment with the name [spring web] was found

    这是由于idea导入项目的时候有多个模块,并且有多个web.xml导致的,先删除对应的模块,后启动即可. 另外也有可能是spring的jar冲突,把冲突的jar删除即可.

  8. ETL讲解

    ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要的一个环节. 通常情况下,在 ...

  9. mysql表的创建、查看、修改、删除

    一.创建表 创建表前先使用use 数据库名进入某一个数据库,创建表语句的格式如下: create table 表名称 ( 列名1 列的数据类型 [约束], 列名2 列的数据类型 [约束], 列名2 列 ...

  10. mac 使用 brew 安装 nginx 及各种命令

    一.安装 brew install nginx 或 sudo brew install nginx 二.启动 brew services start nginx 或 sudo brew service ...