这题的数据未免也太水了,题目的意思好像默认是每块磁盘装载数据的长度是相等的。我写了判断每次取数据是否会超过每块磁盘存的数据的长度,然而并没有什么卵用。交上去20分,写了个数据测了下,如果要求的块太大的话,这样下面计算得出的对应磁盘号会太大,然后就会runtime error,所以求出最大块号,如果查询的块超过最大块号,就输出错误就可以了。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int N,S,L,M;
  4. long long number(char c)
  5. {
  6. if (c>='0'&&c<='9') {
  7. return c-'0';
  8. }
  9. else {
  10. return 10+c-'A';
  11. }
  12. }
  13. long long getNum(string s)
  14. {
  15. return number(s[0])*(long long)16+number(s[1]);
  16. }
  17. int main()
  18. {
  19. // freopen("in.txt","r",stdin);
  20. ios::sync_with_stdio(false);
  21. // string s;
  22. // cin>>s;
  23. // cout<<getNum(s)<<endl;;
  24. cin>>N>>S>>L;
  25. string disk[N];
  26. int num;
  27. int len;
  28. for (int i=0;i<L;i++) {
  29. cin>>num;
  30. cin>>disk[num];
  31. len=disk[num].length();
  32. // cout<<disk[num]<<endl;
  33. }
  34. int maxid=len/8*(N-1);
  35. N--;
  36. cin>>M;
  37. int query;
  38. for (int i=0;i<M;i++) {
  39. cin>>query;
  40. if (query<0||query>=maxid) {
  41. cout<<'-'<<endl;
  42. continue;
  43. }
  44. int floor=query/(N*S);
  45. int rem=query-floor*S*N;
  46. int mod=rem%S;
  47. int beg=floor*8*S+mod*8;
  48. int rescnt=rem/S+1;
  49. int resbeg=N-floor%(N+1);
  50. int resdisk=(resbeg+rescnt)%(N+1);
  51. if (disk[resdisk]=="") {
  52. if (L<N) {
  53. cout<<'-'<<endl;
  54. continue;
  55. }
  56. long long ans[10];
  57. memset(ans,0,sizeof(ans));
  58. bool flag=false;
  59. for (int i=0;i<=N;i++) {
  60. if (i!=resdisk) {
  61. if (beg+8>disk[i].length()) {
  62. flag=true;
  63. break;
  64. }
  65. for (int j=0;j<4;j++) {
  66. ans[j]=ans[j]^getNum(disk[i].substr(beg+j*2,2));
  67. }
  68. }
  69. }
  70. if (flag) {
  71. cout<<'-'<<endl;
  72. continue;
  73. }
  74. for (int j=0;j<4;j++) {
  75. // printf("%02X",ans[j]);
  76. cout<<setiosflags(ios::uppercase)<<hex<<ans[j];
  77. }
  78. cout<<endl;
  79. // puts("");
  80. }
  81. else {
  82. string s=disk[resdisk].substr(beg,8);
  83. if (beg+8>disk[resdisk].length()) {
  84. cout<<'-'<<endl;
  85. continue;
  86. }
  87. cout<<s<<endl;
  88. }
  89. }
  90. return 0;
  91. }
  92. /**<
  93. 00010203
  94. 00010203
  95. 04050607
  96. 24252627
  97. Process returned 0 (0x0) execution time : 0.239 s
  98. Press any key to continue.
  99. 3 2 2
  100. 0 000102030405060710111213141516172021222324252627
  101. 1 A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7
  102. 2
  103. 2
  104. 5
  105. 2 1 2
  106. 0 000102030405060710111213141516172021222324252627
  107. 1 000102030405060710111213141516172021222324252627
  108. 2
  109. 0
  110. 1
  111. */
  1. 11 2 10
  2. 0 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
  3. 1 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
  4. 2 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
  5. 3 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
  6. 4 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
  7. 5 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
  8. 6 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
  9. 7 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
  10. 8 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
  11. 9 0001020304050607101112131415161720212223242526273031323334353637404142434445464750515253545556576061626364656667707172737475767780818283848586879091929394959697
  12. 4
  13. -1
  14. 10
  15. 15
  16. 1000

试题编号: 201903-3 试题名称: 损坏的RAID5的更多相关文章

  1. CCF 试题编号: 201909-4 试题名称: 推荐系统

    这题是stl的综合应用,map要想快,直接上unordered_map,这样查询接近O(1),是不是很嗨皮. 思路其实还是很简单的,type+id做个Hash,由于set.insert的第一个返回值是 ...

  2. csp 201903-3 损坏的RAID5

    问题描述 试题编号: 201903-3 试题名称: 损坏的RAID5 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 答题栏     核

  3. Libre 6006 「网络流 24 题」试题库 / Luogu 2763 试题库问题 (网络流,最大流)

    Libre 6006 「网络流 24 题」试题库 / Luogu 2763 试题库问题 (网络流,最大流) Description 问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同 ...

  4. 震惊!几道Python 理论面试题,Python面试题No18

    本面试题题库,由公号:非本科程序员 整理发布 第1题: 简述解释型和编译型编程语言? 解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候 ...

  5. 面试前赶紧看了5道Python Web面试题,Python面试题No17

    目录 本面试题题库,由公号:非本科程序员 整理发布 第1题: Flask中的请求上下文和应用上下文是什么? 第2题:django中间件的使用? 第3题: django开发中数据做过什么优化? 第4题: ...

  6. 千万不要错过这几道Python面试题,Python面试题No16

    第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...

  7. 损坏的RAID5

    损坏的RAID5 string讀入卡cin 関同步 ios::sync_with_stdio(false) 由塊號映射到具體位置 塊號id對應第col個字符串 字符串開始的位置st #include& ...

  8. CSP 试题编号201803-2 Java实现

    package HB; import java.util.Scanner; public class Test_06 { public static void main(String[] args) ...

  9. CSP 试题编号201803-1 Java实现

    import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner input ...

随机推荐

  1. csp 初赛 (不懂的地方)

    11. 有以下结构体说明和变量定义,如图所示,指针 p. q. r 分别指向一个链表中的三个连续结点. struct node {                        int data;st ...

  2. http接口性能测试工具

    一. http_load 程序非常小,解压后也不到100K.http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载. 但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一 ...

  3. 终极教程【zhong】

    just for a better future! 资源教程               aiim                   综合类 前端知识体系 前端知识结构 Web前端开发大系概览 We ...

  4. python,装饰器带参数,原理

    import time # 函数装饰器传参 def zhuang1(hao): def zhuang2(func1): def funczhuang(*args, **kw): print(time. ...

  5. NW.js桌面应用开发(一)

    NWjs中文网 Electron中文网 一些需要了解的历史与特性,其实就是 NW.js 和 Electron的争议,建议还是亲自阅读一下各自的官网说明 1.下载SDK版工具 从淘宝NPM镜像下载,速度 ...

  6. codeforces 1283D. Christmas Trees(bfs)

    链接: https://codeforces.com/contest/1283/problem/D 题意:给定n个不同的整数点,让你找m个不同的整数点,使得这m个点到到这n个点最小距离之和最小. 思路 ...

  7. laravel路由组中namespace的的用法详解

    做公司一个项目的时候发现laravel框架中可以省去action的路径前缀的用法: ps:用简短的话来理解就是说在路由组中定义namespace,可以省去你路由的前缀下面看例子 最终显示如下: 定义的 ...

  8. istio部署-istio jaeger & kiali

    参考 fleeto/sleep fleeto/flaskapp jaegertracing/jaeger kiali kiali/kiali kiali/kiali-ui kiali/kiali/ta ...

  9. c# DPI SCale

    public class Screen { /// Primary Screen #region Win32 API [DllImport("user32.dll")] stati ...

  10. 10.4.3反向迭代器Reverse_iterator笔记

    反向迭代器就是在容器中从尾元素向首元素反向移动的迭代器.对于反向携带器,递增(以及递减)操作的含义会颠倒过来.递增一个反向迭代器(++it)会移动到前一个元素:递减一个迭代器(--it)会移动到下一个 ...