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 . ...
随机推荐
- mysql中使用日期加减时无法识别年-月格式数据的问题,%Y-%m"这种格式数据
最新做报表统计的时候处理按月统计部分时发现,虽然使用 DATE_FORMAT( time, '%Y-%m' ) 函数可以将日期格式转成年-月,但是如果是参数是年-月格式,即"2018-10& ...
- sleep允许休眠, delay不允许
在Linux Driver开发中,经常要用到延迟函数:msleep,mdelay/udelay. 虽然msleep和mdelay都有延迟的作用,但他们是有区别的. 1.)对于模块本身 mdelay是忙 ...
- Error: No resource found that matches the given name (at 'icon' with value '@mipmap/Icon')
问题: error: Error: No resource found that matches the given name (at 'icon' with value '@mipmap/Icon' ...
- OpenStack Benchmark - Rally
作为以基于OpenStack的云平台的基准测试工具 -- Rally, 其功能不仅是测试云的性能&&稳定性, 还可以安装OpenStack,以及以良好的表现形式(web 页面)展现测试 ...
- ADB常用命令(二)
参考 http://adbshell.com/commands 常用命令 查看adb 版本 adb version 打印所有附加模拟器/设备的列表 adb devices 设备序列号 adb get ...
- centos7.2系统没有eth0网卡
最近一直在学centos7.5系统,偶然看到虚拟机里有7.2系统所以想练习一下(其实7.2和7.5差不多),但是打开虚拟机之后,发现没有eth0网卡 那没有eth0网卡就无法远程连接ssh,既然遇到了 ...
- No.11 selenium学习之路之浏览器大小
通过set_window_size()方法可以设置打开的浏览器大小 maximize_window()方法可以把当前浏览器最大化 例子:
- 使用html+css+js实现计算器
使用html+css+js实现计算器,开启你的计算之旅吧 效果图: 代码如下,复制即可使用: <!DOCTYPE html><html lang="en"> ...
- (一)问候 HttpClient
第一节: HttpClient 简介 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并 ...
- MS Sql Server 数据库或表修复(DBCC CHECKDB)
MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令. 1. DBCC CHECKDB 重启服务器后,在没有进行任何操作的情况下,在SQL ...