J 牛牛想要成为hacker

2024-05-31 15:18
文章标签 想要 成为 hacker 牛牛

本文主要是介绍J 牛牛想要成为hacker,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

链接:https://ac.nowcoder.com/acm/contest/9982/J
来源:牛客网

在算法竞赛中"hack"一般指用一组测试数据触发程序的缺陷,从而导致本来通过题目的AC代码无法通过该测试数据。
一般情况见得比较多的是用hack数据导致别人WA掉,当然也有一些会导致原本的AC代码TLE和MLE。

牛牛在一些简单的练习题时遇到了这样一个问题。
给定一个大小为n的数组(1≤ai≤10^9),然后请你判断数组元素是否能够从中选出三个组成一个三角形。

牛牛发现AC通过的代码中有这样一种暴力逻辑,该逻辑的伪代码如下。
FOR i = 1 … n
FOR j = i + 1 … n
FOR k = j + 1 … n
IF isTriangle(a[i],a[j],a[k])
print(“yes”)
EXIT
END IF
END FOR
END FOR
END FOR
print(“no”)
EXIT

其实就是三重循环枚举数组的三个元素,检查是否为三角形。这段代码很取巧的地方在于它存在一种“短路”逻辑,一旦发现存在三角形就立刻终止程序。
这样在随机数据下其实很容易发现三角形,所以如果数据纯随机,显然这就是一段AC代码。

牛牛当然知道这个代码很明显就存在缺陷,如果数据构造的好的话应该可以卡TLE,但是牛牛发现,他并不会构造出能够hack这个暴力算法的数据,所以他请你来帮他。

我们以这段程序调用isTriangle的次数作为时间复杂度的计算依据,请你构造数据hack这段暴力程序,使它TLE掉。
输入描述:
第一行输入一个正整数n(3≤n≤10^5)表示需要你构造的数组大小。
输出描述:
输出n个正整数,正整数的范围在[1,10^9] 之间,要求该暴力程序在运行过程中调用isTriangle函数的次数不得少于min(Cn3 ,n^2 ⌊log 2n⌋)
示例1
输入
3
输出
2 2 2
说明
当n=3时题目要求小w的程序调用isTriangle函数的次数不得少于1次,所以输出任意的3个正整数都能符合条件。
示例2
输入
10
输出
1 2 4 8 16 32 64 128 256 512
说明
由于任何三个数字都无法组成三角形,所以会扫描到最后一组,达到最大复杂度,一共调用了120次isTriangle函数。

思路
Cn,3 是跑满 n^2log2n 我们得考虑Cn,2 * num,num是斐波那契个数,我们带入1e5,求出27即可满足,后面全搞的比前面大最后一个斐波那契数就行,这样爆1e9,想到后面可以全都是1就可以了。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
const double esp=1e-6;
const ll mod=1e9+7;
int n,k;
ll qpow(ll a,ll b){ll ans=1,base=a;while(b){if(b&1) ans=ans*base;base=base*base;b>>=1;}return ans;
}
int a[N]={0,1,1};
bool check(int i,int j,int k){if(a[i]+a[j]<=a[k]) return false;if(a[i]+a[k]<=a[j]) return false;if(a[j]+a[k]<=a[i]) return false;return true;
}
ll cal(){ll cnt=0;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){for(int k=j+1;k<=n;k++){cnt++;if(check(i,j,k)){return cnt;}}}}return cnt;
}
void init(){for(int i=1;i<=N-2;i++) a[i]=1;a[1]=2,a[2]=3;for(int i=3;i<=40;i++){a[i]=a[i-2]+a[i-1];}
}
void solve(){scanf("%d",&n);for(int i=1;i<=n;i++){printf("%d ",a[i]);}cout<<endl<<cal();
}
int main(){int Case=1;init();//scanf("%d",&Case);while(Case--){solve();}return 0;
}

这篇关于J 牛牛想要成为hacker的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018295

相关文章

想要从OPPO手机恢复数据?免费OPPO照片视频恢复软件

此实用程序可帮助那些寻找以下内容的用户: 在OPPO手机中格式化存储卡后可以恢复图片吗?我删除了 OPPO上的视频和图片,我感觉很糟糕,因为里面有我在拉斯维加斯拍摄的视频和照片 免费OPPO照片视频恢复软件 您能恢复OPPO上已删除的照片吗?我不小心格式化了OPPO SD 卡,有希望恢复已删除的照片吗? 救命!我在清理时删除了我的照片,我的问题是是否有任何免费软件可以从OPPO中恢复已

如何成为一个优秀的测试工程师

链接地址:http://blog.csdn.net/KerryZhu/article/details/5250504 我一直在想,如何将自己的测试团队打造成世界一流的团队?流程、测试自动化、创新、扁平式管理、国际标准制定、测试社区贡献、…… 但首先一点是明确的,就是要将每一个测试工程师打造成优秀的测试工程师,优秀的团队必须由优秀的成员构成。所以,先讨论“如何成为一个优秀的测试工程师”,

HTML5如何成为改变移动互联网幕后的推手

在未来的某一天,我们打开手机,不再需要访问手机应用商店,不论是 Apple的还是Google的,我们只需要点击手机主菜单页面上的一个链接,手机就会立即在它的浏览器上启动一个 “应用程序”;再也不需要flash插件,就能欣赏华丽丽视频画面。   AD:2013云计算架构师峰会课程资料下载   2012年,说HTML5集千宠万爱于一身也毫不夸张,IE、Chrome、Firefox和Opera等

随着人们网络安全意识提高,软件架构设计与评估也成为重中之重

目录 案例 【题目】 【问题 1】(13 分) 【问题 2】(12分) 【答案】 【问题 1】答案 【问题 2】答案 相关推荐 案例         阅读以下关于软件架构设计与评估的叙述,回答问题 1 和问题 2。 【题目】         某电子商务公司为正更好地管理用户,提升企业销售业绩,拟开发一套用户管理系统。该系统的基本功能是根据用户的消费级别、消费历史、信

总结如何成为“好”代码——读《重构:改善既有代码的设计》有感

读后感 说是“读后感”,其实并不是看得很仔细,尤其是各种代码例子,我基本上是跳过的。个人觉得,重构这件事上,关键是要能嗅出坏代码,知道什么是好代码,这样目标明确后,重构的手段其实是水到渠成的,唯一要注意的就是书中强调的:要以小步为单位稳打稳扎进行。 我所理解的“好”代码 核心目标 那么如何才是“好”代码?书中的答案是:“人们是否能轻而易举地修改”,而我觉得抽象层级更高的描述是:易于未来的工

数智转型,看JNPF如何成为企业的必备工具

随着数字化转型的浪潮席卷全球,企业面临着前所未有的挑战与机遇。在这一过程中,低代码开发平台作为一种创新的软件开发方式,正逐渐成为企业实现快速迭代和敏捷开发的关键工具。JNPF作为一款领先的低代码开发平台,凭借其强大的功能和灵活性,正成为企业数智转型的得力助手。 什么是低代码开发? 低代码开发是什么?低代码开发是一种通过图形化界面和配置化手段,显著减少传统编程工作量的开发方式。它允许开发

全倒装P1.2COB技术推动超微小间距市场,已成为行业主流产品

随着全倒装P1.2 COB(Chip on Board)技术的不断成熟与广泛应用,超微小间距市场正以前所未有的速度蓬勃发展,不仅巩固了其作为行业主流产品的地位,更引领着显示技术迈向新的高度。这项技术通过直接将LED芯片封装在基板上,极大地提升了像素密度与发光效率,使得显示屏在保持高分辨率的同时,还能实现更广的视角、更高的对比度和更低的能耗,为用户带来前所未有的视觉盛宴。 在此背景下,各大厂商纷纷

JS实现将两个相同的json对象合并成为一个新对象(对象中包含list或者其他对象)source===target(不破坏target的非空值)

重点申明一下, 这个方法 只限于两个完全一样的对象 ,不一样的对象请使用 下面的进行合并,   <script>let form = {name: 'liming', sex: '男'};let obj = {class: '一班', age: 15};console.log('before', form);Object.assign(form, obj); //该方法可以完成console.

AI模型:追求全能还是专精?-- 之5 “机器人”最终会成为“人类”的主导者吗?--答案是:不会!

Q1、先回顾一下:我们正在设计的是 一个变形机器人(变形金刚Transformers)。它是作为三种机器人(移动机器人Robot、代理机器人Agent和人形机器人Android )的共同原型(可以视为“祖先”--上述三者的祖传代码)来设计的。 Transformers原型( Anestor) 中 为支持产生规则的反向应用规定了 生成任何一种语言的产生规则的三个元级推理技术 等价超因子(=)、特化超

喜讯-惟客数据成为中国信息协会数据要素专委会首批常务理事单位

近日,中国信息协会数据要素专业委员会成立大会暨数据资源开发利用及场景创新主题研讨会在贵阳顺利举行,WakeData惟客数据作为受邀企业出席此次活动,并通过资格审核,成为数据要素专委会首批常务理事单位。 中国信息协会数据要素专委会旨在关注数据要素基础设施建设及市场化发展,探讨我国数据基础制度体系建设、数据要素标准规则制定、数据要素流通关键技术创新研究等重点议题;充分发挥数据要素的“乘数效应