社区讨论

Hack&请求撤下题解

P4316绿豆蛙的归宿参与者 2已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@m63ept8d
此快照首次捕获于
2025/01/19 17:20
去年
此快照最后确认于
2025/11/04 11:17
4 个月前
查看原帖
原帖。数据过水被暴力搞过去了,请求撤下暴力题解:题解1题解2
Hack1 的 in 的程序 & out:
CPP
//in:
#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("1.in","w",stdout);
	int n=100000,t=(n-2)/2,m=t*3;
	cout<<n<<" "<<m<<'\n';
	for(int i=2;i<=t+1;i++)
		cout<<"1 "<<i<<" 1\n";
	for(int i=2;i<=t+1;i++)
		cout<<i<<" "<<t+2<<" 1\n";
	for(int i=t+2;i<n;i++)
		cout<<i<<" "<<i+1<<" 1\n";
	return 0;
}
//out: 50001.00
原理如图,暴力程序每次从 11 开始抵达终点,但当 tt 接近 n2\dfrac n 2 时,时间复杂度约为 O(n24)=O(n2)O(\dfrac{n^2}4)=O(n^2),超时。
Hack2 的 in 的程序 & out:
CPP
//in:
#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("2.in","w",stdout);
	int n=100000,t=n/3,m=t*4;
	cout<<n<<' '<<m<<'\n';
	for(int i=1;i<=t;i++){
		cout<<i*3-2<<' '<<i*3-1<<" 1\n";
		cout<<i*3-1<<' '<<i*3+1<<" 1\n";
		cout<<i*3-2<<' '<<i*3<<" 1\n";
		cout<<i*3<<' '<<i*3+1<<" 1\n";
	}
	return 0;
}
//out: 66666.00
原理类似,用一堆分岔路增加递归数量,暴力程序的时间复杂度此时为 O(2n3)O(2^{\frac n 3})

回复

5 条回复,欢迎继续交流。

正在加载回复...