传送门: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]密钥的更多相关文章

  1. bzoj 4900 [CTSC2017]密钥 模拟+乱搞

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4900 #include<cstring> #include<cmath&g ...

  2. CTSC2017密钥、吉夫特

    自己是有多么sb. 密钥 大家都说这是一道普及-的题,一年前我做不起,我可以说我太弱啦,我就普及组水平,今年我还是做不起…… 看大佬题解都是:开个桶就好啦! 我:你在说什么…… 首先把环拉成链,倍长. ...

  3. [CTSC2017]密钥

    传送门:http://uoj.ac/problem/297 “无论哪场比赛,都要相信题目是水的” 这不仅是HNOI2018D2T3的教训,也是这题的教训,思维定势真的很可怕. 普及组水题,真是愧对CT ...

  4. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

  5. uoj #297. 【CTSC2017】密钥

    #297. [CTSC2017]密钥 一个密钥是一个长度为 n=2k+1n=2k+1 的字符串,它包含 11 个字母X.kk 个字母 A 和 kk 个字母 B.例如 k=3k=3 时,BAXABAB ...

  6. 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令

    2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...

  7. VS2013 密钥 – 所有版本

    Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9 Visual Studio Premium 2013 KEY(密钥) ...

  8. 利用密钥通过ssh互访

    dir(192.168.131.132):作为client rs1(192.168.131.110)和 rs2(192.168.131.131):作为server端     1.dir 运行命令:   ...

  9. RSA密钥之C#格式与Java格式转换

    前言 最近由于项目需求,服务端由c#编写,客户端由java编写.通信数据使用RSA非对称加密.但是java和c#生成的密钥格式是不一样的,所以需要转换格式才可以正常使用.网上搜到使用java进行格式转 ...

随机推荐

  1. 实现一个简单版的express

    express应该算是早期最优秀的一个node框架了,刚开始学node做后端语言就是用的express,它的cli可以帮我们搭建好项目目录,就像现在的vue,react一样.express本身没有做太 ...

  2. Nullable可空类型

    一个Nullable类型就是基本类型加上一个"是否为null指示器"的合成类型.对于一个类型,如果既可以给他分配一个值,也可以给它分配null引用,我们就说这个类型是可空的. 可空 ...

  3. C变量之间的转换

    int main(){ //定义了三个变量分别是abc ab的值分别是5跟8 c没有赋值  把b的值给c 把a的值给b 把c的值给a 形成了一个ab值得转换: int a=5; int b=8; in ...

  4. Regularization method for machine learning

    Regularization method(正则化方法) Outline Overview of Regularization L0 regularization L1 regularization ...

  5. RMQ问题+ST算法

    一.相关定义 RMQ问题 求给定区间的最值: 一般题目给定许多询问区间. 常见问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大 ...

  6. DFS(1)——hdu1518Square

    一.题目回顾 题目链接:Square 题意:给你M根木棒,请判断这些木棒能否组成正方形. 二.解题思路 DFS+剪枝 [变量说明] sum:木棒的总长度 ave:形成的正方形的边长 maxlen:最长 ...

  7. Linux yum安装MySQL5.7,及远程连接mysql(亲测有效!)

    一.安装配置MySQL的yum源 # 安装MySQL的yum源,下面是RHEL6系列的下载地址 rpm -Uvh http://dev.mysql.com/get/mysql-community-re ...

  8. Web-Servlet处理表单

  9. Cache的封装和使用

    ICache 接口 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  10. 【PHP】- include、require、include_once 和 require_once的区别

    1.include:会将指定的档案读入并且执行里面的程序.      被导入的档案中的程序代码都会被执行,而且这些程序在执行的时候会拥有和源文件中呼叫到 include() 函数的位置相同的变量范围( ...