Codeforces #449 div2 C题
C. Nephren gives a riddletime limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
What are you doing at the end of the world? Are you busy? Will you save us?
Nephren is playing a game with little leprechauns.
She gives them an infinite array of strings, f0... ∞.
f0 is "What are you doing at the end of the world? Are you busy? Will you save us?".
She wants to let more people know about it, so she defines fi = "What are you doing while sending "fi - 1"? Are you busy? Will you send "fi - 1"?" for all i ≥ 1.
For example, f1 is
"What are you doing while sending "What are you doing at the end of the world? Are you busy? Will you save us?"? Are you busy? Will you send "What are you doing at the end of the world? Are you busy? Will you save us?"?". Note that the quotes in the very beginning and in the very end are for clarity and are not a part of f1.
It can be seen that the characters in fi are letters, question marks, (possibly) quotation marks and spaces.
Nephren will ask the little leprechauns q times. Each time she will let them find the k-th character of fn. The characters are indexed starting from 1. If fn consists of less than k characters, output '.' (without quotes).
Can you answer her queries?
InputThe first line contains one integer q (1 ≤ q ≤ 10) — the number of Nephren's questions.
Each of the next q lines describes Nephren's question and contains two integers n and k (0 ≤ n ≤ 105, 1 ≤ k ≤ 1018).
OutputOne line containing q characters. The i-th character in it should be the answer for the i-th query.
ExamplesInput3
1 1
1 2
1 111111111111OutputWh.Input5
0 69
1 194
1 139
0 47
1 66OutputabdefInput10
4 1825
3 75
3 530
4 1829
4 1651
3 187
4 584
4 255
4 774
2 474OutputAreyoubusy
题目大意:fi表示第i个字符串,输入q次询问,再输入n,k;输出fn的第k个字符。如果k大于fn的长度,那么就输出'.'。
解题思路:思维题,字符串很长,不能直接dfs,只能从长度入手,判断字符在fi字符串。
因为长度倍增,所以f53的时候差不多就超过了输入的最大值,n大于53的时候在dfs特判下就行。
AC代码:
1 #include<iostream>
2 #include<bits/stdc++.h>
3 #include<stdio.h>
4 #define ll long long
5 #define MAX 1e18
6 using namespace std;
7 ll a[100500];
8 string s0,s1,s2,s3;
9 ll len1,len2,len3,len0;
10 ll most;
11 char dfs(ll n,ll k){
12 if(n==0){
13 return s0[k-1];
14 }
15 if(k<=len1){
16 return s1[k-1];
17 }
18 if(k<=len1+a[n-1]||n>most){ //特判一下
19 return dfs(n-1,k-len1);
20 }
21 if(k<=len1+a[n-1]+len2){
22 return s2[k-(len1+a[n-1])-1];
23 }
24 if(k<=len1+a[n-1]+len2+a[n-1]){
25 return dfs(n-1,k-(len1+a[n-1]+len2));
26 }
27 return s3[k-(len1+a[n-1]+len2+a[n-1])-1];
28 }
29 int main(){
30 s0="What are you doing at the end of the world? Are you busy? Will you save us?";
31 s1="What are you doing while sending \"";
32 s2="\"? Are you busy? Will you send \"";
33 s3="\"?";
34 len0=s0.length();
35 len1=s1.length();
36 len2=s2.length();
37 len3=s3.length();
38 a[0]=len0;
39 for(int i=1;i<60;i++){
40 ll s=len1+a[i-1]+len2+a[i-1]+len3;
41 if(s>MAX){
42 most=i; //most==i,如果是i-1就会RE
43 break;
44 }
45 else a[i]=s;
46 }
47 int q;
48 cin>>q;
49 while(q--){
50 ll n,k;
51 cin>>n>>k;
52 if(n<=most&&k>a[n]){
53 cout<<'.';
54 }else{
55 cout<<dfs(n,k);
56 }
57 }
58 cout<<endl;
59 return 0;
60 }
Codeforces #449 div2 C题的更多相关文章
- Codeforces #449 Div2 D
#449 Div2 D 题意 交互式类题目. 起始有 n 张纸,会给出 m 次数字 p (\(1 \leq p \leq c\)),每次可选择一张纸,并在纸上写上这个数字,如果纸上已经存在数字,会覆盖 ...
- codeforces #262 DIV2 B题 Little Dima and Equation
题目地址:http://codeforces.com/contest/460/problem/B 这题乍一看没思路.可是细致分析下会发现,s(x)是一个从1到81的数,不管x是多少.所以能够枚举1到8 ...
- codeforces 260 div2 C题
C题就是个dp,把原数据排序去重之后得到新序列,设dp[i]表示在前i个数中取得最大分数,那么: if(a[i] != a[i-1]+1) dp[i] = cnt[a[i]]*a[i] + dp[ ...
- codeforces 260 div2 B题
打表发现规律,对4取模为0的结果为4,否则为0,因此只需要判断输入的数据是不是被4整出即可,数据最大可能是100000位的整数,判断能否被4整出不能直接去判断,只需要判断最后两位(如果有)或一位能否被 ...
- Codeforces #541 (Div2) - E. String Multiplication(动态规划)
Problem Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...
- Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)
Problem Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...
- 【Codeforces #312 div2 A】Lala Land and Apple Trees
# [Codeforces #312 div2 A]Lala Land and Apple Trees 首先,此题的大意是在一条坐标轴上,有\(n\)个点,每个点的权值为\(a_{i}\),第一次从原 ...
- Codeforces #180 div2 C Parity Game
// Codeforces #180 div2 C Parity Game // // 这个问题的意思被摄物体没有解释 // // 这个主题是如此的狠一点(对我来说,),不多说了这 // // 解决问 ...
- Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)
Problem Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...
- Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)
Problem Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...
随机推荐
- 白话领域驱动设计DDD
容我找个借口先,日常工作太忙,写作略有荒废.一直想聊下领域驱动设计,以下简称DDD,之前也看过一些教程,公司今年两个项目--银行核心和信用卡核心,都深度运用DDD成功落地,有人说DDD挺难理解,在此讲 ...
- C# Wke使用例子 (KyozyWke)
概述 wke是国人大牛BlzFans封装的webkit, 基于chrome浏览器源代码的裁剪版本, 大小只有仅仅10M. 无需依赖其他的扩展库就可以在本地使用谷歌内核快速加载网页. wke是2011年 ...
- SpringBoot使用@Async注解8大坑点
前言 SpringBoot中,@Async注解可以实现异步线程调用,用法简单,体验舒适. 但是你一定碰到过异步调用不生效的情况,今天,我就列出90%的人都可能会遇到的8大坑点. 正文 1.未启用异步支 ...
- Vue路由新开页面跳转和传参传递
需求:在后台管理系统首页列表项中,点击详情跳转到系统中指定菜单的路由要求新开窗口并需要带上参数查询. 第一种方法: 1 const { id } = item; 2 let routeUrl = th ...
- IP协议:连接你我,掌握互联网的关键
IP 基本认识 在之前的章节中,我们已经详细介绍了应用层和传输层的相关概念和原理,了解了进程之间如何进行可靠的数据传输.我们知道,传输层的头部包含了进程所使用的端口信息,这是为了确保数据能够正确地传递 ...
- 2022 ICPC 杭州站
gym 知乎 尝试先读题而不是写缺省源感觉不太好 E 一头雾水.F 是签到就先上去写了,结果读错题交了个样例都没过的代码,小改了一下就过了.G 不太会做.zsy 把 M 丢给我想了一下 然后 gjk ...
- OPPO主题组件开发 - 组件内容自适应
OPPO桌面有 3*5.3*6.4*5.4*6.5*5.5*6 等布局,随着布局不同,组件大小也会发生改变:不同型号手机分辨率不同,组件大小也不一致.这就要求组件内容做到自适应. 说明 OPPO主题组 ...
- 基于GPS定位和人脸识别的作业识别管理系统
一.技术参数 mysql5.5 asp.net jquery 高德地图api 百度人脸识别api 二.功能简介 实现简单的施工项目管理,包括项目地点,工期,名称,编号等 实现作业人员的档案信息管理,包 ...
- Windows10 下载并编译指定版本chromium源码
1.一些信息 Chromium 的官网是 https://www.chromium.org/ Git 仓库是 https://chromium.googlesource.com/chromium/sr ...
- 【matplotlib 实战】--气泡图
气泡图是一种多变量的统计图表,可以看作是散点图的变形.与散点图不同的是,每一个气泡都表示三个维度的数据,除了像散点图一样有X,Y轴,气泡的大小可以表示另一个维度的数据.例如,x轴表示产品销量,y轴表示 ...
