算法训练--数字盒子

/*
题目:对于一个盒子S,要求进行插入以及删除操作,输出是否操作成功 数字的范围:10^5(60%)~10^18
*/
#include <bits/stdc++.h>
using namespace std;
//Mod:哈希函数的模数
//table:哈希表
const int Mod = 1000003;
vector<ll> table[Mod];
typedef long long ll;
//这是一个哈希表
int Hash(ll x) {
return x % Mod;
}
bool check(int op,ll x){
int h = Hash(x);//求出x的哈希值
//在哈希表中找到x
vector<ll>::iterator ptr = table[h].end();
for(vector<ll>::iterator it = table[h].begin();it != table[h].end();it ++){
if(x == it){
ptr = it;
break;
}
}
if(op == 1){//如果op为1,那么执行插入操作
if(ptr == table[h].end()){ //什么情况下能成功插入呢?
table[h].push_back(x);
return 1;
}
return 0;
}else{ //如果op为2,那么就执行删除操作
if(ptr != table[h].end()){ //什么情况下能删除成功呢?
*ptr = table[h].back();//back:返回当前vector容器中末尾元素的引用。
table[h].pop_back();
return 1;
}
return 0;
}
}

原文地址:https://www.cnblogs.com/drcm/p/9941986.html

时间: 2024-08-03 04:29:06

算法训练--数字盒子的相关文章

算法训练 数字三角形

时间限制:1.0s   内存限制:256.0MB 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,…99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入 573 88 1 02 7 4 44 5 2 6 5 样例输出 30 import ja

算法训练 数字三角形(DP)

问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,…99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入 573 88 1 02 7 4 44 5 2 6 5 样例输出 30 从下往上进行计算就好了,还可以用DP的方法来解 #include<

蓝桥算法训练 数字三角形 ALGO-124(数塔,经典dp)(hdu 2084)

问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,…99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入 573 88 1 02 7 4 44 5 2 6 5 样例输出 30 #include <algorithm> #include

蓝桥杯 算法训练 ALGO-124 数字三角形

算法训练 数字三角形 时间限制:1.0s   内存限制:256.0MB 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,-99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入 573 88 1 02 7 4 44 5 2 6 5 样例输出 3

16-算法训练 数字三角形

http://lx.lanqiao.cn/problem.page?gpid=T312 算法训练 数字三角形 时间限制:1.0s   内存限制:256.0MB 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形中的数字为整数0,1,…99: . (图3.1-1) 输入格式 文件中首先读到的是三角形的行数. 接下来描述整个三角形 输出格式 最大总

蓝桥杯 算法训练 ALGO-129 特殊的数字四十

算法训练 特殊的数字四十 时间限制:1.0s   内存限制:256.0MB 特殊的数字四十 问题描述 1234是一个非常特殊的四位数,因为它的各位数之和为10,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制数.每个数字占用一行. 示例代码: 1 public class Main { 2 public static void main(String[] args) { 3 for(int i = 1000; i <= 9999; i++){ 4 int a =

蓝桥杯——算法训练之乘积最大

问题描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加.活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大. 同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子: 有一个数字串:312, 当N=3,K=1时

蓝桥杯 算法训练 ALGO-126 水仙花

算法训练 水仙花 时间限制:1.0s   内存限制:256.0MB 水仙花数 问题描述 判断给定的三位数是否 水仙花 数.所谓 水仙花 数是指其值等于它本身 每位数字立方和的数.例 153 就是一个 水仙花 数. 153=13+53+33 输入格式 一个整数. 输出格式 是水仙花数,输出"YES",否则输出"NO"(不包括引号) 样例输入 123 样例输出 NO 数据规模和约定 一个三位的整数,否则输出"NO" 示例代码: 1 import ja

蓝桥杯 算法训练 ALGO-156 表达式计算

算法训练 表达式计算 时间限制:1.0s   内存限制:256.0MB 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的值. 样例输入 1-2+3*(4-5) 样例输出 -4 数据规模和约定 表达式长度不超过100,表达式运算合法且运算过程都在int内进行. 题目解析: 运算优先级: 括号 → 乘除 → 加减 例如 1-2+3*(4-5) (1)计算(4-5),表达式变为  1-2+3*-1 (2