Noip2019暑期训练2
|
题目名称 |
骑士遍历 |
和谐俱乐部 |
农场派对 |
对称二叉树 |
|
存盘文件名 |
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的更多相关文章
- Noip2019暑期训练2 反思
经过两次测试,通过深刻的反思,我主要发现了以下易犯错误: 1.做题目时过于追求速度,导致好几处代码都出现手误打错的现象!而且,千万不要图快.图方便就复制粘贴,非常容易出错!(例如T3-party中直接 ...
- Noip2019暑期训练1
题目名称 时空定位 棋子移动 高精度乘法 数独游戏 存盘文件名 location piece mul sudoku 输入文件名 location.in piece.in mul.in sudoku.i ...
- [小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10
[小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10 各位看众朋友们,你们好,今天是2018年08月14日,星期二,农历七月初四,欢迎阅看今天的颓废联编节目 最近发生的灵异事件有 ...
- ACM暑期训练总结
ACM暑期集训总结报告 不知不觉,ACM暑期集训已经过去了一个月了(其实我还差几天才够一个月,因为最后几天要回家办助学贷款,所以没坚持到最后,当了个逃兵.....[汗])也到了结束的时候.在这一个月中 ...
- 「暑期训练」「基础DP」 Common Subsequence (POJ-1458)
题意与分析 很简单:求最长公共子序列. 注意子序列与子串的差别:一个不连续一个连续.一份比较好的参考资料见:https://segmentfault.com/a/1190000002641054 状态 ...
- 牛客网2018暑期训练 第三场 a题
#include <bits/stdc++.h> using namespace std; vector<int> path; ; short dp[maxn][maxn][m ...
- CSU-ACM2018暑期训练7-贪心
A:合并果子(贪心+优先队列) B:HDU 1789 Doing Homework again(非常经典的贪心) C:11572 - Unique Snowflakes(贪心,两指针滑动保存子段最大长 ...
- 「暑期训练」「基础DP」免费馅饼(HDU-1176)
题意与分析 中文题就不讲题意了.我是真的菜,菜出声. 不妨思考一下,限制了我们决策的有哪些因素?一,所在的位置:二,所在的时间.还有吗?没有了,所以设dp[i][j]" role=" ...
- 7/31 CSU-ACM2018暑期训练7-贪心
比赛链接 A-CSU - 1588 现在有n堆果子,第i堆有ai个果子.现在要把这些果子合并成一堆,每次合并的代价是两堆果子的总果子数.求合并所有果子的最小代价. Input 第一行包含一个整数T(T ...
随机推荐
- C#泛型集合之——列表
列表基础 1.列表概述:列表与哈希集合不同之处在于,它的元素可以重复.(更接近逻辑上的数组,而哈希集合更接近于数学上的集合) 2.创建及初始化: (1)List<类型> 列表名 =new ...
- kali之使用sqlmap进行sql注入
sqlmap简介 sqlmap支持五种不同的注入模式: 1.基于布尔的盲注,即可以根据返回页面判断条件真假的注入. 2.基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是 ...
- Java基础之枚举类型Enum的使用
Java基础之枚举类型Enum的使用 定义 public enum AccruedCleanEnum { SPREAD("1","发票"),OTHER(&quo ...
- 为了做好精益化,精益达选择了它?(MES应用案例)
企业介绍 郑州精益达汽车零部件有限公司(下文简称“精益达”)是宇通客车重要的业务组成部分,也是宇通集团重要的支柱业务之一,主要从事汽车零部件产品研发.制造.销售与服务.在郑州市拥有三个生产厂区,工艺技 ...
- Linu如何查看磁盘占用情况及处理办法
free -h: 查看当前剩余的内存大小 df: 查看文件系统磁盘使用率,可能free -h得到的剩余空间还有很多,但是df查询得到的部分文件系统磁盘使用率较高 当发现磁盘使用率较高的时候,可以: 先 ...
- IDEA 阿里巴巴代码规范检查插件
1.问题概要 大家都想写出规范的代码,可规范的标准是什么勒,估计每个人心中的标准都不是完全一致的 在分工合作越来越精细化的时代,我们需要一个最大程度接近公认的规范,这里我们以阿里巴巴的代码规范作为参考 ...
- 浅谈HTTP中Get与Post的区别【转】
转自http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html#commentform 感谢LZ分享 Http定义了与服务器交互的不同方法 ...
- The Instruction Set In Cortex-M3
The Cortex-M3 supports the Thumb-2 instruction set. This is one of the most important features of th ...
- 使用Cloudera Manager添加Sentry服务
使用Cloudera Manager添加Sentry服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.通过CM添加Sentry服务 1>.点击添加服务进入CM服务安装向 ...
- 百度语音合成api/sdk及demo
1.流程 1)换取token 用Api Key 和 SecretKey.访问https://openapi.baidu.com/oauth/2.0/token 换取 token // appKey = ...