hdu 2648 Shopping

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2648

纯暴力的方法T_T。。。

如下:

  1 #include<cstdio>
  2 #include<cstdlib>
  3 #include<string>
  4 #include<iostream>
  5 #include<algorithm>
  6 typedef char State[35];
  7 char *target = "memory";
  8 const int Max_N = 11000;
  9 struct Node{
 10     State name;
 11     int v, s;
 12     Node *ch[2];
 13     inline void
 14     set(int _v = 0, char *src = "", int _s = 0,Node *p = NULL){
 15         ch[0] = ch[1] = p;
 16         v = _v, s = _s, strcpy(name, src);
 17     }
 18     inline void push_up(){
 19         s = ch[0]->s + ch[1]->s + 1;
 20     }
 21     inline int cmp(char *src) const{
 22         if (0 == strcmp(src, name)) return -1;
 23         else if (-1 == strcmp(src, name)) return 0;
 24         return 1;
 25     }
 26 };
 27 struct SizeBalanceTree{
 28     Node *tail, *null, *root;
 29     Node stack[Max_N];
 30     void init(){
 31         tail = &stack[0];
 32         null = tail++;
 33         null->set();
 34         root = null;
 35     }
 36     inline Node *newNode(char *name, int v){
 37         Node *p = tail++;
 38         p->set(v, name, 1, null);
 39         return p;
 40     }
 41     inline void rotate(Node* &x, int d){
 42         Node *k = x->ch[!d];
 43         x->ch[!d] = k->ch[d];
 44         k->ch[d] = x;
 45         k->s = x->s;
 46         x->push_up();
 47         x = k;
 48     }
 49     inline void Maintain(Node* &x, int d){
 50         if (x->ch[d] == null) return;
 51         if (x->ch[d]->ch[d]->s > x->ch[!d]->s){
 52             rotate(x, !d);
 53         } else if (x->ch[d]->ch[!d]->s > x->ch[!d]->s){
 54             rotate(x->ch[d], d), rotate(x, !d);
 55         } else {
 56             return;
 57         }
 58         Maintain(x, 0), Maintain(x, 1);
 59     }
 60     inline void insert(Node* &x, char *name, int v){
 61         if (x == null){
 62             x = newNode(name, v);
 63             return;
 64         } else {
 65             x->s++;
 66             int d = x->cmp(name);
 67             insert(x->ch[d], name, v);
 68             x->push_up();
 69             Maintain(x, d);
 70         }
 71     }
 72     inline Node *Modify(Node *x, char *name){
 73         if (x == null) return null;
 74         int d = x->cmp(name);
 75         if (-1 == d) return x;
 76         else return Modify(x->ch[d], name);
 77     }
 78     inline void insert(char *str, int v = 0){
 79         insert(root, str, v);
 80         return;
 81     }
 82     inline void Modify(char *str, int v){
 83         Node* ret = Modify(root, str);
 84         ret->v += v;
 85     }
 86     inline void dfs(Node *x, int v, int &ans){
 87         if (x != null){
 88             dfs(x->ch[0], v, ans);
 89             if (x->v > v) ans++;
 90             dfs(x->ch[1], v, ans);
 91         }
 92     }
 93     inline void query(){
 94         int cnt = 0, ans = 0;
 95         int v = Modify(root, target)->v;
 96         dfs(root, v, ans);
 97         printf("%d\n", ans + 1);
 98     }
 99 }sbt;
100 int main(){
101 #ifdef LOCAL
102     freopen("in.txt", "r", stdin);
103     freopen("out.txt", "w+", stdout);
104 #endif
105     char buf[100];
106     int n, m, val;
107     while (~scanf("%d", &n)){
108         sbt.init();
109         for (int i = 0; i < n; i++){
110             scanf("%s", buf);
111             sbt.insert(buf);
112         }
113         scanf("%d", &m);
114         while (m--){
115             for (int i = 0; i < n; i++){
116                 scanf("%d %s", &val, buf);
117                 sbt.Modify(buf, val);
118             }
119             sbt.query();
120         }
121     }
122     return 0;
123 }
View Code

 

转载于:https://www.cnblogs.com/GadyPu/p/4472260.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows导出所有计划任务方法

windows计划任务的命令为&#xff1a;schtasksSCHTASKS /parameter [arguments]描述:允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任务。参数列表:/Create 创建新计划任务。/Delete 删除计划任务。/Query 显示所有计划任务。…

C# 使用多个异步方法

在一个异步方法中&#xff0c;可以调用一个或多个异步方法。如何编写代码&#xff0c;取决于一个异步方法的结果是否依靠于另一个异步方法。01 按顺序调用异步方法使用 await 关键字可以调用每个异步方法。在有些情况下&#xff0c;如果一个异步方法依赖另一个异步方法的结果&a…

Nova虚拟机启动提示libvirtError

OpenStack自动化安装基本折腾完毕&#xff0c;装一次大概也就10分钟&#xff0c;但是装完后今天我的虚拟机起不来&#xff0c;经过查找log发 现如下图提示&#xff1a; 已经到这里&#xff0c;说明已经过了nova-sheduler那一关&#xff0c;跟踪一下代码&#xff0c;也正是在调用…

ASP.NET Core使用功能开关控制路由访问

前言在前面的文章&#xff0c;我们介绍了使用Middleware有条件地允许访问路由&#xff08;《ASP.NET Core使用Middleware有条件地允许访问路由》&#xff09;。而对于一些试验性的功能&#xff0c;我们并不希望用密码去控制是否允许访问&#xff0c;而是想用一种开关的方式开放…

C#中的数组

欢迎您成为我的读者&#xff0c;希望这篇文章能给你一些帮助。前言前面的文章和大家一起看了C#中的异常&#xff0c;今天一起学习下C#中最基本的数据结构&#xff0c;数组的用法。数组实际上是由一个变量名称表示的一组同类型的数据元素。每个元素通过变量名称和一个或多个方括…

如何打卡后缀为3ds的文件

打开.3DS文件 3DS文件怎么打开&#xff1f; 用它吧&#xff1a;a3dsviewer&#xff0c;顾名思义&#xff0c;一个3D文件浏览工具&#xff0c;为用户提供一个快速和简单的3DS文件浏览器很容易。 这里是一些主要特点的“a3dsviewer”&#xff1a; 将3DS文件的POVRay格式。 输出的…

ASP.NET Core使用功能开关控制路由访问(续)

前言在前面的文章&#xff0c;我们介绍了使用功能开关控制路由访问。但其实我们使用了2个条件做的判断&#xff1a;var isDebugEndpoint context.Request.Path.Value.Contains("/test"); var debugEndpoint await _featureManager.IsEnabledAsync("ForbiddenD…

如何使用CDR智能填充工具

使用智能填充工具可以为任意的闭合区域填充颜色并设置轮廓。与其他填充工具不同&#xff0c;智能填充工具仅填充对象&#xff0c;它检测到区域的边缘并创建一个闭合路径&#xff0c;因此可以填充区域。例如&#xff0c;智能填充工具可以检测多个对象相交产生的闭合区域&#xf…

java对象引用出错_“Java有值传递和引用传递”为什么错了?

前言初学Java的时候&#xff0c;老师在课堂上说“Java有值传递和引用传递”&#xff0c;但网上“Java只有值传递”的呼声很高。本人在查找资料的过程中&#xff0c;在这两个说法之间反复横跳。经过本人的整理后&#xff0c;其实还真的是Java只有值传递。什么是值传递&#xff1…

程序员生存之道-教你如何在丛林中捕获食物

文章目录 &#x1f4a5; 序言&#x1f423; 躺&#x1f95d; 从零到一还是从零到100&#xff1f;&#x1f344; 螺丝钉文化&#x1f354; 价值分析&#x1f353; 长期主义者&#xff1f;&#x1f96c; 何为顺其自然&#xff1f;&#x1f308; 总结 &#x1f4a5; 序言 嗨&#…

微软发文庆祝 .NET 诞生 20 周年纪念日!

技术编辑&#xff1a;MissD丨发自 思否编辑部公众号&#xff1a;SegmentFault刚刚过去的“情人节”里&#xff0c;.NET 团队为庆祝 .NET 社区诞生 20 周年而举办了一场盛大的活动。没错&#xff01;.NET 于 2002 年 2 月 13 日与 Visual-Studio 一起推出&#xff0c;本月终于迎…

根据文件扩展名得到文件对应该类型Icon方法

2019独角兽企业重金招聘Python工程师标准>>> 根据文件扩展名得到文件对应该类型Icon方法 package com.fleety.util; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.…

Asp-Net-Core开发笔记:在docker部署时遇到一个小坑

哦吼之前刚说了尝试了使用docker来部署AspNetCore应用&#xff08;Asp.Net Core部署&#xff1a;早知道&#xff0c;还是docker!以及一点碎碎念&#xff09;&#xff0c;结果这才刚上班就遇到问题了 …我这项目用的数据库是Oracle&#xff0c;之前直接运行没啥问题&#xff0c;…

lasso特征选择python_转:结合Scikit-learn介绍几种常用的特征选择方法-2

4.2 平均精确率减少 Mean decrease accuracy另一种常用的特征选择方法就是直接度量每个特征对模型精确率的影响。主要思路是打乱每个特征的特征值顺序&#xff0c;并且度量顺序变动对模型的精确率的影响。很明显&#xff0c;对于不重要的变量来说&#xff0c;打乱顺序对模型的精…

Mac Generating Pods project Abort trap: 6

为什么80%的码农都做不了架构师&#xff1f;>>> 为项目添加cocoapods如果产生此种错误时,主要有以下几点原因: 1,cocoapods版本过低: 打开终端在终端输入:pod --version,目前最新版本是1.2.0(2017年3月),如果发现版本过低,则可以在终端输入以下命令:gem install co…

svn 服务器搭建

2019独角兽企业重金招聘Python工程师标准>>> Svn搭建 1. Linux 搭建 YUM 服务器 [rootlocalhost conf]# yum install -y subversion 2.验证安装版本&#xff1a; [rootlocalhost conf]# svnserve –version 3.创建SVN 版本库 [rootlocalhost conf]# mkdir /v…

C# 使用 ValueTasks

C# 7 带有更灵活的 await 关键字&#xff1b;它现在可以等待任何提供 GetAwaiter 方法的对象。一种可用于等待的新类型是 ValueTask。与 Task 类相反&#xff0c;ValueTask 是一个结构。这具有性能优势&#xff0c;因为 ValueTask 在堆上没有对象。与异步方法调用相比&#xff…

Electron - 创建跨平台的桌面客户的应用程序

Electron 框架的前身是 Atom Shell&#xff0c;可以让你写使用 JavaScript&#xff0c;HTML 和 CSS 构建跨平台的桌面应用程序。它是基于io.js 和 Chromium 开源项目&#xff0c;并用于在 Atom 编辑器中。Electron 是开源的&#xff0c;由 GitHub 维护&#xff0c;有一个活跃的…

Cognos TM1_10.1.1服务端配置

场景&#xff1a;本文继Cognos TM1_10.1.1服务端安装 之后&#xff0c;简单的说一下本人对简单配置的拙见,确保服务端在安装过程一切正常&#xff0c;成功安装。 1&#xff1a;进入TM的Cognos Configuration 2&#xff1a;如下图&#xff0c;选中环境&#xff0c;这里可以看出…

java黄油刀_一篇文章玩转ButterKnife,让代码更简洁

前言话说&#xff0c;Android开发的兄弟们都知道&#xff0c;每次初始化控件&#xff0c;设置相应的事件&#xff0c;写的那点过程多而且恶心。我们先一块回顾下不堪的曾经~那些年&#xff0c;我们是这样初始化控件&#xff1a;// 每次的习惯上来写一个initView()方法tvContent…