noip提高组2018反思——(滚粗记)

noip提高组2018反思

单选题

第七题

在这里插入图片描述
这一题我在做的时候非常的傻,只想的可以找出两条线段和为线段总长,然后就没有任何怀疑地将1/2选了上去
其实我们选多一些点将所有情况都枚举出来就会发现其实答案是1/3


第八题

在这里插入图片描述
这一题后面两个我是知道的肯定是的
然后我记得二叉树也是Catalan数。
然后。。然后。。我就推了一下
!!!n个节点的二叉树。
非常的正确
再加上B选项听都没有听说过
果断选了B。。。
然而是n+1个节点的二叉树。。。


第十题

在这里插入图片描述
这题我是不会的
因为我对位运算真的不懂
我心里想的是不断右以然后判断最右边的一位是否为1
然后我并没有发现有这种解法
于是我就找了一个最像的。。。
于是,我就选了A
但实际上应该是B
就如同这样
101001
||
\/
101000
101000
||
\/
100111
100000
||
\/
011111
final
000000
于是就有答案了


多选题

第一题

在这里插入图片描述
这题送分题我依旧错
因为我带草稿纸老师没有收走。。。
淦(gàn)


第三题

在这里插入图片描述
这里我印象中有负环,dijkstra是肯定不能用的
然后spfa也是这样
可是有负边我不太清楚
后来我可能更新方式没有想得特别清楚,所以我就没有吧A选上去
事实上,dijkstra是不能有负边,但是spfa是可以有负边的


问题求解

第二题

在这里插入图片描述
这题我是理解错了
我的理解是有一个a和b,这是一种定义新运算,求答案有哪几种。。。
这就很尴尬了
于是就错了。。
怪不得我TM 不会做
实际上是问我们有哪些可能的a和b组合满足题目条件
0-31的二进制就是这些
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
我们可以发现只要有这种情况:第一个数有1的位置包含第二个数有1的位置就可以了。
比如 1 0 1 1 0
1(0) 0 1(0) 1(0) 0
这里1(0)表示可以为1也可以为0
通过这种算法我们可以算出

#include<cstdio>
#include<cstring>
int ans=0;
int main()
{
	for(int i=0;i<=31;i++)
	{
		int now=i;
		int in[10];
		int num=0; 
		for(int j=1;j<=5;j++)
		{
			in[j]=now%2;
			now>>=1;
		}
		for(int j=5;j>=1;j--)
		{
			if(in[j]==1)
			{
				num++;
			}
		}
		ans+=(1<<num);
	}
	printf("%d",ans);
	return 0;
}

在这里插入图片描述
然后我们可以互换a、b
于是答案成了
在这里插入图片描述
但还不对
我们要把两个相同的去掉,可能性一共有32种
于是答案就对了
在这里插入图片描述

#include<cstdio>
#include<cstring>
int ans=0;
int main()
{
	for(int i=0;i<=31;i++)
	{
		int now=i;
		int in[10];
		int num=0; 
		for(int j=1;j<=5;j++)
		{
			in[j]=now%2;
			now>>=1;
		}
		for(int j=5;j>=1;j--)
		{
			if(in[j]==1)
			{
				num++;
			}
		}
		ans+=(1<<num);
	}
	printf("%d",ans*2-32);
	return 0;
}

看程序写结果

第四题

在这里插入图片描述
在这里插入图片描述
这一题一看就知道是下一个全排列
从这里“getPermutation”还有“if (a[i] != b[i]) return a[i] < b[i];”
就可以看出来
看到第一个
硬推
164532

1:165234
2:165243
3:165324
4:165342
5:165423
6:165432
7:213456
8:213465
9:213546
10:213564
final
213564
easy
然后。。。
200.。。
臣妾做不到啊
我想的是
第一位是0
第二位是1
第三位是2
第四位是6
第五位是24
第六位是120
于是我们可以这样累加
这是正解啊!!!!
然后加着加着第四位就变成第四位了
6加着加着就变成24了
然后就错了。。。
因为没有时间回来检查
如果不用我的傻屌 方法,我们可以用康托展开
这是一种高深玄学的方法,反正我之前并没看到过。
于是我从百度上搞来了在这里插入图片描述
总之就是大佬应子帆的博客
来个连接膜拜大佬应子帆
用他博客中的例子
3241
三之前有一和二
二之前有一
四之前有一(二和三都被用过了)
一之前没有
于是就是23!+12!+11!+00!
看完这一切,我觉得这和我的方法好像差不多!
我居然在考场推出了这么了不起的东西!
然而我又错了!
淦(gàn)


程序填空

终于到了最激(lìng)动(rén)人(shāng)心(xīn) 的节目
GG时刻!

第一题

在这里插入图片描述
看这是一个简单的双向链表!
然而他在写什么
考场上的紧张让我百思不得其解
于是我现在就再看一看究竟做不做得出来
a[x]=i
i+1
r[a[i]]
a[i]
r[i]
好像也不是很难。。。
可以利用双向链表的对称性来完美解答
我想蒙也能蒙对的吧
然而我还是错了
原理是这里从最小的数开始删除
之后在当前数右边的就是比他大的数且离他最近的数


第二题

在这里插入图片描述
在这里插入图片描述
这一题是一个dp题
第一空我本来又是对的
然后我。。改了。。原因竟是这题的分值只有两分。。。
之后就是一个背包问题,只要思考地全面一点也可以填出来


总结

对于这一次考试,我真的不想说什么了,越分析越苦恼、越心疼
感觉这次考试各种不应该的错误,考成这样我真的很不应该
这次考试在做的时候可能会有点难,但是回过来想想还是可以接受的
我真的不想因为这个傻屌 考试而退役
我不想和大家,和这欢乐危险 的大家庭分开
所以在这里,我跪求ccf分数线降得第一点很多 大概60分左右吧


//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//         佛祖保佑       初赛分数线60分      佛祖保佑               //

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值