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…

qqp2011java_腾讯开放平台中实现QQ登陆的功能

昨天为自己的网站实现了QQ登陆的功能,虽然,没有进行绑定,但是在技术层面上来说,已经了解了一点腾讯开放平台的协议.具体什么是OAUTH,请您GG一下吧...关于腾讯的开放平台,最主要的就是参数一定不能多,能有的要有,不能有的一定不能有.不然提交过去,就会提示什么什么错了.最关键的…

LeetCode之Longest Common Prefix

1、题目 Write a function to find the longest common prefix string amongst an array of strings2、代码实现 package leetcode.chenyu.test;public class LongestCommonPrefix {public static void main(String[] args) {String [] ss {"12345", "3234&qu…

51CTO各位博友大家好!

一直浏览51CTO的技术文章&#xff0c;感谢大家提供这么多的技术文章&#xff0c;今天下决心与大家共同交流。转载于:https://blog.51cto.com/tuidaohu/1414099

java遍历字典_Java中的HashMap遍历和C#的字典遍历

Dictionary list new Dictionary();list.Add("d", 1);//3.0以上版本foreach (var item in list){Console.WriteLine(item.Key item.Value);}//KeyValuePairforeach (KeyValuePair kv in list){Console.WriteLine(kv.Key kv.Value);}//通过键的集合取foreach (stri…

git 使用详解-- tag打标签

Git 的标签管理。跟大多数的 VCS 工具一样&#xff0c;git 也有在历史状态的关键点“贴标签”的功能&#xff0c;一般人们用这个功能来标记发布点&#xff08;例如’v1.0′&#xff09;。列出git中现有标签 要想列出git中现有的所有标签&#xff0c;输入’git tag’命令运行即可…

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;而是想用一种开关的方式开放…

LeetCode之Single Number

1、题目 Given an array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory? Subscribe to see which companies asked…

C#中的数组

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

java怎么实现同步到微博功能_新浪微博信息站外同步的完整实现

最近遇到一个项目&#xff0c;其中需要将用户的微博信息与自己的网站项目上同步&#xff0c;好在新浪微博是提供了API的&#xff0c;大概查阅了一下&#xff0c;信息同步需要调用的是在关于授权机制说明中&#xff0c;新浪微博的API一共有两种验证机制&#xff0c;分别是&#…

33:计算分数加减表达式的值

33:计算分数加减表达式的值 查看提交统计提问总时间限制: 1000ms内存限制: 65536kB描述编写程序&#xff0c;输入n的值&#xff0c;求 1/1 - 1/2 1/3 - 1/4 1/5 - 1/6 1/7 - 1/8 ... (-1)n-11/n 的值。 输入输入一个正整数n。1 < n < 1000。输出输出一个实数&#x…

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

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

C/C++基本数据类型所占字节数

关于这个主要的问题&#xff0c;非常早曾经就非常清楚了&#xff0c;C标准中并没有详细给出规定那个基本类型应该是多少字节数&#xff0c;并且这个也与机器、OS、编译器有关&#xff0c;比方相同是在32bits的操作系统系&#xff0c;VC的编译器下int类型为占4个字节&#xff1b…

LeetCode之Find the Difference

1、题目 Given two strings s and t which consist of only lowercase letters. String t is generated by random shuffling string s and then add one more letter at a random position. Find the letter that was added in t. Example: Input: s "abcd" t &qu…

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…

试图加载格式不正确的程序

部署IIS的时候&#xff0c;会出现 System.BadImageFormatException: Could not load file or assembly xxx or one of its dependencies. 试图加载格式不正确的程序。 问题分析&#xff1a; 由于编译中有的是32位有的是64位 不一致 解决办法&#xff1a; 1.找到IIS该站点对应的…