码迷,mamicode.com
首页 > 其他好文 > 详细

【nowcoder】 4th T1 动态点分治

时间:2018-10-07 18:50:02      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:http   coder   break   简单   nbsp   else   www   tchar   ora   

题目链接:https://www.nowcoder.com/acm/contest/175/A

题目名字吓死人

std:

技术分享图片

技术分享图片

太可啪了

一道简单的模拟题。虽然我把题意想错了

按照题意模拟输出和继承。


 

WA 点: 因为数据K范围在263之内(long long:263-1,unsigned long long int :264-1)

所以会很容易爆

也会爆回[l,r]范围内 就会WA


如何避免?

首先假设 x 为继承的值 

那么每次改变都是x=x*k

如果每次改变的范围都在r/k的范围内 那么就可避免爆

代码如下:

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 
 5 int n;
 6 ll l,r,k,x;
 7 bool check=false;
 8 
 9 ll Read(){
10     ll xxx=0,fff=1;char ch=getchar();
11     while(ch>9||ch<0){if(ch==-) fff=-1;ch=getchar();}
12     while(ch<=9&&ch>=0){xxx=(xxx<<3)+(xxx<<1)+ch-0;ch=getchar();}
13     return xxx*fff;
14 }
15 
16 int main(){
17     n=Read();
18     while(n--){
19         l=Read();r=Read();k=Read();
20         check=false;
21         switch(k){
22             case 0: if(l<=0&&r>=0){
23                 putchar(0);putchar( );
24                 check=true;
25             }
26             case 1: if(l<=1&&r>=1){
27                 putchar(1);putchar( );
28                 check=true;
29                 
30             }
31             break;
32             default:for(x=1;;){
33                 if(l<=x&&x<=r) {
34                     printf("%lld ",x);
35                     check=true;
36                 }
37                 if(x<=r/k) x*=k;else break;
38             }
39         }
40         if(!check) {
41             puts("None.");
42         }
43         else putchar(\n);
44     }
45     return 0;
46 }

PE几次以后才知道puts()自动换行

【nowcoder】 4th T1 动态点分治

标签:http   coder   break   简单   nbsp   else   www   tchar   ora   

原文地址:https://www.cnblogs.com/Aropm/p/9750713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!