[CSP-S模拟测试]:Cicada拿衣服(暴力+乱搞)
题目传送门(内部题94)
输入格式
第一行两个整数$n,k$,代表衣服的数量和阈值。
接下来一行$n$个数,第$i$个数$a_i$表示每件衣服的愉悦值。
输出格式
输出一行$n$个数,第$i$个数为$r_i-l_i+1$,如果不存在这样的$l,r$,则输出$-1$即可。
数据范围与提示
$n\leqslant 10^6,0\leqslant a_i\leqslant 10^8,0\leqslant k\leqslant 10^9$

题解
正解是什么?我不知道。
乱搞就好了……
具体看代码吧,挺帅(不要脸)的。
可能是我发现这样可以过?

总之绿块块是我的!!!

感谢富豪大神的快读(从不打快读的我)。
时间复杂度:$\Theta($不要脸$)$。
期望得分:$64$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
int n,k;
int a[1000001],ans[1000001];
inline int read(){
int ss(0);char bb(getchar());
while(bb<48||bb>57)bb=getchar();
while(bb>=48&&bb<=57)ss=(ss<<1)+(ss<<3)+(bb^48),bb=getchar();
return ss;
}
int main()
{
n=read(),k=read();
for(int i=1;i<=n;i++)ans[i]=-1,a[i]=read();
if(n<=30000)
{
for(int i=1;i<=n;i++)
{
int Min=0x3f3f3f3f,Or=0,Max=0,And=(1<<30)-1,r=-0x3f3f3f3f;
for(int j=i;j<=n;j++)
{
if(a[j]<Min)Min=a[j];
Or|=a[j];
if(a[j]>Max)Max=a[j];
And&=a[j];
if(Min+Or-Max-And>=k)r=j;
}
int len=r-i+1;
for(int j=i;j<=r;j++)if(len>ans[j])ans[j]=len;
}
for(int i=1;i<=n;i++)printf("%d ",ans[i]);
return 0;
}
for(int i=1;i<=n;i++)
{
int Min=0x3f3f3f3f,Or=0,Max=0,And=(1<<30)-1,r=-0x3f3f3f3f;
int minn=min(i+700,n);
for(int j=i;j<=minn;j++)
{
if(a[j]<Min)Min=a[j];
Or|=a[j];
if(a[j]>Max)Max=a[j];
And&=a[j];
if(Min+Or-Max-And>=k)r=j;
}
int len=r-i+1;
for(int j=i;j<=r;j++)if(len>ans[j])ans[j]=len;
}
for(int i=1;i<=n;i++)printf("%d ",ans[i]);
return 0;
}
rp++
[CSP-S模拟测试]:Cicada拿衣服(暴力+乱搞)的更多相关文章
- [CSP-S模拟测试]:军训队列(DP+乱搞)
题目描述 有$n$名学生参加军训,军训的一大重要内容就是走队列,而一个队列的不规整程度是该队中最高的学生的身高与最矮的学生的身高差值的平方.现在要将$n$名参加军训的学生重新分成$k$个队列,每个队列 ...
- VIJOS1476 旅行规划(树形Dp + DFS暴力乱搞)
题意: 给出一个树,树上每一条边的边权为 1,求树上所有最长链的点集并. 细节: 可能存在多条最长链!最长链!最长链!重要的事情说三遍 分析: 方法round 1:暴力乱搞Q A Q,边权为正-> ...
- [CSP-S模拟测试]:打扫卫生(暴力)
题目描述 有$N$头奶牛,每头那牛都有一个标号$P_i1\leqslant Pi\leqslant M\leqslant N\leqslant 40,000$.现在$Farmer\ John$要把这 ...
- [CSP-S模拟测试]:String Master(暴力)
题目描述 所谓最长公共子串,比如串$A:"abcde"$,串$B:"jcdkl"$,则它们的最长公共子串为串$"cd"$,即长度最长的字符串 ...
- [CSP-S模拟测试]:Cicada与排序(概率DP)
题目传送门(内部题93) 输入格式 第一行一个整数$n$,代表数列的长度. 接下来一行$n$个数$a_i$,用空格分隔开. 输出格式 输出一行$n$个数,表示原数列上这个位置在执行后的期望位置,注意输 ...
- Codeforces #254 div1 B. DZY Loves FFT 暴力乱搞
B. DZY Loves FFT 题目连接: http://codeforces.com/contest/444/problem/B Description DZY loves Fast Fourie ...
- Codeforces Gym 100203G Good elements 暴力乱搞
原题链接:http://codeforces.com/gym/100203/attachments/download/1702/statements.pdf 题解 考虑暴力的复杂度是O(n^3),所以 ...
- Codeforces 245G Suggested Friends 暴力乱搞
G. Suggested Friends time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- BZOJ 1491: [NOI2007]社交网络(Floyd+暴力乱搞)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1491 题解: 先看数据范围,n<=100..欸可以乱搞了 首先因为小学学过的乘法原理 ...
随机推荐
- Go语言代码结构与语法基础(二)
任何一门语言,都是从打印 hello world 开始的. 最简单的go代码: package main // 声明 main 包,表明当前是一个可执行程序 import "fmt" ...
- day 02 while 循环 格式化输出 运算符 and or not - 编码的初识
while 循环 while 条件: 循环体 循环如何终止? 改变条件. flag = Truewhile flag: print('狼的诱惑') print('我们不一样') ...
- mysql联合索引如何创建
例如: CREATE TABLE `test` ('aaa' varchar(16) NOT NULL default '', 'bbb' varchar(16) NOT NULL default ' ...
- vim学习(一)之简介、安装、配置
vim简介 Vim是从 vi 发展出来的一个文本编辑器,是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. 简单的来说, vi 是老式的文字处理器,不过功能已经很齐全了,但是还是 ...
- having函数,case when与order by
having:用于筛选分组后的各组数据.聚合函数,和group by一起使用(where不能和聚合函数使用)group by放在order by前使用,放在之后报错SELECT user_id fro ...
- Linux连接外网~可以Windows与Linux互ping通~图文
我这里用的是CentOS7_1511 下载地址 http://linux.xitongxz.net:808/201603/CentOS-7-x86_64-DVD-1511.iso 选择 虚拟机左上角 ...
- 010-监控windows主机
1)下载windows的zabbix_agent下载地址:https://www.zabbix.com/download 下载客户端并解压到指定目录D:\zabbix,解压后有两个目录:bin和con ...
- 给oracle命令的参数赋值
''' <summary> ''' 给oracle命令的参数赋值 ''' </summary> ''' <param name="cmd& ...
- IDL_MCTK(MODIS Conversion Toolkit)
1.CONVERT_MODIS_DATA CONVERT_MODIS_DATA [,IN_FILE= | | }] [,GEOLOC_FILE= | | }] [,CALIB_METHOD={ | | ...
- 【CF896C】Willem, Chtholly and Seniorious
ODT模板题,ODT适合随机数据下具有维护区间推平操作的序列维护题目,时间复杂度较为玄学.. 代码如下 #include <bits/stdc++.h> #define pb push_b ...