算法竞赛入门经典 每日一题(UVa10966)------你值得尝试

UVA-230《算法竞赛入门经典》 模拟图书管理系统,首先输入若干图书的标题和作者(标题各不相同,以END结束),然后是若干指令:borrow指令表示借书,return指令表示还书,shelve指令表示把所以已归还但还没有上架的图书排序后插入书架并输入图书标题和插入位置(可能是第一本书或者某本书的后面),图书排序的方法是先按作者从小到大排序,再按标题从小到大排序。在处理第一条指令前,你应当先将所有图书按照这种方式排序。 阅读详情

 

typedef unsigned long long LL;
typedef vector<int> VI;
typedef vector<string> VS;

const string ERROR_BAD_USAGE = "bad usage\n";
const string ERROR_NO_COMMAND = "no such command\n";
const string ERROR_DIR_NOT_FOUND = "path not found\n";
const string ERROR_DIR_FOUND = "a directory with the same name exists\n";
const string ERROR_DIR_OR_FILE_FOUND = "file or directory with the same name exists\n";
const string ERROR_FILE_NOT_FOUND = "file not found\n";
const string ERROR_EMPTY = "[empty]\n";


VS split(string s, char delim=' ') {
  if(delim != ' ')
    for(int i = 0; i < s.length(); i++) if(s[i] == delim) s[i] = ' ';
  stringstream ss(s);
  VS ret;
  string x;
  while(ss >> x) ret.push_back(x);
  return ret;
}


int get_int(string s, LL& v) {
  stringstream ss(s);
  if(ss >> v) return 1;
  return 0;
}

string trim(string s) {
  int L, R;
  for(L = 0; L < s.length(); L++) if(!isspace(s[L])) break;
  for(R = s.length()-1; R > L; R--) if(!isspace(s[R])) break;
  return s.substr(L, R-L+1);
}

struct File {
  int parent;
  string name;
  string fullpath;
  LL size;
  bool dir;
  bool hidden;
  vector<int> subdir;
  File(int parent=0, string name="", LL size=0, bool dir=true, bool hidden=false):parent(parent),name(name),size(size),dir(dir),hidden(hidden) {}
};

vector<File> fs;
int curDir;


bool comp(const int& x, const int& y) {
  return fs[x].fullpath < fs[y].fullpath;
}


bool comps(const int& x, const int& y) {
  return fs[x].size < fs[y].size || (fs[x].size == fs[y].size && fs[x].fullpath < fs[y].fullpath);
}


bool compS(const int& x, const int& y) {
  return fs[x].size > fs[y].size || (fs[x].size == fs[y].size && fs[x].fullpath < fs[y].fullpath);
}


int findFileInDirectory(int node, string name) {
  VI& subdir = fs[node].subdir;
  for(int i = 0; i < subdir.size(); i++)
    if(fs[subdir[i]].name == name) return subdir[i];
  return -1;
}


string joinPath(string path, string name) {
  if(path[path.size()-1] != '/') path += "/";
  return path + name;
}


string getAbsolutePath(int node) {
  if(!node) return "/";
  return joinPath(getAbsolutePath(fs[node].parent), fs[node].name);
}


int createFileInDirectory(int node, string name, LL size, bool dir, bool hidden) {
  fs.push_back(File(node, name, size, dir, hidden));
  int x = fs.size()-1;
  fs[x].fullpath = joinPath(getAbsolutePath(node), name);
  fs[node].subdir.push_back(x);
  return x;
}


int getDirNode(string path) {
  if(!path.length()) return curDir;
  int node = curDir;
  if(path[0] == '/') node = 0;
  VS dirs = split(path, '/');
  for(int i = 0; i < dirs.size(); i++) {
    if(dirs[i] == ".") continue;
    else if(dirs[i] == "..") {
      if(!node) return -1;
      node = fs[node].parent;
    } else {
      int x = findFileInDirectory(node, dirs[i]);
      if(x == -1 || !fs[x].dir) return -1;
      node = x;
    }
  }
  return node;
}


int isValidFileName(string name) {
  if(name.length() == 0 || name.length() > 255) return 0;
  if(name == "." || name.find("..") != string::npos) return 0;
  for(int i = 0; i < name.length(); i++)
    if(!isdigit(name[i]) && !isalpha(name[i]) && name[i] != '.') return 0;
  return 1;
}


int splitFileName(string fullpath, string& filename) {
  int n = fullpath.length();
  int x = n;
  for(int i = fullpath.length()-1; i >= 0; i--) {
    if(fullpath[i] == '/') { // the last '/'
      filename = fullpath.substr(i+1);
      string dir = fullpath.substr(0, i);
      if(dir == "") return 0;
      return getDirNode(dir);
    }
  }
  filename = fullpath;
  return curDir;
}


void newSession() { fs.clear(); fs.push_back(File()); curDir = 0; }


void findFileEx(VI& out, int node, string filename, bool recur, bool hidden, bool f=true, bool d=true) {
  VI& subdir = fs[node].subdir;
  for(int i = 0; i < subdir.size(); i++) {
    int x = subdir[i];
    if(fs[x].dir && recur) findFileEx(out, x, filename, recur, hidden, f, d);
    if(fs[x].hidden && !hidden) continue;
    if(filename == "" || fs[x].name == filename) {
      if((fs[x].dir && d) || (!fs[x].dir && f)) out.push_back(x);
    }
  }
}


string formatFiles(const VI& out) {
  stringstream ss;
  for(int i = 0; i < out.size(); i++) {
    ss << fs[out[i]].fullpath << " " << fs[out[i]].size;
    if(fs[out[i]].hidden) ss << " " << "hidden";
    if(fs[out[i]].dir) ss << " " << "dir";
    ss << "\n";
  }
  return ss.str();
}


bool parseArgs(VS params, VS& args, bool* sw, LL &v) {
  LL v2;
  for(int i = 0; i < params.size(); i++)
    if(params[i][0] == '-') {
      if(isalpha(params[i][1])) sw[params[i][1]] = 1;
      else if(get_int(params[i].substr(1), v2)) v = v2;
      else return false;
    }
    else args.push_back(params[i]);
  return true;
}


string runCommand(const VS& cmd) {
  VS params(cmd.begin()+1, cmd.end()), args;
  bool sw[256];
  LL v = 0;
  memset(sw, 0, sizeof(sw));
  if(!parseArgs(params, args, sw, v)) return ERROR_BAD_USAGE;
  
  int node;
  string filename;
  if(cmd[0] == "cd") {
    if(args.size() != 1) return ERROR_BAD_USAGE;
    if((node = getDirNode(args[0])) == -1) return ERROR_DIR_NOT_FOUND;
    curDir = node;
    return "";
  } else if(cmd[0] == "touch") {
    if(args.size() != 1) return ERROR_BAD_USAGE;
    if((node = splitFileName(args[0], filename)) == -1) return ERROR_DIR_NOT_FOUND;
    if(!isValidFileName(filename)) return ERROR_BAD_USAGE; //!

    int x = findFileInDirectory(node, filename);
    if(x != -1 && fs[x].dir) return ERROR_DIR_FOUND;
    if(x == -1) createFileInDirectory(node, filename, v, false, sw['h']);
    else { fs[x].size = v; fs[x].hidden = sw['h']; }
    return "";
  }
  if(cmd[0] == "mkdir") {
    if(args.size() != 1) return ERROR_BAD_USAGE;
    if((node = splitFileName(args[0], filename)) == -1) return ERROR_DIR_NOT_FOUND;
    if(!isValidFileName(filename)) return ERROR_BAD_USAGE;

    int x = findFileInDirectory(node, filename);
    if(x != -1) return ERROR_DIR_OR_FILE_FOUND;
    createFileInDirectory(node, filename, 0, true, sw['h']);
    return "";
  }
  if(cmd[0] == "find") {
    if(args.size() != 1) return ERROR_BAD_USAGE;
    if((node = splitFileName(args[0], filename)) == -1) return ERROR_DIR_NOT_FOUND;
    
    VI out;
    findFileEx(out, node, filename, sw['r'], sw['h']);
    if(out.size() == 0) return ERROR_FILE_NOT_FOUND;
    sort(out.begin(), out.end(), comp);
    return formatFiles(out);
  }
  if(cmd[0] == "ls") {
    if(args.size() > 1) return ERROR_BAD_USAGE;
    node = curDir;
    if(args.size() == 1) if((node = getDirNode(args[0])) == -1) return ERROR_DIR_NOT_FOUND;
    
    VI out;
    findFileEx(out, node, "", sw['r'], sw['h'], !sw['d'], !sw['f']);
    if(out.size() == 0) return ERROR_EMPTY;
    if(sw['s']) sort(out.begin(), out.end(), comps);
    else if(sw['S']) sort(out.begin(), out.end(), compS);
    else sort(out.begin(), out.end(), comp);
    return formatFiles(out);
  }
  if(cmd[0] == "pwd") {
    if(args.size() != 0) return ERROR_BAD_USAGE;
    return getAbsolutePath(curDir) + "\n";
  }
  if(cmd[0] == "exit") {
    if(args.size() != 0) return ERROR_BAD_USAGE;
    newSession();
    return "";
  }
  if(cmd[0] == "grep") return ERROR_BAD_USAGE;
  return ERROR_NO_COMMAND;
}


string runCommandLine(string cmd) {
  
  int n = cmd.length();
  int start = 0, inq = 0;
  VS commands;
  for(int i = 0; i <= n; i++)
    if(i == n || (cmd[i] == '|' && !inq))  { commands.push_back(cmd.substr(start, i-start)); start = i+1; }
    else if(cmd[i] == '"') inq = !inq;
  if(!commands.size()) return "";

  
  string lastoutput = runCommand(split(commands[0]));
  string line, s, ret;
  
  for(int i = 1; i < commands.size(); i++) {
    stringstream ss(commands[i]);
    if(!(ss >> s) || s != "grep") return ERROR_BAD_USAGE;
    getline(ss, s);
    s = trim(s);
    if(s.length() < 2 || s[0] != '"' || s[s.length()-1] != '"') return ERROR_BAD_USAGE;
    s = s.substr(1, s.length()-2);
    
    stringstream input(lastoutput);
    ret = "";
    while(getline(input, line)) {
      if(line.find(s) != string::npos) ret += line + "\n";
    }
    lastoutput = ret;
  }
  return lastoutput;
}

int main() {
  string cmd;
  newSession();
  while(getline(cin, cmd)) {
    cout << runCommandLine(cmd);
  }
  return 0;
}

告别第三方工具!用Windows自带蓝牙玩转BLE设备调试(保姆级图文教程) 本文详细介绍了如何利用Windows自带的蓝牙功能进行BLE设备调试,无需第三方工具。从硬件准备、系统配置到实战操作,提供保姆级图文教程,帮助开发者高效完成设备发现、数据交互等全流程调试工作。特别适合物联网开发者和智能硬件爱好者。 阅读详情

相关推荐

高通410随身WiFi刷OpenWRT与Debian双系统一键集成方案

本文详细介绍高通410随身WiFi设备刷入OpenWRT与Debian双系统的一键集成方案。通过虎王工作室提供的一键刷机包,用户可轻松实现双系统部署,兼顾OpenWRT的网络功能与Debian的完整应用服务,适用于网络加速、服务器部署等多种场景,并提供了硬件资源分配与系统切换的实用指南。

docker7nomad的博客 1137

转载:ACM题目难度分级列表

# ID Title Solved by Difficulty 1 100 The 3n + 1 problem 26485 1 2 102 Ecological Bin Packing 10608 2 3 10071 Back to High School Physics 9554 3 4 10055 Has...

weixin_30781775的博客 4981

【工具使用】Keil常用的调试操作整理介绍

2、当选择了非0级优化时,调试可能会变得困难,具体表现在断点调试。该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的置。:如果是在C语言窗口中,则是按单条语句执行,与单步调试不同的是,遇到函数不会进入函数内部,而是直接全速运行函数,并跳到下一条语句。但我的Keil软件中无法显示这个视图,并且通过修改系统试图,调试时,点击打开系统视图发生了闪退的现象,目前能想到的原因是:重新安装Keil,安装最新版本。

MEYOU_Cc 不吃香菜! 1万+

程序员常用的经典算法和OJ网站

一.Online Judge简介: Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++、Pascal)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等。用户程序执行的结果将被Onl...

墨溟淇淼 3460

基于 Quest 摄像头数据开发的原理介绍【Unity Meta Quest MR 开发教程】

比如想在识别到的现实物体上叠加虚拟物体,需要知道这个现实物体在 Unity 的世界坐标下的哪个位置,是带有 x,y,z 三个轴的数据的。而 WebCamTexture 捕捉到的图像只是个 2D 的平面,没有三维世界的深度信息,我们通过物体识别算法识别到的物体坐标只是在这个 2D 平面上的一个屏幕坐标,可以理解为 Quest 拍摄了一张照片,我们识别到这张照片上的某个像素点为需要识别的现实物体的中心。是不是看起来比较复杂?Quest 的相机访问功能是在安卓的。

qq_46044366的博客 2104

基于YOLOv13+CBAM注意力机制

本教程详细介绍了CBAM注意力机制的原理及其在YOLOv13中的集成方法。CBAM通过通道注意力和空间注意力两个模块,动态调整特征权重以增强模型性能。通道模块利用池化操作和共享MLP生成通道权重,空间模块则通过池化和卷积生成空间权重。教程提供了在YOLOv13中实现CBAM的具体步骤,包括模块代码定义、模型配置修改等关键环节,帮助开发者在目标检测任务中提升模型表现。

FJN110的博客 305

阿里云Ecs云服务搭建vulhub靶场环境(2023完整教程)

ECS是指云服务器ECS,ECS是阿里云服务器的英文名,ECS英文全程为Elastic Compute Service即弹性计算服务,ECS是一种安全可靠、弹性可伸缩的云计算服务。

weixin_51387754的博客 1274

基于STM32F4XX 、HAL库的GXHT30C温湿度传感器驱动应用C语言程序设计

define GXHT30C_STATUS_WRITE_CHK (1 << 0) // 写数据校验状态。#define GXHT30C_STATUS_HUMI_TRACK (1 << 11) // 湿度跟踪报警。#define GXHT30C_STATUS_TEMP_TRACK (1 << 10) // 温度跟踪报警。#define GXHT30C_STATUS_CMD_STATUS (1 << 1) // 命令执行状态。

PP_Cottage的博客 226

vulnhub Gigachad靶场练习

vulnhub Gigachad靶场练习 把IP的问题解决好,然后就开始渗透了! 首先信息收集,nmap 先ifconfig看看kali处于哪个C段 我这边是192.168.43.0/24 所以 nmap -sn --min-parallelism 100 --min-hostgroup 256 192.168.43.0/24 探测存活的主机 -sn 代表存活主机扫描,不进行端口测探。 –min-parallelism 代表调整探测报文的并行度,也就是在扫描同一台主机时会发送很多个探测数据包,这个参数

qq_51283187的博客 471

Windows原生与WSL2环境下OpenClaw性能与兼容性的对比分析研究

本文对比分析了Windows原生环境与WSL2环境下运行OpenClaw的性能与兼容性。Windows原生环境提供深度系统集成、图形界面支持和硬件加速优势,适合需要Windows生态集成的用户;WSL2则提供接近原生Linux的性能体验,兼容Linux工具链,适合开发者和跨平台需求。文章详细介绍了两种环境下的推荐硬件配置、系统版本选择及必备工具,并提供了具体的部署步骤指南。研究表明,两种环境各有适用场景,用户可根据需求选择最适合的部署方式。

一键难忘的博客 1218

33、嵌入式系统中的内存操作与实时操作系统

本博客详细探讨了嵌入式系统中的内存操作和实时操作系统(RTOS)的基本原理及应用。内容涵盖C、C++和MicroPython三种语言下的SDRAM读写示例,并结合机器人真空吸尘器的实际应用说明内存的使用场景。此外,还介绍了RTOS的核心概念、组件及其工作机制,包括任务、事件、互斥锁、信号量、队列等,并以FreeRTOS和Mbed OS为例展示了RTOS的配置与使用方法。最后,通过常见问题和实践项目加深对嵌入式系统开发的理解。

zz67890的博客 145

UVA-506 系统依赖 题解答案代码 算法竞赛入门经典第二版

1. 如果一个已经隐式安装的组件又被显式安装,那么是否需要将这个组件的状态变更为显示安装?一开始我以为是我代码遇到某些数据会会出错,找了好久,最后发现是这个问题。2. 题目的样例有一点错误。最后的HTML和TCPIP的卸载顺序反了。3. 有题目没给数据范围,实测10000可以AC。

Coding home - 漂流瓶jz 403

【Windows Server 2019】Active Directory Certificate Services 证书颁发机构的安装,配置和管理Ⅰ——AD CS的安装和配置

博文主要介绍了Windows Server 2019的证书颁发机构的安装和配置方法。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 4833

UVA-1343 旋转游戏 题解答案代码 算法竞赛入门经典第二版

2. 使用一个long long类型的数字作为map的key,key表示这种数字在图形中分别的位置,value表示在第几步访问过。5. 乐观估价函数:在中心每个点的值不对的情况下,每个点都至少需要一次移动才能正确。上述的方法是结合使用的,一开始没想到估价函数,一直在剪枝策略中纠结,然后一直超时。(但是我想的剪枝方法不合理,使用了之后是错误的,在最后有给出)1. 对3种数字,每种数字递归遍历一次,这样每次只需要关注一种数字的变化,情况更少。虽然移动的可能性是无限的,但是最多的移动次数也就是十几次。

Coding home - 漂流瓶jz 656

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

UVA-810 筛子难题 题解答案代码 算法竞赛入门经典第二版

我的理解是,即使进入的时候方向不一致,只要进入后骰子面的位置一致了,那么它随后进入其他结点的判断条件是一致的,即应该不能重复进入,给与限制。这里注意,由于位置可以重复进入,因此只记录方向是不够的,还必须记录顺序,即第一次经过,第二次经过要进行顺序的区分。2. 根据骰子的两个相邻的面(例如题目给出的正面和顶面),可以确定整个骰子在桌面的每个面的位置。在确定了正面的情况下,一个骰子的顶面可能是正面的四个邻边的每一个。在骰子面关系中的顶面就是实际的顶面时,如果向右移动,此时顶面就是原来的左面。

Coding home - 漂流瓶jz 718

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

UVA-806 空间结构 题解答案代码 算法竞赛入门经典第二版

但是高位的值并不会处理,如果之前并没有初始化int,则高位的值是任意的,因此k的值并不等于char类型的值。我的方法是在通过图构建路径时,先递归到单个像素值,再一层一层的通过父级查看各个子级的颜色是否一致,不一致则子级的路径作为输出路径,一致则继续递归到上级处理。一道遍历四叉树的题目,在遍历的同时还要记住路径,做一些额外的操作。如果不是完全了解其中的细节,最好还是按照官方类型使用,否则会像这样出现一些隐藏的问题。这样使用在我本地没有问题,我使用uDebug测试,所有数据都能通过,但是去OJ提交却WA。

Coding home - 漂流瓶jz 432

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

UVA-12118 检查员的难题 题解答案代码 算法竞赛入门经典第二版

那么我们可以把他们组成多个连通图,每个连通图用上面的方法组成欧拉回路。最后再把这些联通图连接起来,就成了一整个欧拉道路。这时候的值为:每个连通图的原有道路数+每个联通图中我们增加的道路数+连通图的数量-1。也就是 原有的总道路数+每个联通图中我们增加的道路数+连通图的数量-1。2. 如果这些道路是联通的,但是不能组成欧拉道路。这时候就又组成了欧拉道路,这时候值为原有道路的数量+我们连接的数量。1. 如果这些道路是联通的,而且组成欧拉道路,那么这些道路可以一笔画,即道路的条数就是我们经过道路的次数。

Coding home - 漂流瓶jz 598

「高效算法设计」

UVA11078 Open Credit System 大致题意 给一个长度为n的整数序列a0 a1 a2….an-1,找出两个整数ai和aj(i &amp;amp;amp;lt; j) 使得ai-aj最大 输入 第一行 组数 T 每组数据 第一行输入数据数量n(2&amp;amp;amp;lt;=n&amp;amp;amp;lt;=1e+5) 接下来是n个不超过150000的整数 输出 对于每组数据,输出最大ai-aj。 题目价值; 学会找到题目解答的...

k42946的博客 570

UVa在线审判系统:一个为编程竞赛而生的平台

UVa在线审判系统:一个为编程竞赛而生的平台 去发现同类优质开源项目:https://gitcode.com/ 如果你是一位热衷于编程竞赛的人,那么 UVa 在线审判系统(UVa Online Judge)可能会成为你的新宠。作为一个基于互联网的编程竞赛平台,它提供了大量的问题集、实时反馈功能和多种编程语言支持。 项目简介 UVa 在线审判系统是一个免费的开源项目,由来自世界各地的志愿者维护和更新...

gitblog_00040的博客 1685

ACM

(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO2012年09月17日 22:17:50 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成。打牢基础,厚积薄发。 一、UVaOJ http://uva.onlinejudge.org  西班牙Valladolid大学的程

linshixina的专栏 1519

算法竞赛入门UVa 1585、UVa1586、UVa1225

UVa1585 Score#include&lt;stdio.h&gt;#include&lt;string.h&gt;int main(){   char a[100];   int n , sum=0, p=0;   scanf("%d",&amp;n);   while(n--){       p = 0;       sum = 0;       scanf("%s",a);       ...

眼里一片海 299

例题3.17 生命的形式 UVa11107

1.题目描述:点击打开链接 2.解题思路:本题是我学习后缀数组的第一个例题,后缀数组是处理字符串题目的有力工具,但是原理还是稍微有一点难以理解。初学时候先知道它是怎么运用的。就拿这道题为例来说明一下。本题要求你在输入的n个串中求一个长度最大的字符串,使得它在超过一半的字符串中都出现过,如果有多解,那么按照字典序输出。 利用后缀数组处理这类题目时候,常见的技巧是把这些字符串拼成一个长串,

Skyline 937

UVa 11426--算法竞赛入门经典训练指南

题目大意:输入正整数n,求所有满足1 题解:设f(n)=gcd(1,n)+gcd(2,n)+……+gcd(n-1,n),则所求答案S(n)=f(2)+f(3)+……+f(n) 注意到gcd(x,n)的值都是n的约数,可以按照这个约数进行分类,用g(n,i)表示满足gcd(n,x)=i且x 求f(n)时,对于每个i枚举它的倍数n(并更新n的值),类似于素数筛法求解。 #include #i

MustImproved的博客 659

UVA-11853 战场 题解答案代码 算法竞赛入门经典第二版

起始圆选择与顶端有交集的圆,使用dfs遍历,两个圆有交集即是邻接。如果遍历中发现某个圆与低端有交集,那说明上下分割整个图形,无路径。但是我们可以反过来,通过一个起始圆,计算与它直接或者间接有交集的圆,是否上下分割整个图形。在遍历的同时,查看是否有圆与左右两端有交集,如果有,则计算当前的最低位置,作为入口和出口。由于路径是连续数据,无法离散成点,分割的区域也是圆,因此不能直接查找路径。1. 圆与上下左右两端相切,就说明有交集,不需要相交。2. 圆与另一个圆相切并不算有交集,只有严格相交才算。

Coding home - 漂流瓶jz 345

UVA 1632(p306)----Alibaba

#include #include #include #include using namespace std; const int INF=0x7f7f7f7f; const int maxn=10000+10; int d[maxn][maxn][2],n; int a[maxn],dl[maxn]; int solve() { for(int i=n-1;i>=0;i--)

哆啦AC梦的博客 369

uva10366

题意:给出l和r,然后从l坐标到r坐标每隔两个位置有一个档板,给出挡板的高度,然后想(-1, 1)中间加水,问什么时候会溢出。 分析:只看一段区间的最大板块 for (int i = q; y[i] &lt;= L; i++) { k += tmp; tmp = max(tmp, y[i+1]); } 这种方法很精妙,我想复杂了。 #include...

timeruler的博客 291
上一篇: 算法竞赛入门经典 每日一题(How to sort)
下一篇: 算法竞赛入门经典 每日一题(锁)
郭晋龙
博客等级 码龄6年 940粉丝 449原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭晋龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值