2019ICPC女生专场比赛心得体会

2019ICPC女生专场比赛心得体会

  • 比赛环境
  • 赛题链接
  • 对参赛环境的感受
  • 比赛解题感受
    • Problem A. Ticket
    • Problem B. Gcd
    • Problem C. Function
    • Problem D. Tree
    • Problem E. Checkout
    • Problem F. String
    • Problem G. Circle
    • Problem H. Clock
    • Problem I. Union
    • Problem J. Tangram
    • Problem K. Tetris
  • 最后的心得体会

比赛环境

时间:2019/06/01
地点:南京晓庄学院,信息工程学院,鹤琴楼一楼机房。
参赛队伍:共155支。
测试环境:Win7:Dev-C、CodeBlocks、Eclipse、IDEA
评测环境:Ubuntu16.01:gcc-4.8

赛题链接

对参赛环境的感受

  1. 首先,诧异于实在机房比赛,感觉真的很挤,气流不畅通,很闷。
  2. 其次,热身赛发现Dev-C不能使用常用的函数(不知什么原因就是报在头文件里面有中文符号错误,这我还是第一次遇到),只能用不太熟悉的CodeBlocks了。
  3. 最后,就是午餐提供的是面包、饼干和香肠,大概是在机房考的原因吧。

比赛解题感受

Problem A. Ticket

北京地铁票每月的打折规则为:本次乘车前总消费不足 100 元本次不打折满 100 元不足 150 元本次打8 折,满 150 元不足 400 元本次打 5 折,已满 400 元后本次不打折,已知 wls 每次出行的原票价,请问实际的花费是多少?

签到题,不多解释

Problem B. Gcd

  1. 题目:wls 有一个整数 n,他想将 1 - n 这 n 个数字分成两组,每一组至少有一个数,并且使得两组数字的和的最大公约数最大,请输出最大的最大公约数。
  2. 做题波折:虽说这道题很简单,然而我们在这里卡题了…
    开始没有找到规律,始终停留在和为奇数和为偶数的分类讨论上。
    后来,才发现和为奇数的时候,就是找到和%素数==0时,和/素数的值。于是WA…。这道题数据的范围是2 ~ 1000000000,太大了,开数组用埃氏筛选法标记素数的位置,明显无法到10^9大的素组,然而长时间我们没有发现是数组的问题,以为素数很小就可以除尽了。
    然后,还尝试过,1 ~ n的和折半后向左遍历找到最大的因数,然而…TLE。
    最后在绝望之际,我们发现思路回到了因数上面,没错就是因数,我尝试了一下2~根号下n的和遍历,直接求和的最大因子,感觉跟素数的想法是等效的,以为不会过,结果过了…
    深感在这道题上浪费的时间太多。

Problem C. Function

wls 有 n 个二次函数 Fi(x) = aix2 + bix + ci(1 ≤ i ≤ n)。现在他想在∑ni=1 xi = m 且 x 为正整数的条件下求∑ni=1 Fi(xi) 的最小值。请求出这个最小值。

题目是数学题,直接跳过了,需要补题。

Problem D. Tree

Problem E. Checkout

有关树的题都跳过了,学习不扎实…

Problem F. String

wls 有一个长度为 n 的字符串,每次他可以将一个长度不大于 l 的子串修改成同一种字母,问至少修改多少次可以使字符串最多含有 k 段。连续的只含同一种字母的子串被称为一段。比如说, aaabbccaaa 一共含有 4 段。

感觉挺简单的,是道DP题,就是没思路…

得补题了…

Problem G. Circle

在半径为 1 的圆上有 n 个点,它们也是圆的 n 等分点,将每个相邻的 n 等分点相连,组成了一个正 n边形,现在你可以在圆上再增加一个点,使得新的 n + 1 边形的面积最大,请输出最大面积。

签到题,正n边形的面积:n/2 * r^2 * sin(2pi/n);

添加的点肯定在相邻两点之间,所以结合起来的公式就是:(把多边形分成三角形之后,少算一个三角形,剩下的凑成一个四边形,四边形的对角线是相互垂直的,相乘/2即为四边形的面积)

(n-1)/2 * r^2 * sin(2pi/n) + r^2 * sin(pi/n)
然而r = 1,更简单了…

Problem H. Clock

wls 有一个钟表,当前钟表指向了某一个时间。又有一些很重要的时刻,wls 想要在钟表上复现这些时间(并不需要依次复现)。我们可以顺时针转动秒针,也可以逆时针转动秒针,分针和时针都会随着秒针按规则转动,wls 想知道秒针至少转动多少角度可以使每个时刻至少都会被访问一次。注意,时钟上的一种时针分针秒针的组合,可以代表两个不同的时间。

最后30分钟了,做题有点慌忙,可惜了,原本能解出来的:

就是顺逆遍历两次,把4种情况可能的值都计算出来,找到最小值就好。

4种情况:仅顺时针耗时,仅逆时针耗时,先顺时针后逆时针耗时,先逆时针后顺时针耗时。

处理时间的技巧,直接把钟放大,整个圆盘的刻度为1236006这样就没有时针和分针的考虑了。

Problem I. Union

这是全场最难的题了,做出来的队伍很少。

Problem J. Tangram

一块七巧板有 7 块,现在 wls 想再在七巧板上加 n 条直线将七巧板切分并且使得切出来的块最多,请问最多能有多少块?

这题是签到题,我还卡了一会儿…
思路是对的,基本的7块+(6 + n + 6 - 1)/2
然而题目的输入是多组数据…
用while(cin>>n)读入,这个罚时的锅我背…

Problem K. Tetris

wls 有一个 n ∗ m 的网格,他现在想用俄罗斯方块中的"凸"型密铺它。一个"凸"型占四个格子,你可以随意把它调成上下左右四个方向中的一个。密铺的定义是网格中任意一个格子被且只被一个"凸"型铺到,并且这些"凸"型不能铺出网格的边界。随意输出一组解即可。

这题,出题方是想大家用搜索算法的…

其实只有边框为四的倍数才有解,而且最小的组成方法就是样例…
所以,单纯的复制输出就可以实现…

最后的心得体会

  1. 首先要读题仔细,注意细节,这次的罚时很高,主要就是读题不仔细,思路都是差不多的。
  2. 其次,就是好需要多刷题,像树的题直接跳过,这样是不对的…
  3. 最后,就是加油努力明年再战。

你可能感兴趣的:(ACM,2019ICPC女生专场)