51Nod-1320-合法尾数序列
来源:互联网 发布:爱淘宝网 编辑:程序博客网 时间:2024/06/11 04:34
ACM模版
描述
题解
遇见这种题,直观感觉就是规律题,所以先打表找规律……
然后发现,可以找到16一循环的规律,当然,这个循环不是完美的循环,第16位并不是固定的,可是感觉并不是太直观,然后观察第16位,忽然发现这里也存在一定的周期关系,于是直接打64的倍数……
然后,发现不光16,只要往后边推,64、256、……都存在一定的周期性,那么我们应该选取那个周期性比较好呢?
然后发现题意,数据上限是50个,那么我们采用64的周期是比较合适的,然后暴力匹配就行了,这里需要注意一点的是,防越界问题,因为这是周期性关系,所以除了第64个需要特判外,还要取模,防止下标越界。
代码
#include <iostream>using namespace std;const int MAXN = 55;const int MAXM = MAXN + 10;const int CYCL = 64;int power[MAXM] = {1};int tail[MAXM];int d[MAXN];int N;int ans;void init(){ for (int i = 1; i < MAXM; i++) { power[i] = power[i - 1] * 2; } for (int i = 1; i < MAXM; i++) { int res = i & (-i); for (int j = 0; j < MAXN; j++) { if (power[j] == res) { tail[i - 1] = j; break; } } } return ;}void solve(int n){ if (n > N) { return ; } for (int i = 0; i < N - n + 1; i++) { for (int j = 0; j < CYCL; j++) { if (d[i] == tail[j] || (j == CYCL - 1 && d[i] >= tail[CYCL - 1])) { bool flag = true; for (int k = 1; k < n; k++) { if (j + k == CYCL - 1 && d[i + k] >= tail[CYCL - 1]) { continue; } if (d[i + k] != tail[(j + k) % CYCL]) { flag = false; break; } } if (flag) { ans++; break; } } } } solve(n + 1); return ;}int main(int argc, const char * argv[]){// freopen("/Users/zyj/Desktop/input.txt", "r", stdin); init(); int T; cin >> T; while (T--) { cin >> N; ans = N; for (int i = 0; i < N; i++) { scanf("%d", d + i); } solve(2); cout << ans << '\n'; } return 0;}
0 0
- 51Nod-1320-合法尾数序列
- 51nod 1320 合法尾数序列
- 51NOD1320 合法尾数序列
- 51nod 1478 括号序列的最长合法子段
- 51Nod-1478-括号序列的最长合法子段
- 51nod-1478 括号序列的最长合法子段
- 51nod 1478 括号序列的最长合法子段
- 51Nod-1315-合法整数集
- 51nod-1451 合法三角形
- 51Nod-1451-合法三角形
- 51nod 1451 合法三角形
- 51Nod-1612-合法表达式
- 51nod 1451 合法三角形
- 51Nod-1400-序列分解
- 51nod 1478-括号序列的最长合法子段(模拟)
- 51nod 1478 括号序列的最长合法子段 (括号匹配)
- 51nod 1478 括号序列的最长合法子段(栈-括号匹配寻找最长合法子串长度及其个数)
- 51nod 1315 合法整数集
- CodeForces 548E Mike and Foam (容斥+数论)
- android 加载大图的原理和实现
- PagerSildingTab的简单实现
- windows10下安装Microsoft Visual Studio 2013.4 Community enu中文语言包出错,提示“”程序兼容模式已打开.请将其关闭”的解决方法
- LuBan图片压缩
- 51Nod-1320-合法尾数序列
- Android 仿照微信发说说,既能实现拍照,选图库,多图案上传 使用Retrofit2.0技术
- hdu 2089 不要62 (数位DP)
- c#中线程池
- Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values;
- Caffe、TensorFlow、MXnet三个开源库对比
- Android注解解析,注解用法,仿xUtils用注解初始化控件、点击事件(一)
- augular.js
- android Animation动画平移之后不响应点击事件