6.5 THUSC 考试题解

QAQ 由于并没有数据,而且没有A掉的是提交答案题目,所以并没有修改 QAQ

只能放题解了,代码还没有拿到,不过在清华听了一波习题讲评的安利

第一题 成绩单

先说暴力分

对于单调序列来说最优决策一定是把原序列分成若干段,DP即可

对于单峰序列来说最优决策一定是类似于"汉堡抽肉"一样的东西,即每次从中间抽取一段

然后这样我们就有40分辣

对于n<=20我们可以利用状压DP解决

如果常数写的好听说能过n<=30

这样加起来就有60-70分啦

最后说正解,我们采用区间DP,设f(i,j)表示i->j的最优解的答案

不难发现每个区间的状态只需要确定mx和mn就可以了

不妨枚举mx和mn,这样对于这个区间会分成若干段不能被当前mx和mn包含的区间

显然我们对于这部分区间是不能贪心的,但是我们分完区间之后可以对这些区间在做一次DP

DP就是当前区间是单独来选还是跟之前的区间连着一起选,搞一搞转移就可以了

时间复杂度O(n^5),常数非常小所以跑的飞快

第二题:

一眼丝薄题,一开始看到空间限制还以为是强行可持久化题目

后来想了想觉得很简单,空间是为了骗你写可持久化树链剖分的

既然题目比较简单就直接说正解了

我们建出一个trie,对于每个可能的询问开一个vector记录

然后每次更新的时候在trie上跑一跑顺便更新vector就可以了

查询的时候我的方法是直接在对应点的vector里面二分,貌似有O(1)维护的方法

因为最多开10w个vector,总元素个数不超过600w,一个vector里不超过10w个元素

UOJ还开了O2,所以跑的飞快

时间复杂度O(nlogn+60n)

第三题:

这是一道提交答案题

上午试机的时候看到考试说明就知道有提交答案题目

然后考试的时候因为中途蓝屏自己也没有保存程序导致后来玩题答的时间严重不足

最后估计40+分?

第一个点直接就是一个大环,读入输出练习题

第二个点是一个大环打乱了顺序,把顺序搞出来输出就可以饿了

第三个点只有8条路径,暴搜就可以了

第四个点只有16条路径,搞一搞状态压缩也就搞定了

第五个点有100条路径QAQ,然后讲题的时候说没有最优解,部分分的参数给的很良心,让你乱搞的点

第六个点非常密集,而且是联通的,所以我们可以类似UVa的 巴士XX(记不太清了)网络流的方法做一个看上去很像最小路径覆盖的东西就可以了(难度是输出方案)

联通的性质决定了多个环一定存在一种方案转化为一个环且总距离不变

第七个点跟第六个点也是一样的

第8,9,10个点是分块的,每个块的点相距非常远,块内是联通的,做法是块内用网络流搞一搞

块外直接每个块缩成一个点搞搞状压DP或者暴搜就可以了

时间: 2024-11-10 07:48:49

6.5 THUSC 考试题解的相关文章

考试题解集合

某天忽然发现自己的blog里全是考试题解--那么为什么不链到一篇blog里呢?避免首页全是加密blog看起来不大友善,大概也会整齐一点.估计是个大工程但还是作死地开始啦.有些难题是单独写的,就不链了.希望总是能比过去的自己更用心! 2018 2月:21 2017 11月:1-2.4-5.6-7.8-9 10月:1.2.3-6.7-8.9-11.12.13.14-15.17-18.19-20.22-24.25-26.27-28.31 9月:10.14.20.25.27 8月:7.8.9.10.11

『8.21考试题解及反思』

UNO Description 良心出题人Magolor找到了你,想要和你一起玩桌(mo)游(ni). Magolor: "杀蚂蚁?猪国杀?斗地主?麻将?立体图?哪一个好啊?" 你: "毒瘤出题人!" Magolor伤心了--"我应该给人留下一个良心出题人的印象啊!" 于是Magolor选择了众所周知的UNO.整个周游只使用UNO牌,但完全不按照UNO的规则来打.牌局有3位玩家(你.Magolor.Magolor的好朋友TTL): 每个人将会摸到

10月2日考试题解(待更新)

10月2日考试题解 $ T1 $ : 题意简述: 给一棵 $ n $ 个节点的树,点有非负权值,你需要找出两条点不相交的路径,使它们长度和最大. $ n\le 10^5 $ $ solution: $ 有直径的性质可知,最终两条路径只有两种情况: 两条路径其中一条为直径 两条路径都有一个端点为直径端点 于是我们两遍 $ DFS $ 找到一条直径,并记录这条直径.将这条直径标记(删掉),从直径的每个点开始向直径两边树型 $ DP $ ,找到从直径上每个点出发的最长链,以及不与直径相交的最长链(这个

BZOJ4868:[SHOI2017]期末考试——题解

http://www.lydsy.com/JudgeOnline/problem.php?id=4868 题目复制于洛谷:https://www.luogu.org/problemnew/show/P3745#sub 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布. 第i位同学希望在第ti天或之前得知所有课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待最后公布成绩的课程公布成绩,每等待一天就会产生C不愉快度.对于第i门课程,按照原本的计划,会在

LJ 5月6日A组考试考试题解

[题目] T1(L2837) 晚餐队列安排 [题面] 为了避免餐厅过分拥挤,FJ要求奶牛们分2批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想,所有第2批就餐的奶牛排在队尾,队伍的前半部分则由设定为第1批就餐的奶牛占据.由于奶牛们不理解FJ的安排,晚饭前的排队成了一个大麻烦. 第i头奶牛有一张标明她用餐批次D_i(1 <= D_i <= 2)的卡片.虽然所有N头奶牛排成了很整齐的队伍,但谁都看得出来,卡片上的号码是完全杂乱无章的. 在若干次混乱的重新排队后,FJ找到了一种简单些的方

模拟赛 妖怪等级考试 题解

妖怪等级考试: 给定一个无向连通图,求是否存在两个点之间存在三条路径, 并要求输出路径. 首先,如果两个节点之间存在多条不相交路径,就一定存在一个环. 所以,这题和找环相关. 只有两个环之间存在相交的边,才说明有解. 如图: 现在关键就是如何找到环. 由于无向图dfs后,只有树边和返祖边,且只有返祖边才会形成环,所以只要对返祖边处理就可以了. 每次将第个\(i\)环上所有边染成\(i\)色,当有一个边被染成两种颜色时,就找到了解. 因为每条边最多被染一次就会出现解,所以染色可以暴力进行. 如图:

2015数据结构上机考试题解

#include<cstdio> #define inf 0x3f3f3f3f const int maxn=10000; using namespace std; int n,m,q; int a[maxn+10]; int bs(int x){ int l=0,r=n-1; while(l<=r){ int mid=(l+r)>>1; if(a[mid]==x) return 1; else if(a[mid]>x) r=mid-1; else l=mid+1; }

第六届CCF计算机职业资格认证考试题解(第三题)(画图)

之前在CSDN上看到别人的代码,跑了下,发现官方给的第一个测例是过不去的,但是提交上去之后是100分,猜测是判题系统中并没有使用题目中给的第一个测例. 另,之前自己写的代码是零分,后来发现是字符之间多输出了空格,以后还是要认真看题. 最后改了之后,是90分,后来经人指正,是没有考虑到划线时遇到'+'时的情况,不论是画'|'还是'-',遇到'+'时仍旧要保持'+'号. 原文:http://blog.csdn.net/jaster_wisdom/article/details/51059144 一下

3月21日考试 题解(数据结构+区间DP+贪心)

前言:T3写挂了,有点难受. --------------- T1 中位数 题意简述:给你一段长度为$n$的序列,分别输出$[1,2k-1]$的中位数$(2k-1\leq n)$. ------------- 其实正解是用两个堆分别为大根堆和小根堆.但我这里偷了个懒,直接由STL函数upper_bound二分查找插入数字(STL大法好 Code: #include<bits/stdc++.h> using namespace std; vector<int> v; int n; i