THUSC 2021 游记

清华集训游记

怎么说呢,体验极差

day0

day1

上午讲了一堆没用的东西+广告。

下午 时间~时间 是考试。

一登上去都看了一遍题。

第一眼:T1不会,自闭了,感觉像一个贪心啥的。T2肯定是点分治。T3状压啥乱七八糟的。T4通信题,这不就是前一段我假jyh的冀树嘛。

T1简要题意:\(n\) 个物品,背包体积为 \(m\),每次贪心选数,要求选的数数量最多,多种情况要求选的数的下标字典序最大,求要用几个背包能装满这些数。\(n\le50000,m\le 10^9\)

先码了T1,打算用dp求出能取的最多的个数,同时也能记录出方案。

f[i][j] 表示前 \(i\) 个数,体积为 \(j\) ,最多能选多少个数。

转移很简单,但是要从后往前dp,这样才能保证优先选后面的数字。

好像已经有5分了?

然后换一下状态 f[i][j] 表示前 \(i\) 个数,选了 \(j\) 个,花费的最小体积,这就是 O(\(n^3\)) 的算法了。

同样从后往前dp,输出方案特殊一点 ,大概是个这:

void oUt(int i,int j,int k)// i,j和 f[i][j] 一样,k表示这是花费的最小体积
{
	if(a[i]>k||f[i+1][j-1]>=k-a[i+1]){//这是因为,如果后面能拿,那么拿后面的
		oUt(i+1,j,k);
	}else{
		oUt(i+1,j-1,k-a[i]);
		//标记一下拿了第i个数
	}
}//大概是个这,考试时的记得不是太清楚了,这个代码也有可能是错的,是我在火车上胡乱写的

有了30分。

然后去看T2了。

T2简要题意:树上最长上升子序列,\(n\le10^5\)

看了看,一开始只会 \(a_i\le 2\) 的,链的,菊花图的做法。自闭了,只有 30 分,没先急着打,想了好久(大概吧),想到一个 \(n^2\log a\) 的做法,自闭了,干他娘的,以为过不去 \(n\le5000,a_i\le4\) 这一档,导致我之后想了+码了半个小时的极其恶心的 树上最近公共祖先+主席树+dfn序列 做法,自闭了。具体的不讲了,太麻烦,直接占了整体的 \(\frac{1}{3}\)

T3简要题意:\(n\) 个人,\(m\) 个菜,给定 \(a_{i,j}\) 选出一些菜,使得这个和最大。 \(a\ge -1\),如果 \(a\ne -1\),那么就加上这个 \(a\),否则第 \(i\) 个人的 \(a_{i,j}\) 全都没有。\(n\le20,m\le1e6\)

一开始只会 \(n\le10,m\le 2000\) 的暴力,想了想一个部分分,每个人有一个区间 \([l_i,r_i]\),满足 \(a_{i,j}=-1\) 当且仅当 \(j\in[l_i,r_i]\) 。每次枚举选了谁,最多会被分为 20 段 \(a\) 求和,一个前缀和就行了。

T4简要题意:🕊

🕊

day2

今天运气极其不好,几乎是和 语法和文件输入输出大战了四个小时。

这题考什么光学追踪。拿到题,非常困,文字多,而且乱。看着 pdf 的第一句,如果你已经掌握了 光学追踪的芝士 你可以跳过这份文档。zbl,这句肯定是故意写上去恶心我们的,肯定不会有人会。翻了翻,立了个flag,看完题以后,好好看看这个文档(直到最后一刻我都没有再次打开它)

T1让我们输出一张 bmp ,给了一堆bmp的知识,和一堆乱七八糟的东西,看完了以后啥都不会,看到有这样一行字:“如果你仍然不知道你现在要干什么,啥啥图函数啥的有一个 什么什么from什么 的函数是你要完成的操作的逆过程”,当时我就两眼放光,那不就输入输出换一下,赋值啥的反过来,就ok了,但恶心的是,这个东西我找了老半天,一个一个 .h,.cpp 的看,根本找不着,最后问了问监考老师图函数在哪,他说这个不能说,只说了这个东西肯定是有的,慢慢找。自闭了,找了半天终于找到了,然后没过多久就发了个公告,图函数那玩意在 \src 里面,自闭了。看了看它用了 fread 和 fwrite ,我感觉不是太好,给他换成了 fscanf,fprintf ,这导致我之后做了1个多小时的无用功,用这个输入输出 unsigned char 不知道该 \(\%\) 什么,翻了翻 c++ reference ,找了老半天,找到了个 \(hhx\) ?,自闭了感觉不是太对,而且 g++ 每次编译还给我警告,不管了。然后发现 fprintf 输出的是10进制,又在 c++ reference 找了老半天,没找着,一气之下换成了 fwrite ,发现是 2 进制了,然后也输出图片了,只是颜色不是太对,猜测估计是 hhx 和 unsigned char 不一样,然后不知道为啥我没考虑用 fread 解决,我用的方法是 直接读入 int ,声明 256 个 unsigned char

unsigned char oUt[300];
oUt[0]=0x00;
oUt[1]=0x01;
...
oUt[16]=0x10;
...
oUt[255]=0xff;

输出的话直接 fwrite(&oUt[B[i][j]],sizeof(unsigned char),1,pFILE);

对了对3个样例,diff 都没一丁点问题。

然后交上去 system error,自闭了,问了问,只说 要创建 相关文件,真他妈日了狗了,啥jb相关文件,你tm倒是说啊。

然后就没然后了。

day3

看了看西湖,走路真累

总结

day1感觉该拿的都拿了,很满意。但是败给了day2的工程题。

总分:30+60+40+0 + 0 自闭了,cswl。

posted @ 2021-05-18 15:00  zYzYzYzYz  阅读(33)  评论(0)    收藏  举报