“美登杯”上海市高校大学生程序设计赛B. 小花梨的三角形(模拟,实现)
题目链接:https://acm.ecnu.edu.cn/contest/173/problem/B/#report9
Problem B B 、 小 花梨 的 三角形
时间限制:1000ms 空间限制:512MB
Description
小花梨现在有一个?层三角形图(参考下图),第?层有2? − 1个边长为1的等边三角形。
每个交点处存在一个字符,总共有? + 1层字符,第?层有?个字符。
小花梨用等边三角形三个顶点上的字符来表示这个三角形,两个等边三角形如果它们的三个
顶点字符相同(不区分顺序)则视为同一类等边三角形。小花梨想知道总共存在多少种不同类
别的等边三角形。
Input
第一行为正整数?,表示三角形层数(1 ≤ ? ≤ 100)。
接下来? + 1行,第?行输入?个字符,表示第?层的字符。(字符只包含小写字母"? − ?")
Output
输出一个整数表示存在多少种不同类别的三角形
Example
Sample Input Sample Output
1
a
bc
1
2
a
bb
cac
3
3
a
aa
aaa
aaaa
1
Note
一:只存在顶点为(?,?,?)的三角形
二:存在顶点为(?,?,?) 、 (?,?,?) 、 (?,?,?)的3类不同的三角形
样例三:只存在顶点为(?,?,?)的三角形
思路:
枚举行,枚举列,枚举边长,统计三个节点的字母,
排序后插入set中即可。
存在正的三角形,还存在倒立的三角形
细节见代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#include <iomanip>
#define ALL(x) (x).begin(), (x).end()
#define sz(a) int(a.size())
#define all(a) a.begin(), a.end()
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define pii pair<int,int>
#define pll pair<long long ,long long>
#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MS0(X) memset((X), 0, sizeof((X)))
#define MSC0(X) memset((X), '\0', sizeof((X)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define eps 1e-6
#define gg(x) getInt(&x)
#define chu(x) cout<<"["<<#x<<" "<<(x)<<"]"<<endl
using namespace std;
typedef long long ll;
ll gcd(ll a, ll b) {return b ? gcd(b, a % b) : a;}
ll lcm(ll a, ll b) {return a / gcd(a, b) * b;}
ll powmod(ll a, ll b, ll MOD) {ll ans = 1; while (b) {if (b % 2) { ans = ans * a % MOD; } a = a * a % MOD; b /= 2;} return ans;}
inline void getInt(int *p);
const int maxn = 1000010;
const int inf = 0x3f3f3f3f;
/*** TEMPLATE CODE * * STARTS HERE ***/
string temp;
set<string> st;
int n;
string a[maxn];
int main()
{//freopen("D:\\code\\text\\input.txt","r",stdin);//freopen("D:\\code\\text\\output.txt","w",stdout);gbtb;cin >> n;n++;repd(i, 1, n) {cin >> a[i];}repd(i, 1, n) {repd(j, 0, i - 1) {int x = i;int y = j;for (int len = 1;; len++) {temp = "";if (x + len > n) {break;}temp.pb(a[x][y]);temp.pb(a[x + len][y]);temp.pb(a[x + len][y + len]);sort(ALL(temp));st.insert(temp);}}}for (int i = n; i >= 1; --i) {repd(j, 0, i - 1) {int x = i;int y = j;for (int len = 1;; len++) {temp = "";if (x - len < 0 || y - len < 0 || y >= x - len ) {break;}temp.pb(a[x][y]);temp.pb(a[x - len][y]);temp.pb(a[x - len][y - len]);sort(ALL(temp));st.insert(temp);}}}cout << sz(st) << endl;return 0;
}inline void getInt(int *p)
{char ch;do {ch = getchar();} while (ch == ' ' || ch == '\n');if (ch == '-') {*p = -(getchar() - '0');while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 - ch + '0';}} else {*p = ch - '0';while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 + ch - '0';}}
}
转载于:https://www.cnblogs.com/qieqiemin/p/11455504.html
“美登杯”上海市高校大学生程序设计赛B. 小花梨的三角形(模拟,实现)相关推荐
- “美登杯”上海市高校大学生程序设计邀请赛 **D. 小花梨的取石子游戏**
"美登杯"上海市高校大学生程序设计邀请赛 (华东理工大学) D. 小花梨的取石子游戏 Description 小花梨有?堆石子,第?堆石子数量为??,?堆石子顺时针编号为1 − ? ...
- “美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)
Problem A 小花梨的字符串 https://acm.ecnu.edu.cn/contest/173/problem/A/ 题意:对区间子字符串排列,使得满足条件,求排列最长. 题解: C++版 ...
- “美登杯”上海市高校大学生程序设计 C. 小花梨判连通 (并查集+map)
Problem C C . 小 花梨 判连通 时间限制:2000ms 空间限制:512MB Description 小花梨给出?个点,让?位同学对这?个点任意添加无向边,构成?张图.小花梨想知道对于 ...
- 美登杯”上海市高校大学生程序设计邀请赛 Problem E 、 小 花梨 的数组 (线段树)...
Problem E E . 小 花梨 的数组 时间限制:1000ms 空间限制:512MB Description 小花梨得到了一个长度为?的数组?,现在要对它进行三种操作: ⚫ 1 ? ] ∗ ⚫ ...
- “美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)E. 小花梨的数组
题目链接:https://acm.ecnu.edu.cn/contest/173/problem/E/ 题意:Description 小花梨得到了一个长度为?的数组?,现在要对它进行三种操作: ⚫ 1 ...
- 小花梨判连通(DFS或BFS或并查集+vector+map)——“美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)
(https://acm.ecnu.edu.cn/contest/173/problem/C/) 题目大意: 小花梨给出?个点,让?位同学对这?个点任意添加无向边,构成?张图.小花梨想知道对于每个点? ...
- “美登杯”上海市高校大学生程序设计邀请赛(华东理工大学) 小花梨的取石子游戏(博弈)
Description 小花梨有?堆石子,第?堆石子数量为??,?堆石子顺时针编号为1 − ?(如图) . 游戏将进行?轮,每轮游戏单独进行,互不干扰,每轮初始时第?堆石子数目为??. 第?轮从编号为 ...
- 上海市高校大学生程序设计邀请赛 C:小花梨判连通
上海市高校大学生程序设计邀请赛 C:小花梨判连通 Problem C.小花梨判连通 时间限制:2000ms 空间限制:512MB Description 小花梨给出?个点,让?位同学对这?个点任意添加 ...
- 字节跳动杯2018中国大学生程序设计竞赛-女生专场题解
以下所有AC题解程序来自"仙客传奇"团队. A. 口算训练 题解链接: ABDFHK "字节跳动杯"2018中国大学生程序设计竞赛-女生专场 B. 缺失的数据范 ...
最新文章
- Python设计模式-状态模式
- Pascal常用函数
- mysql的慢查询日志功能_MySQL 慢查询日志
- 某房产中介服务器托管及安全方案(下)
- 博士申请 | 香港科技大学谢知遥教授实验组招收机器学习全奖博士生
- 『收集』体验微软ImageX 玩转系统映像文件
- 获取文本中你须要的字段的 几个命令 grep awk cut tr sed
- 使用putty连接linux
- java 事物_java事务
- 对于计算机网络技术的课程,计算机网络技术课程剖析.doc
- Maven聚合工程怎么变回普通的Maven工程
- putty 32位_了解linux系统远程操作软件,putty的安装过程!
- mfc在调整界面时左边的控件会丢失_Qt项目中如何完成一个漂亮的界面
- linux进程共享内存通信,linux下进程通信方式--共享内存
- iOS面试题06-其他
- 2018-2-13-win10-uwp-如何让WebView标识win10手机
- r5驱动 索尼exmor_索尼Exmor APS HD CMOS弱光测试
- java模拟usb接口_Java练习:一个简单的USB接口程序设计
- 保险资管需求多元化 壹资管平台赋能行业智能化转型
- zblog mysql修改_zblog数据库批量替换https的方法
热门文章
- 打印用户在指定时间段内做过的SAP Fiori Launchpad personalization明细
- 使用SAP WebIDE往Github上推送代码修改时遇到错误消息 Commit request failed Commit failed. Ref must be HEAD and is HEAD
- SAP Spartacus organization unit里org list的focus实现问题
- SAP云平台上应用的HTTPS证书
- SAP Fiori应用中事务锁的实现 - Transaction Lock实现机制
- 如何在SAP Server Side JavaScript里消费destination
- CRM WebClient UI的浏览器打印实现
- java 三个版本区别_关于java三个版本的区别
- python学习-类(global、nonlocal、继承、多态)
- ajax获取对象获取不了属性,Ajaxing JavaScript变量到Django视图获取:AttributeError:“WSGIRequest”对象没有属性“data”...