【题解】2016.5.8SWJTU校赛题解

这套题目总体而言,中等题偏多,而简单题和难题较少。一些题目需要组合运用多种算法和数据结构,而代码复杂度并不高,主要目的使是选手在整个比赛过程中不至于进入“垃圾时间”,能感受到思考并解决题目的乐趣……但好像大家都跳进坑里面了。

A:Tickets

寻找最少花费及购买方式,若有多种则输出最前一种,直接处理即可,注意数据较大,用cin,cout可能会超时,这点在宣讲会上已经提过了。

B:Wave string

定义了波浪串,要求寻找从某位开始的波浪长度为L的波浪串个数,用manacher求出每位为中心的最大回文串个数后,可以在log(n)内完成查询。

总复杂度n + mlog(n)(m为询问个数,n为长度)

C:The road ahead to beboundless

不知道没给第三个样例有多少人能做出来……贪心,考虑如何将最慢的两个人送过去时间最短,且不影响其他人,一种方案是:(1,n)->(1)<-(1,n-1)->(1)<-,另一种方案是(1,2)->(1)<-(n-1,n)->(2)->,比较一下两种方案花费时间,直到人数<=3处理边界情况。

D: King’s Knight

求解等比数列之和,列出公式后可发现需要高精度,快速幂,逆元,对应处理即可(毒瘤题……)

E:DaVinci code

给出原始字符串和目标字符串,给定两个操作,求最小操作数,BFS即可。

F:Legend of theGalactic Heroes

求给定若干条sum[r]-sum[l-1]=k的信息,询问有多少条错误信息,带权并查集的运用,若f[i] = j(应保证i>j),则weight[i] = sum[i]-sum[j],若不在一个集合中就合并,在一个集合中就查询是否正确。

G: White album 2

(为什么会这样呢?)送分题,寻找强连通分量并缩点,拓扑排序找最大路径即可。

H: Put an elephant into a refrigerator

令f[l,r,k]表示已经走到的左边最远点是l,右边最远点是r,k=0表示在左端点,k=1表示在右端点,每次转移向左或向右多走一个点。

I:  Buy buy buy

若令f[i]表示以i结尾的最长序列长度,则f[i]= max{f[j]} + 1(j < i && f[i]-k[i]<=f[j]<=f[i]+k[i]),普通dp实现是O(n^2)的时间复杂度,需要用线段树进行优化,具体优化方式是离散化以后,在计算f[i]时,查询范围内的最大f[j]值并将f[i]插入线段树中,复杂度均为log(n),总复杂度为nlog(n)。

J:Escape from theearth

多重二分图匹配,模板题。

代码地址:https://github.com/bamboohiko/problemSolve

时间: 2024-11-12 20:28:23

【题解】2016.5.8SWJTU校赛题解的相关文章

2016 年宁波工程学院第七届ACM校赛题解报告

2016 年宁波工程学院第七届ACM校赛题解报告 本题解代码直接为比赛代码,仅供参考. A,B,C,D,G,H,J,K,L,M 来自 Ticsmtc 同学. F 来自 Gealo 同学. E,I 来自Alex 学长. Promblem A :    Two Sum 时间限制: 1 Sec  内存限制: 64 MB 题目描述: 给出n个数,另外给出?个整数S,判断是否可以从中取出2个数,使得这两个数的和是S. 输入: 第?行有个整数T(1 <= T <= 10),代表数据组数. 对于每组数据,第

河南工业大学2017校赛题解

问题 A: 饶学妹的比赛 题意: 给你一场比赛每人提交的记录,计算最后的排名 题解: 模拟+排序 代码: 1 #include <map> 2 #include <set> 3 #include <cmath> 4 #include <queue> 5 #include <stack> 6 #include <cstdio> 7 #include <string> 8 #include <vector> 9 #

2016.4.23 浙江省赛题解

Apples and Ideas Time Limit: 2 Seconds      Memory Limit: 65536 KB "If you have an apple and I have an apple and we exchange these apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these

2016移动开发校赛之Android实践

学校组织的<移动互联网应用软件开发>技能竞赛,所有参赛命题均基于 Android 4.2 版本实现,比赛推荐使用的开发环境为:ADT, JDK 1.6, Android SDK 4.1  经过了四天的培训我们小组选择在计算器应用 计算器能够实现: 1. 数学四则运算 2. 实现开方元算  3. 实现求倒数运算  4. 实现百分比运算  5. 实现删除一位数字的功能  6. 实现删除所有数据的功能  7. 实现临时存储数据的功能 目前我可以完成全部功能,虽然是扩展老师的基础程序,但还是很有成就感

[BNUZOJ1261][ACM][2016北理校赛]方块消除(栈,字符串)

玩过方块消除游戏吗?现在规定当有两个或两个以上相邻且颜色相同的方块在一起的时候,它们就会产生消除反应.当存在多个消除反应同时产生时,最下的反应先执行.现在只给你其中一列,求最后剩下的方块结果. 输入要求 第一行是一个整数T(T<=100),表示有T组测试数据.每组测试数据一行.每行有一串数字(数字长度<=1,000,000),按从下往上给出一列方块的颜色(颜色用0-9表示,每个数字代表一种颜色).(数字长度大于100,000的不超过5组) 输出要求 输出消除后的结果. 测试数据示例 输入 21

2016 SCNUCPC 校赛非官方题解

我要举报本次校赛出题人的消极出题!!! A. 树链剖分数据结构板题 B. The background of water problem 题目大意(大写加粗的水题):给定$N$个学生和他们$K$个科目的成绩$S_i$,再给出各科目$K_i$的权重顺序$Q_i$,求排名之后,拥有id为$X$的是哪个学生. 基本思路:虽然$K$只有$10$,$S$只有$100$,但有M组查询,所以当然不能开个long long去hash每个学生.我们简单点,开个结构体,排个序,就好了. 参考代码: 官方代码(将成绩

郑轻第六届校赛 -- 部分题解

1427: 数字转换 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 379  Solved: 93 SubmitStatusWeb Board Description 老师交给小明一个任务,有两个数字x和y(x<y),通过以下两种操作:一.将x乘以2:二.将x的值加上1.小明希望能通过尽可能少的操作来完成这个任务,但是不知道怎么做,现在请大家来帮帮他的忙吧. Input 两个整数x,y(0<=x<y<=10^6). Output 一

2016 华科校赛 B. And

// 2016 华科校赛 B. And http://acm.hust.edu.cn/problem/show/1672 题目描述 给出 a[1], ..., a[n].查询 t[1], ... t[m],问有多少 a[] 的子序列的按位与是 t[]. 输入 多组测试,EOF 结束. n a[] m t[] 1 ≤ n ≤ 1e6 1 ≤ m ≤ (1 << 20) 1 ≤ a[i] ≤ (1 << 20) 1 ≤ t[i] ≤ (1 << 20) 输出 输出一行,每组

周一训练赛题解

这次完全是水题大集合啊,希望大家A的开心: 前两个题是我找的,后两个是陶叔找的,另外因为我的偷懒,下面所有的代码都是陶叔亲自写的,十分感谢陶叔: 陶叔暑假为了大家的集训,牺牲了很多自己宝贵的时间,大家接下来要好好训练啊!!!! 废话少说,进入正题: Problem A      SPOJ QUEST5 签到题: 将所有的边按照右端点排个序,然后每次选择没有钉住的点,然后把这之后的所有与它相交的边全去掉: 代码: #include <cstdio> #include <cstring>