FZU Monthly-201903 tutorial
FZU Monthly-201903 tutorial
| 题目(难度递增) | easy | easy-medium | medium | medium-hard | hard |
|---|---|---|---|---|---|
| 思维难度 | ABF | G | CH | D | E |
A. Derivative
对于本题,你只需要有着扎实的高等数学基础即可通过。出题人的原意是希望这道题能够成为第二档难度,然而他似乎不知道有在线求导这样神奇的网站,于是,这道题就成为了简单题。
复杂度为O(1)。
B. Fzuacmicpc
本题写法较多,只要你认真读题了且C语言基础过关,就一定会做。
在此给出一个简单的提示:你可以把数组复制一遍来处理字符串头尾相连的问题
C.Heroes
本题是一道基础的搜索题。
在本题中,零散的水晶其实只需要计数即可,重点是八个蛋(バクダン,炸弹)周围的水晶。由于炸弹只有8个,因此我们对炸弹进行编号,枚举每个炸弹是否选取,利用搜索求得对应情况下通过炸弹获取的水晶数量即可。剩余的水晶可以就直接购买需要的数量。
D. Ksubstring
注意到如果所有字符如果都有大于等于k个,那么可以取全部,不然这些不足k个的字符会把整个字符串切开,就变成了子问题,递归去做就行了。复杂度O(26 * n)
E.Magicwall
如果选定了[l, r] 这段区间,那么调整到中位数是最优的,所以就是滑窗维护中位数,可以开两个set,保证集合大小差小于等于1,以及一个集合的最小值大于等于另一个集合最大值,这样就可以维护需要消耗的代价了。
提供出题人的标程供参考:
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define rep(i, a, b) for(int i=(a); i<(b); i++)
#define per(i, a, b) for(int i=(b)-1; i>=(a); i--)
#define sz(a) (int)a.size()
#define de(a) cout << #a << " = " << a << endl
#define dd(a) cout << #a << " = " << a << " "
#define all(a) a.begin(), a.end()
#define pw(x) (1ll<<(x))
#define endl "\n"
typedef double db;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef vector<int> vi;
const int P = 1e9 + 7;
int add(int a, int b) {if((a += b) >= P) a -= P; return a;}
int sub(int a, int b) {if((a -= b) < 0) a += P; return a;}
int mul(int a, int b) {return 1ll * a * b % P;}
int kpow(int a, int b) {int r=1;for(;b;b>>=1,a=mul(a,a)) {if(b&1)r=mul(r,a);}return r;}
//----
const int N = 5e5 + 7;
set<pair<ll, int> > s[2];
ll sum[2], ans, a[N];
int n, k;
inline void ADD(int o, pair<ll, int> &x) {
s[o].insert(x);
sum[o] += x.fi;
}
inline void DEL(int o, pair<ll, int> &x) {
s[o].erase(x);
sum[o] -= x.fi;
}
void modify() {
while (sz(s[1]) < sz(s[0])) {
auto t = *(--s[0].end());
ADD(1, t);
DEL(0, t);
}
while (sz(s[1]) - 1 > sz(s[0])) {
auto t = *s[1].begin();
ADD(0, t);
DEL(1, t);
}
while (1) {
auto x = *s[1].begin(), y = *(--s[0].end());
if (x.fi < y.fi) {
DEL(1, x);DEL(0, y);
ADD(1, y);ADD(0, x);
}else break;
}
}
int main() {
//freopen("a.in","r",stdin);
std::ios::sync_with_stdio(false);
std::cin.tie(0);
//cout << setiosflags(ios::fixed);
//cout << setprecision(2);
cin >> n >> k;
rep(i, 1, n+1) cin >> a[i];
rep(i, 1, k+1) {
auto t = mp(a[i], i);
ADD(0, t);
}
modify();
ans = sum[1] - sum[0] - (k & 1) * (*s[1].begin()).fi;
rep(i, k+1, n+1) {
auto t = mp(a[i-k], i-k), t2 = mp(a[i], i);
if (s[0].count(t)) DEL(0, t), ADD(0, t2);else DEL(1, t), ADD(1, t2);
modify();
ans = min(ans, sum[1] - sum[0] - (k & 1) * (*s[1].begin()).fi);
}
cout << ans;
return 0;
}
F.Monoid-group
事实上,题面是离散数学中关于群的定义。按照题目要求写三重循环进行判定即可。
复杂度O(N^3)。
G.Ninja
这道题的本意是考察矩阵乘法的应用,但是出出来后发现远比预先设计的来的简单。
对于题目给出的数据,用邻接矩阵进行存储后进行一次自乘,即可得到一次移动所能获得的得分。将最高得分乘上K就是最后的结果。
复杂度为O(N^3)
H.Permutation-generation
形如:
n n-1 n-2 n-3 ... n-t k 1 2 3 .. c
从大到小依次填写,直到逆序对超过,选择合适的k,使得逆序对得到满足之后,剩下数字顺序排列
出题人的一些话:
参考了上次月赛的结果,这次月赛的题目设置相对简单,结果也基本符合预期。如果你能够在这次月赛中通过三题或以上,那么你的代码水平应该能够在C语言期末考试,以及校赛中获得一个不错的成绩。
这次月赛共有95人报名,51人成功地做出题,希望参赛的大家能够向周围的同学宣传我们的月赛,使得以后的月赛能够有更多的同学参与到其中来,共同营造快乐的编程坏境。
比赛趣味统计:
全场第一个AC: 陈华能同学在开场9分钟时以惊人的手速AC了B题。随后,林闽沪同学以微弱差距在不到一分钟之内通过了A题。
全场最后一个有效AC:鲍子涵同学在16:56提交了D题WA掉了之后,在16:57再此提交成功AC,成为了全场最后一个有效AC题目的选手。
全场最顽强的选手:陈华能同学在15:35成功AC了D题,在AC之前,他一共提交了9次,其中6次TLE,3次WA,但是他一直在努力调试。最终他获得了全场第3名的好成绩。
全场最虐心的选手:吴少冰同学在14:47提交了一份判定为WA的D题代码。只有在后台默默围观的出题人知道,他的做法其实是正确的,只是没有判断题目中表明的输出-1的情况。吴少冰同学在这道题上奋斗了接近2个小时,做出了各种各样的尝试,最后在16:43分成功发现问题并AC了D题,成为全场第5名。
全场最有灵性的选手: 鲍子涵同学在H题的代码中,同时使用了关闭同步的cout和传统输入输出方式导致了WA。在出题人以为他要因此卡题的时候,鲍子涵同学在13分钟内发现了这个很不明显的问题然后成功AC了H题。请其他同学记住这个可能的错误点。
FZU Monthly-201903 tutorial的更多相关文章
- FZU Monthly-201901 tutorial
FZU Monthly-201901 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AHG F B CE D 编码难度 ...
- FZU Monthly-201909 tutorial
FZU Monthly-201909 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AB CD EF G H A. I ...
- FZU Monthly-201906 tutorial
FZU Monthly-201906 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AE B DG CF H A. X ...
- FZU Monthly-201905 tutorial
FZU Monthly-201905 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AB H DG CE F A. C ...
- Microsoft Azure Tutorial: Build your first movie inventory web app with just a few lines of code
Editor’s Note: The following is a guest post from Mustafa Mahmutović, a Microsoft Student Partner wh ...
- Career Planning:Developers Best Practices Tutorial
This small tutorial is based on my past 16+ years of experience in software development industry. I ...
- [翻译+山寨]Hangfire Highlighter Tutorial
前言 Hangfire是一个开源且商业免费使用的工具函数库.可以让你非常容易地在ASP.NET应用(也可以不在ASP.NET应用)中执行多种类型的后台任务,而无需自行定制开发和管理基于Windows ...
- Monthly Income Report – August 2016
原文链接:https://marcoschwartz.com/monthly-income-report-august-2016/ Every month, I publish a report of ...
- Django 1.7 Tutorial 学习笔记
官方教程在这里 : Here 写在前面的废话:)) 以前学习新东西,第一想到的是找本入门教程,按照书上做一遍.现在看了各种网上的入门教程后,我觉得还是看官方Tutorial靠谱.书的弊端一说一大推 本 ...
随机推荐
- Linux编辑启动停止重启springboot jar包脚本
springboot的配置文件中,配置文件的名字都有各自的意义跟用途 dev 开发环境 prod 生产环境(默认) test 测试环境 加载指定配置文件 --spring.profiles.activ ...
- [转]SQL - Create XML - How to set Unicode UTF-8
本文转自:https://stackoverflow.com/questions/44754356/sql-create-xml-how-to-set-unicode-utf-8 I found a ...
- 简单的SpringMVC经典案例
主题:构建一个基于SpringMVC的HelloWord Web 项目 目的:快速体验什么是SpringMVC 方案: 1.创建工程,命名:SpringMVC 2.导包 3.在SRC下添加spring ...
- 【JavaFx教程】第六部分:统计图
第6部分的主题 创建一个统计图显示生日的分布. 生日统计 在AddressApp中所有人员都有生日.当我们人员庆祝他们生日的时候,如果有一些生日的统计不是会更好. 我们使用柱状图,包含每个月的一个条形 ...
- java设计模式(一)【六大原则】
开发一个系统并不是一件困难的事,但是为何维护好一个系统却是一件让人头疼不以的事? 在笔者的观念中这一切都源自于需求. 如果在软件开发完成之后,需求就不再改变,那大部分程序都不需要维护了.但是, ...
- wagon-maven-plugin实现自动打包部署到服务器
1.在maven中添加依赖 <!-- https://mvnrepository.com/artifact/org.codehaus.mojo/wagon-maven-plugin --> ...
- CSS实现英文或拼音单词首字母大写
CSS实现英文或拼音单词首字母大写,只需要在css样式中加入: text-transform: capitalize 即可. 测试代码如下: <!doctype html> <htm ...
- webstorm技巧
webstorm安装后的一些设置技巧: 如何更改主题(字体&配色):File -> settings -> Editor -> colors&fonts -> ...
- [基础架构]PeopleSoft Web Server 重要文件说明
我们都知道PeopleSoft是由几个不同的服务组成的,他们在PeopleSoft体系结构中扮演着自己的角色.这些服务具有不同的文件结构并包含重要的可执行文件和配置文件. 以下是Peoplesoft体 ...
- Windows7安装nginx后,'nginx -t -c nginx.conf' 命令出现 “could not open error log file: CreateFile() "logs/error.log" failed” 错误的原因
网上搜索安装nginx的方法,按照步骤在 http://nginx.org/en/download.html 下载了安装包,并配置了conf/nginx.conf,将nginx的根目录添加进了环境变量 ...