模板:基本算法有关

模板很重要!!!

模板是暴力的前提

暴力是骗分的重点

骗分是蒟蒻的目标

欧耶!

当你有了模板,暴力就信手拈来

当你有了模板,部分分手到擒来

当你有了模板,所有的问题都不再是问题

你还在为了考试时忘记模板而慌张吗?

你还在为正解不会,暴力写挂而烦恼吗?

别再烦恼!别再慌张!

手握模板,享受理想人生!

咳咳,以上太沙雕了,请跳过

注:以下都为手打

快速幂

O ( l o g 2 y ) O(log_2y) O(log2y)

inline ll Pow(ll x, ll y)
{
	ll res = 1;
	while (y)
	{
		if (y & 1) res = res * x % mod;
		y >>= 1;
		x = x * x % mod;
	}
	return res;
}
快速乘

O ( l o g 2 y ) O(log_2y) O(log2y)

inline ll mul(ll x, ll y)
{
	ll res = 0;
	while (y)
	{
		if (y & 1) res = (res + x) % mod;
		y >>= 1;
		x = (x + x) % mod;
	}
	return res;
}
组合数/排列数
inline ll Pow(ll x, ll y)
{
	ll res = 1;
	while (y)
	{
		if (y & 1) res = res * x % mod;
		y >>= 1;
		x = x * x % mod;
	}
	return res;
}
inline void pre_work()
{
	fac[0] = 1;
	for (int i = 1; i <= n; i++)
	fac[i] = fac[i - 1] * i % mod;
	inv[n] = Pow(fac[n], mod - 2);
	for (int i = n - 1; i >= 0; i--)
	inv[i] = inv[i + 1] * (i + 1) % mod;
}
inline ll C(int x, int y)
{
	if (x < 0 || y < 0 || x < y) return 0;
	return fac[x] * inv[y] % mod * inv[x - y] % mod;
}
inline ll A(int x, int y)
{
	if (x < 0 || y < 0 || x < y) return 0;
	return fac[x] * inv[x - y] % mod;
}
二分

O ( n l o g n ) O(nlogn) O(nlogn)

while (l <= r)
{
    int mid = (l + r) >> 1;
    if (check(mid)) l = mid + 1;
    else r = mid - 1;
}
printf("%d\n", r);
while (l < r)
{
    int mid = (l + r) >> 1;
    if (check(mid)) r = mid;
    else l = mid + 1;
}
printf("%d\n", l);
while (l + 1 < r)
{
    int mid = (l + r) >> 1;
    if (check(mid)) r = mid;
    else l = mid;
}
if (check(l)) printf("%d\n", l);
else printf("%d\n", r);
while (l <= r)
{
    int mid = (l + r) >> 1;
    if (check(mid)) ans = mid, l = mid + 1;
    else r = mid - 1;
}
printf("%d\n", ans);

具体操作看题意

离散化
int a[N], b[N], cnt, n;
map <int, int> s;
inline void discrete()
{
	cnt = 0;
	for (int i = 1; i <= n; i++)
	{
		scanf("%d", &a[i]);
		b[i] = a[i];
	}
	sort(b + 1, b + 1 + n);
	for (int i = 1; i <= n; i++)
	if (!s[b[i]]) s[b[i]] = ++cnt;
}	
求逆序对数(归并,树状数组)

O ( n l o g n ) O(nlogn) O(nlogn)

//归并排序
inline void merge(int l, int mid, int r)
{
	int i = l, j = mid + 1;
	for (int k = l; k <= r; k++)
	if (j > r || i <= mid && a[i] <= a[j]) b[k] = a[i++];
	else 
	{
		b[k] = a[j++];
		cnt += mid - i + 1;
	}
	for (int k = l; k <= r; k++)
	a[k] = b[k];
}
inline void gb()
{
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
	scanf("%d", &a[i]);
	cnt = 0;
	merge(1, (1 + n) / 2, n);
	printf("%d\n", cnt);
}

//树状数组
#define lowbit(x) x & (-x)
inline int ask(int x)
{
	int res = 0;
	for (; x; x -= lowbit(x)) res += c[x];
	return res;
}
inline void add(int x, int y)
{
	for (; x <= N; x += lowbit(x)) c[x] += y;
}
inline void BIT()
{
	for (int i = n; i; i--)
	{
		ans += ask(a[i] - 1);
		add(a[i], 1);
	}
	printf("%d\n", ans);
}
ST算法

O ( n l o g n ) O(nlogn) O(nlogn)

inline void ST_prework()
{
	for (int i = 1; i <= n; i++)
	f[i][0] = a[i];
	int t = log(n) / log(2) + 1;
	for (int j = 1; j < t; j++)
	for (int i = 1; i <= n - (1 << j) + 1; i++)
	f[i][j] = max(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);
}
inline int ST_query(int l, int r)
{
	int k = log(r - l + 1) / log(2);
	return max(f[l][k], f[r - (1 << k) + 1][k]);
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
以下是基于神经网络的单分类算法的代码模板: ``` # 导入所需库 import numpy as np import pandas as pd import tensorflow as tf from sklearn.model_selection import train_test_split # 读取数据 data = pd.read_csv('data.csv') X = data.drop('target', axis=1).values y = data['target'].values # 划分数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 定义模型 model = tf.keras.Sequential([ tf.keras.layers.Dense(64, input_shape=(X_train.shape[1],), activation='relu'), tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dense(1, activation='sigmoid') ]) # 编译模型 model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_test, y_test)) # 使用模型进行预测 y_pred = model.predict(X_test) # 对模型进行评估 score = model.evaluate(X_test, y_test) print('Test loss:', score[0]) print('Test accuracy:', score[1]) ``` 解释: 1. 导入所需库:我们需要导入 numpy、pandas、tensorflow 和 scikit-learn 库。 2. 读取数据:我们使用 pandas 库来读取数据,并将特征和标签存储在 X 和 y 中。 3. 划分数据集:我们使用 train_test_split 函数将数据集划分为训练集和测试集。 4. 定义模型:我们使用 Sequential 类来定义一个神经网络模型,并添加三个全连接层。第一个和第二个层都使用 ReLU 激活函数,最后一层使用 sigmoid 激活函数,这是因为我们需要将输出转换为概率。 5. 编译模型:我们使用 compile 方法编译模型,选择 Adam 优化器和二元交叉熵损失函数,并指定要计算的指标为准确性。 6. 训练模型:我们使用 fit 方法来训练模型,传入训练数据和标签,指定训练周期数和批次大小,并使用测试数据进行验证。 7. 使用模型进行预测:我们使用 predict 方法来对测试数据进行预测,并将结果存储在 y_pred 中。 8. 对模型进行评估:我们使用 evaluate 方法来对模型进行评估,并输出测试损失和准确性。 注意:这只是一个基本模板,您需要根据数据集的特征和要解决的问题来调整模型的结构和参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值