bzoj4900 [CTSC2017]密钥
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4900
【题解】
恭喜bzoj达到40页
考场由于傻逼基数排序写挂了而gg。
竟然忘了考试前一天复习了kd-tree里面有nth_element这种东西。。
那么看看样例,找找规律就发现排序的关键字是前缀和尽量小,其次位置尽量靠后(对于第三种是靠前)
直接上nth_element就行了。。
# include <stdio.h>
# include <string.h>
# include <iostream>
# include <algorithm>
// # include <bits/stdc++.h> using namespace std; typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int M = 2e7 + ;
const int mod = 1e9+; # define RG register
# define ST static int n, k, S, seed;
int p[M], s[M]; struct pa {
int s, pos;
pa() {}
pa(int s, int pos) : s(s), pos(pos) {}
}a[M];
int an = ; inline bool cmp1(pa a, pa b) {
return a.s<b.s || (a.s==b.s && a.pos>b.pos);
}
inline bool cmp2(pa a, pa b) {
return a.s<b.s || (a.s==b.s && a.pos<b.pos);
} inline int randint() {
seed = ((seed * ) ^ ) & ;
return seed;
} inline void input() {
cin >> k >> seed >> S;
int t = ;
n = k * + ;
for(int i = ; i <= n; ++i) {
p[i] = (randint() >> ) & ;
t += p[i];
}
int i = ;
while(t > k) {
while(!p[i]) i++;
p[i] = ;
t--;
}
while(t < k) {
while(p[i]) i++;
p[i] = ;
t++;
}
} int main() {
input();
for (int i=; i<=n; ++i) {
if(p[i]) p[i] = -;
else p[i] = ;
s[i] = s[i-] + p[i];
if(p[i] == ) {
a[++an].s = s[i];
a[an].pos = i;
}
}
nth_element(a+, a+, a+an+, cmp1);
cout << a[].pos << endl;
nth_element(a+, a+S+, a+an+, cmp1);
cout << a[S+].pos << endl;
for(int i=; i<=an; ++i) a[i].s = -a[i].s;
nth_element(a+, a+S+, a+an+, cmp2);
cout << a[S+].pos << endl;
return ;
}
bzoj4900 [CTSC2017]密钥的更多相关文章
- bzoj 4900 [CTSC2017]密钥 模拟+乱搞
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4900 #include<cstring> #include<cmath&g ...
- CTSC2017密钥、吉夫特
自己是有多么sb. 密钥 大家都说这是一道普及-的题,一年前我做不起,我可以说我太弱啦,我就普及组水平,今年我还是做不起…… 看大佬题解都是:开个桶就好啦! 我:你在说什么…… 首先把环拉成链,倍长. ...
- [CTSC2017]密钥
传送门:http://uoj.ac/problem/297 “无论哪场比赛,都要相信题目是水的” 这不仅是HNOI2018D2T3的教训,也是这题的教训,思维定势真的很可怕. 普及组水题,真是愧对CT ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- uoj #297. 【CTSC2017】密钥
#297. [CTSC2017]密钥 一个密钥是一个长度为 n=2k+1n=2k+1 的字符串,它包含 11 个字母X.kk 个字母 A 和 kk 个字母 B.例如 k=3k=3 时,BAXABAB ...
- 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令
2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...
- VS2013 密钥 – 所有版本
Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9 Visual Studio Premium 2013 KEY(密钥) ...
- 利用密钥通过ssh互访
dir(192.168.131.132):作为client rs1(192.168.131.110)和 rs2(192.168.131.131):作为server端 1.dir 运行命令: ...
- RSA密钥之C#格式与Java格式转换
前言 最近由于项目需求,服务端由c#编写,客户端由java编写.通信数据使用RSA非对称加密.但是java和c#生成的密钥格式是不一样的,所以需要转换格式才可以正常使用.网上搜到使用java进行格式转 ...
随机推荐
- 多个Target的使用
背景介绍 开发过程中,我们会在内网搭建一个测试服务器,开发.测试都是在内网进行的.这样产生脏数据不会影响外网的服务器.外网服务器只有最后发布时才会进行一些必要的测试. 还有就是要对同一份代码生成不同的 ...
- MySQL用户权限控制一例
Preface I supposed we are encountering a situation that there's an anonymous user has connec ...
- C++学习009预处理器指令符号 # ## #@ 符号的使用
# ## #@ 符号是预处理器指令符号. 当预处理器遇到#指令符号时,会将#之后的部分用双引号括起来 当预处理去遇到##指令符号时,直接将##前后部分连接起来 当预处理器遇到#@指令符号,将#@之后的 ...
- 自动化测试---mybatis的使用
mybatis如何实现了对数据库的操作: 1.通过Resources.getResourceAsReader()或者 Resources.getResourceAsStream()加载mybatis. ...
- Kotlin操作符重载:把标准操作加入到任何类中(KAD 17)
作者:Antonio Leiva 时间:Mar 21, 2017 原文链接:https://antonioleiva.com/operator-overload-kotlin/ 就像其他每种语言一样, ...
- Selenide 简单实现自动化测试
Selenide 网址:http://selenide.org/ github 地址:https://github.com/codeborne/selenide Selenide 早些年一直使用,中间 ...
- KVM web管理工具——WebVirtMgr(一)
WebVirtMgr 介绍 WebVirtMgr采用几乎纯Python开发,其前端是基于Python的Django,后端是基于Libvirt的Python接口,将日常kvm的管理操作变的更加的 ...
- MySQL linux错误处理
https://cloud.tencent.com/developer/article/1023732 mysql5.7 ERROR 1045 (28000): Access denied for u ...
- mingw编译opencv2.4.13问题记录
为了在程序中用regex,升级了我的mingw,结果官网上的GCC版本都到6.3了,之前一直用4.8.换了编译器以后,对opencv2.4.10的引用就出了问题:undefined reference ...
- markdown(自己看)
https://www.cnblogs.com/james-lee/p/6847906.html https://maxiang.io/