POJ 1068.Parencodings
来源:互联网 发布:pp助手安装软件 编辑:程序博客网 时间:2024/05/16 08:57
题目:http://poj.org/problem?id=1068
AC代码(C++):
#include <iostream>#include <algorithm>#include <stdio.h>#include <vector>#include <queue>#include <math.h>#include <string.h>using namespace std;int main(){int m;cin>>m;for(int i = 0; i < m; i++){int n;int* p;int* w;cin>>n;p = new int[n];w = new int[n];for(int i = 0; i < n; i++){cin>>p[i];p[i]--;}w[0] = 1;for(int i = 1; i < n; i++){for(int j = i-1; j >= 0; j--){if(p[j+1]-p[j]>=1){w[i] = i-j;for(int k = j+1; k < n; k++)p[k]--;break;}else if(j==0){//匹配括号在开头w[i] = i-j+1;for(int k = 0; k < n; k++)p[k]--;break;}}}for(int i = 0; i < n; i++){cout<<w[i];if(i!=n-1)cout<<' ';}cout<<endl;}}总结: 模拟题, 不需要暴力(或者暴力可能会超时?). 这题的思路是, 在计算w[i]的时候, 从p[j]往前找(j=i-1), 直到找到p[j+1]-p[j]大于等于1, 或者找到头, 则i位置匹配的括号就是在j+1和j中间那些左括号中取一个(或者在开头的左括号中), 取完后所有j+1往后包括j+1的p数组值减一(因为取走了一个左括号), 循环直到找到所有w[i]结束.
阅读全文
0 0
- POJ 1068.Parencodings
- POJ Parencodings
- poj Parencodings
- 【POJ】Parencodings
- POJ 刷题系列:1068. Parencodings
- poj 1068 Parencodings
- POJ 1068 Parencodings
- POJ 1068 Parencodings
- poj 1068 Parencodings
- POJ 1068 Parencodings
- POJ 1068 Parencodings
- POJ 1068 Parencodings 模拟
- POJ 1068 Parencodings
- poj 1068 Parencodings
- poj 1068 Parencodings
- poj 1068 Parencodings
- poj 1068 Parencodings
- poj-1068-Parencodings
- APPIUMsend_keys输入太慢?用adb可以提升很大速度
- 你用TensorFlow做过哪些有趣的尝试?
- 常用的向量矩阵求导公式
- 不安全的代码: 教你“随心所欲”地在内存中操作Java的类和对象(3)
- Glide异常:java.lang.IllegaliArgumentException:You must not call setTag() on a view Glide is targeting
- POJ 1068.Parencodings
- Error: Linux下 mysql.sock文件丢失被删除解决方法
- 巧用Expression表达式 解决类似于sql中 select in 的查询(适合于中小型项目)
- 2017.9.21 紧急集合 思考记录
- spring 技术内幕读后感1---前言
- 声波配网研究
- 阿里巴巴2014校招笔试题_时长问题
- vector基础操作
- 自控II讨论1-用脉冲串表示采样信号的逻辑、采样器有无传递函数