Problem A&B: 开宝箱 1/2 (最沙雕的做法)(未用指针做) 改:附上一种指针做法
Description
急先锋是一个商人,有一天找到了一个宝箱,宝箱需要正确的密码才能打开。同时他发现宝箱上有一个数字,和一份密码表。密码表上有n个密码,只有一个密码是正确的。
急先锋所在的岛上有m个地点,每个地点有两个神秘的数字。他通过交易得到每个地点上拥有的信息,也知道这个宝箱上的数字是一个地点的标号x。急先锋需要先到x号地点,x号地点上的第一个数字就是他要去的最终地点的标号,最终的地点上的第二个数字就是密码在密码表上的序号。急先锋想要知道打开这个宝箱的密码,聪明的你能不能直接告诉他呢?
Input
第一行两个数字n,m.(1<=n,m<=20)
接下来n个数字ai表示密码表上序号1到序号n的密码分别是多少。(1 <=ai<=100)
接下来m行每行两个数字u,v。(1 <= u<=m,1<= v <=n)
然后给你一个T,表示T次询问。(1<=T<= 20)
接下来的T行每行一个x,表示宝箱上的数字。(1<=x<=m)
Output
一共T行。每行一个数字表示最后的密码。
Sample Input
5 4
1 2 3 4 5
2 4
3 3
1 2
2 5
2
1
2
Sample Output
3
2
#include<stdio.h>
int main(void)
{
int n,m,x;
int T;
scanf("%d%d",&n,&m);
int i,j,k,v,p,a[],b[][];
for(p=;p<n;p++)
{
scanf("%d",&a[p]);
}
for(i=;i<m;i++)
for(j=;j<;j++)
{
scanf("%d",&b[i][j]);
}
scanf("%d",&T);
while(T--)
{
scanf("%d",&x);
k=b[x-][];
v=b[k-][];
printf("%d\n",a[v-]);
}
return ;
}
Description
急先锋是一个商人,有一天找到了一个宝箱,宝箱需要正确的密码才能打开。同时他发现宝箱上有一个数字,和一份密码表。密码表上有n个密码,只有一个密码是正确的。
急先锋所在的岛上有m个地点,每个地点有两个神秘的数字。他通过交易得到每个地点上拥有的信息,也知道这个宝箱上的数字是一个地点的标号x。急先锋需要先到x号地点,x号地点上的第一个数字就是他要去的最终地点的标号,最终的地点上的第二个数字就是密码在密码表上的序号。
由于宝箱中的宝物价值太大。每过一段时间,有些地点上的数字将会发生变化。
急先锋想要知道打开这个宝箱的密码,聪明的你能不能直接告诉他呢?
Input
第一行两个数字n,m.(1<=n,m<=20)
接下来n个数字ai表示密码表上序号1到序号n的密码分别是多少。(1 <=ai<=100)
接下来m行每行两个数字u,v。(1 <= u<=m,1<= v <=n)
然后给你一个T,表示T次操作。(1<=T<= 20)
接下来的T行,每行的第一个数字op,表示第op种操作。
第1种操作:接下来有一个数字x,表示宝箱上的数字。(1<=x<=m)。
第2种操作:接下来有三个数字x,u,v,表示x号地点的数字改成u,v。
Output
每次执行第一种操作1后,输出一个数字表示最后的密码。(每个数字占1行)。
Sample Input
5 4
1 2 3 4 5
2 4
3 3
1 2
2 5
4
1 1
2 1 4 2
1 1
1 2
Sample Output
3
5
2
#include<stdio.h>
int main(void)
{
int n,m,x,q,w,op;
int T;
scanf("%d%d",&n,&m);
int i,j,k,v,p,a[],b[][];
for(p=;p<n;p++)
{
scanf("%d",&a[p]);
}
for(i=;i<m;i++)
for(j=;j<;j++)
{
scanf("%d",&b[i][j]);
}
scanf("%d",&T);
while(T--)
{
scanf("%d",&op);
if(op==)
{
scanf("%d",&x);
k=b[x-][];
v=b[k-][];
printf("%d\n",a[v-]);
}
if(op==)
{
scanf("%d%d%d",&x,&q,&w);
b[x-][]=q;
b[x-][]=w;
}
}
return ;
}
某位大佬指针做法(开宝箱1)
#include<stdio.h>
#include<stdlib.h>
struct node{ int st,en,p; }b[];
int main()
{
int n,m,x[],T;
scanf("%d%d",&n,&m);
int i,j,a[],*p[],**pp[];
for(i=;i<=n;i++)
scanf("%d",&a[i]);
for(i=;i<=m;i++)
{
scanf("%d%d",&b[i].st,&b[i].en);
b[i].p=i;
}
for(i=;i<=m;i++)
{
pp[i]=&p[b[i].st];
p[b[i].st]=&a[b[b[i].st].en];
}
scanf("%d",&T);
for(i=;i<T;i++)
scanf("%d",&x[i]);
for(i=;i<T;i++)
printf("%d\n",**pp[x[i]]);
return ;
}
Problem A&B: 开宝箱 1/2 (最沙雕的做法)(未用指针做) 改:附上一种指针做法的更多相关文章
- Codeforces Global Round 2 D. Frets On Fire (动态开点线段树,沙雕写法)
题目链接:D. Frets On Fire 思路:明明可以离散化+二分写,思路硬是歪到了线段树上,自闭了,真实弟弟,怪不得其他人过得那么快 只和查询的区间长度有关系,排完序如果相邻的两个点的差值小于等 ...
- Problem D: 来开个书店吧
某出版社可出版图书和磁带.其中图书按照每页的价格乘以页数进行定价,磁带根据每10分钟的价格乘以磁带录音的分钟数进行定价.请定义Publicatioin.Book.Tape以及BookStore四个类. ...
- HDU 1000 A + B Problem(指针版)
A + B Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- Atitit.java c++指针使用总结O7
Atitit.java c++指针使用总结O7 1. 指针的本质 1 2. 指针的作用 1 1. 提升性能问题这常常用于遍历数组, 1 2. 计算两个指针的的距离 2 3. 避免栈溢出,创建动态数据结 ...
- C语言面试题分类->指针
有关指针的经典面试题 C语言为何如此长寿并实用?C++为什么有那么多精彩?指针可以说是C/C++中的灵魂所在,虽然早期中pascal也有指针,但是和C/C++比起来不是一个级别的.今天为大家深入浅出的 ...
- c刷题
1.转义字符: C中定义了一些字母前加 "\" 来表示常见的那些不能显示的ASCII字符,如\0 空字符,\r 回车, \n换行等,就称为转义字符,因为后面的字符,都不是它本来的A ...
- 【Git】简单使用
[Git & Github] 首先不能混淆两者的概念.git是一个类似于svn的版本管理工具.其可以在本地建立起针对一个项目的众多维度的版本管理体系,提升了开发的效率. 相对的,我们如果想要和 ...
- 【转】c++面试基础
1,关于动态申请内存 答:内存分配方式三种: (1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在. 全局变量,static变量. (2)在栈上创建:在执行函 ...
- C++003基础
1.C++对C的扩展 1简单的C++程序 1.1求圆的周长和面积 数据描写叙述: 半径.周长,面积均用实型数表示 数据处理: 输入半径 r. 计算周长 = 2*π*r : 计算面积 = π* r2 . ...
随机推荐
- 解决 Windows 环境 Git Bash 无法识别 Composer 命令的问题
思路 模拟 Linux,复制一个 composer 文件到 Git Bash 的 /usr 的子目录,并赋予执行权限. 解决 首先,请确定你的 composer.phar 文件路径.我的是: /d/w ...
- Python_oldboy_自动化运维之路_全栈考试(五)
1.执行 Python 脚本的两种方式 [root@localhost tmp]# cat a.py #!/usr/bin/python # -*- coding: UTF-8 -*- print & ...
- JsRender 前端渲染模板常用API学习
JsRender 常用API 1. $.templates() $.templates()方法是用来注册或编译模板的,使用的情况有以下几种. 把html字符串编译编译成模板 获取使用script标签声 ...
- No.15 selenium for python JavaScript
JS处理滚动条 一.上下滚动 1.滚动条回到顶部: js="var q=document.documentElement.scrollTop=10000" driver.execu ...
- Ubuntu下apache2启动、停止、重启、配置
Linux系统为Ubuntu 一.Start Apache 2 Server /启动apache服务# /etc/init.d/apache2 startor$ sudo /etc/init.d/ap ...
- mysql慢sql报警系统
前言:最近有同事反应有的接口响应时间时快时慢,经过排查有的数据层响应时间过长,为了加快定位定位慢sql的准确性,决定简单地搭建一个慢sql报警系统 具体流程如下架构图 第一步:记录日志 每个业务系统都 ...
- epoll对poll(select)的改进
select的几大缺点: 每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大: 每次调用select,内核需要遍历传递进来的所有fd(判断检测文件是否可用).有 ...
- Asis CTF 2015-Car_Market
恰好找到了这道题的bin文件,就来做一下. 这道题目是一个经典的选单程序但是具有三级选单,在bss段存在指针数组ptr,ptr中的值指向每个主结构,其中主结构如下所示. [] model [] pri ...
- 关于URL编码(针对URL含有中文的参数)
http://www.ruanyifeng.com/blog/2010/02/url_encoding.html 一.问题的由来 URL就是网址,只要上网,就一定会用到. 一般来说,URL只能使用英文 ...
- Web前端开发最佳实践(9):CSS代码太太乱,重复代码太多?你需要精简CSS代码
前言 提高网站整体加载速度的一个重要手段就是提高代码文件的网络传输速度.之前提到过,所有的代码文件都应该是经过压缩了的,这可提高网络传输速度,提高性能.除了压缩代码之外,精简代码也是一种减小代码文件大 ...