[现场赛]“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛
solved 7
rank 9
第一次现场赛,前期因为抢一血心态罚时双爆炸,还好最后勉强拿了一等奖,蓝牙音箱还不错,可惜奖金没了啊。。
教训:1.一个题确定没写错交三次以上还没过就不要盲目优化了,考虑是不是算法错了
2.不要盲目抢一血了,自己太菜就还是老老实实跟榜吧
3.罚时终极爆炸,甚至是前一名的将近两倍,甚至比大多数八题还多。。除了E题之外还有好多没必要的罚时,BD为了抢一血甚至有两发样例都没过的罚时。。以后还是最好自己手造几组数据,毕竟一次罚时20分钟
A
题意:签到
(手速太慢抢不到一血啊)
00:02 (1A)
B
题意:签到
(手速太慢抢不到一血甚至还贡献了一发罚时)
00:08 (2A)
C
题意:给出一个随机生成的小写字母字符串,问有多少个长度大于等于m的不同的子串
因为字符串是随机生成的,显然长度比较大的子串相同的概率很小,那么对于长度小的用map暴力计数就可以,大的就当作不会重复套公式就好。比赛的时候临界点设为12就跑过了。
(这道题过的人好少啊。。出来之后听说好多人的双哈希都被卡了,还好我偷懒用了map。。)
02:37(3A)
D
题意:给出一个字符串,可以删除若干个字符,满足原字符串出现的每个字符出现一次,求字典序最小的删除方法。
从前往后扫,用一个栈维护当前选择的字符,对于这个字符已经在栈内就不用管,如果不在栈内,就一直出栈直到栈顶字符比当前字符小或者后边不再有了了,然后把这个字符进栈。乱搞的,不会证明。
(为了抢这题的一血差点自闭。。)
02:52(3A)
E
题意:给出两个元素各不相同的数列,可以任意交换一个数列的两个元素,求最少交换多少次使对应元素的乘积和最小。
排序不等式,最大的对最小的乘积和最小,这样根据a数列就能知道b数列每个元素应该放哪,这个交换次数有结论是数列长度减去循环个数,比如4——>2,2——>3,3——>4就是一个循环。好像直接贪心交换也可以。离散化预处理搞一搞就好了。
(因为之前做过类似的题,就想当然以为要一个升序一个降序,然后就从开题WA到封榜,还好最后发现自己弱智了,不然可能一等奖就没了吧。。)
04:24(11A)
F
题意:找规律
我这么不擅长打表都看出来这题的规律了,出题人也太良心了吧。。
02:26(1A)
G
题意:有n个人分s道题,m个关系,每个关系描述的是一个人要比另一个人多做k*ri个题,不会出现矛盾,求k的最大值。
看起来挺像二分的,但仔细一看发现压根用不着,直接拓扑排序求出最后一共要做多少倍的k,用s除一下就好了。
01:46(1A)
H
题意:有一个n维空间,每一维大小不同,给出每个坐标的物品的目标坐标,可以任意交换两个物品,求最少交换次数 。
把坐标映射成整数,然后就是E题了。。。甚至不用离散化
(还剩6分钟过的E,3分钟码的H还是WA了。。不过赛后知道就算过了也拿不到奖金,就也无所谓了哈哈哈)