您的位置:首页 > 健康 > 养生 > 西安市建设工程交易信息网_知乎有趣的网站_运用搜索引擎营销的案例_99个创意营销方案

西安市建设工程交易信息网_知乎有趣的网站_运用搜索引擎营销的案例_99个创意营销方案

2025/7/3 15:43:08 来源:https://blog.csdn.net/qq_35500719/article/details/146902026  浏览:    关键词:西安市建设工程交易信息网_知乎有趣的网站_运用搜索引擎营销的案例_99个创意营销方案
西安市建设工程交易信息网_知乎有趣的网站_运用搜索引擎营销的案例_99个创意营销方案

这里写自定义目录标题

  • 得分展示
  • 对象定义
  • 请求价值计算
  • 时间同步
  • 删除操作
  • 完整思路

得分展示

在这里插入图片描述
请添加图片描述

对象定义

// 将一个磁盘划分为多个基于标签聚合的区块
class Block{
public:int tag = 0;   // 区块标签int start_pos;int end_pos;int id;int use_size = 0;int v;// 为区块确定范围Block(int id, int v) : id(id), v(v){start_pos = (id - 1) * BLOCK_SIZE + 1;end_pos = min(id * BLOCK_SIZE, v);}
};class Object{
public:int disk[REP_NUM + 1];    // 对象的三个副本磁盘 idint *unit[REP_NUM + 1];   // 每个副本中对象块的存储单元索引int obj_id = 0;int obj_size = 0;int obj_tag = 0;int last_request_point = 0; // 挂接未完成请求链头bool is_del = false;bool *block_read_status = nullptr;Object() {for (int i = 1; i <= REP_NUM; i++){unit[i] = new int[MAX_DISK_SIZE];}}
};class Disk{
public:int id = 0;pair<int, int> item[MAX_DISK_SIZE];int p = 1;                        // 磁头的位置char last_action = '$';int last_token_cost = 0;int used_tokens = 0;int disk_size = 0;vector<pair<int, int>> done_request;vector<int> request;       // 这个磁盘中的请求vector<Block> disk_blocks;int block_group_num;void initBlock(int num, int v){block_group_num = num;disk_blocks.push_back(Block(0, 0));for (int i = 1; i <= block_group_num; i++){disk_blocks.push_back(Block(i, v));}}Disk(){memset(item, 0, sizeof(item));}int calculateReadToken(Disk &disk){if (disk.last_action != 'r'){return 64;}else{float token = disk.last_token_cost * 0.8f;token = ceil(token);return max(16, int(token));}}
};class Request{
public:int req_id = 0;int obj_id = 0;int prev_id = 0;int arri_time = 0;bool is_done = false;float score = 0.0f;bool *block_read_status = nullptr;
};

请求价值计算

float get_score(int x){if (x <= 10){return -0.005 * x + 1.0;}else if(x <= 105){return -0.01 * x + 1.05;}else{return -1.0;}
}

时间同步

void handle_timestamp(){string t;cin >> t >> current_time;cout << "TIMESTAMP " << current_time << endl;fflush(stdout);
}

删除操作

void delete_action(){// 1 读取删除的个数int n_delete;cin >> n_delete;// 2 读取并记录所有删除的 对象idvector<int> deletes(n_delete);for (int i = 0; i < n_delete; i++)cin >> deletes[i];// 3 计算所有的终止 读请求 idvector<int> abort_reqs;for (int id : deletes){int curr_id = objects[id].last_request_point;while (curr_id != 0){if (!requests[curr_id].is_done){abort_reqs.push_back(curr_id);requests[curr_id].is_done = true;}curr_id = requests[curr_id].prev_id;}}// 4 输出终止的请求个数cout << int(abort_reqs.size()) << endl;// 5 输出所有的终止请求 idfor (int req_id : abort_reqs){cout << req_id << endl;}// 6 执行删除操作for (int id : deletes){int curr_id = objects[id].last_request_point;while (curr_id != 0){if (!requests[curr_id].is_done){cout << curr_id << endl;}curr_id = requests[curr_id].prev_id;}for (int rep = 1; rep <= REP_NUM; rep++){int disk_id = objects[id].disk[rep];if (disk_id < 1 || disk_id > N)continue;do_object_delete(objects[id].unit[rep], disks[disk_id], objects[id].obj_size);}objects[id].is_del = true;}fflush(stdout);
}

完整思路

查看

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com