BestCoder Round #74 (div.2) ~' T1. LCP Array ' 题解
2016-03-11 20:45
375 查看
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define MOD 1000000007 using namespace std; int n=0,shu[100050],T,nex,gl; int main() { scanf("%d",&T); for(int nums=0;nums<T;nums++) { scanf("%d",&n); long long ans=26; //初始有26种情况 for(int i=1;i<n;i++) scanf("%d",shu+i); //读入,指针方式(或许可以装13). shu =0; //第n位的操作!! for(int i=1;i<=n;i++) //扫一遍队列 { if(shu[i]!=shu[i-1]-1 && shu[i-1]!=0 ) //递减数列或者前一位为0 { gl=1; printf("0\n"); //不合法直接0 break; } if(shu[i]==0 && i!=n) //为0则方法数*25 long long! long long! { ans%=MOD; ans*=25; ans%=MOD; } } if(!gl) printf("%I64d\n",ans); //不用说吧 gl=0; nex=0; //清零 } return 0; }
写这道题直接坑完了这一轮BC的时间(听说题挺难,只干T1都+100Rating),最后10分钟调出来的QAQ,差点废掉。好了废话结束,下面正题。
1.注意三种不合法情况的判断
1. 任何大于0的数后跟的一定是一个差为1的递减数列。 2. 最后一个数一定是0或1(不可能超长)。 3. 增长只能发生在0之后。
2.注意多组询问下的数组清空问题
1. 我的做法因为涉及数组第n位的判定,所以不能通过读入覆盖的方法解决。 2. 在int相乘时请使用 ```long long```
3.代码风格
1. 在帮同学调代码的时候简直看哭,自己看自己变量名也是恶心,为了以后更容易调所以用正常变量名吧23333.
相关文章推荐
- 2015 UESTC Training for Data Structures 秋实大哥下棋
- 对于Linux中errno使用的问题
- 禅道——測试流程
- 制作多级菜单hide()与show() toggle()
- iOS-支付宝浅究
- android通过ksoap协议与服务器发布的webservice通信
- hdu 1716注意格式
- 小灶第一次题解
- Leetcode018 4Sum
- python3 字符串属性(三)
- js中利用call和apply的应用--继承
- linux初步学习之用户和用户组及权限管理浅谈
- HDU 1260
- POJ 3694 Network (tarjan + LCA)
- [转]与中国K12主流教育相悖,自适应学习如何突破?
- HDOJ1175 连连看
- Windows下编译ffmpeg库过程
- 【面试】get和post的区别
- cocos studio 打包 ;external NDK_TOOLCHAIN_VERSION=4.9' 执行命令出错,返回值:2。
- 无住生心