题目链接: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. 小花梨的三角形(模拟,实现)相关推荐

  1. “美登杯”上海市高校大学生程序设计邀请赛 **D. 小花梨的取石子游戏**

    "美登杯"上海市高校大学生程序设计邀请赛 (华东理工大学) D. 小花梨的取石子游戏 Description 小花梨有?堆石子,第?堆石子数量为??,?堆石子顺时针编号为1 − ? ...

  2. “美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)

    Problem A 小花梨的字符串 https://acm.ecnu.edu.cn/contest/173/problem/A/ 题意:对区间子字符串排列,使得满足条件,求排列最长. 题解: C++版 ...

  3. “美登杯”上海市高校大学生程序设计 C. 小花梨判连通 (并查集+map)

    Problem C C . 小 花梨 判连通 时间限制:2000ms 空间限制:512MB Description 小花梨给出?个点,让?位同学对这?个点任意添加无向边,构成?张图.小花梨想知道对于 ...

  4. 美登杯”上海市高校大学生程序设计邀请赛 Problem E 、 小 花梨 的数组 (线段树)...

    Problem E E . 小 花梨 的数组 时间限制:1000ms 空间限制:512MB Description 小花梨得到了一个长度为?的数组?,现在要对它进行三种操作: ⚫ 1 ? ] ∗ ⚫ ...

  5. “美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)E. 小花梨的数组

    题目链接:https://acm.ecnu.edu.cn/contest/173/problem/E/ 题意:Description 小花梨得到了一个长度为?的数组?,现在要对它进行三种操作: ⚫ 1 ...

  6. 小花梨判连通(DFS或BFS或并查集+vector+map)——“美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)

    (https://acm.ecnu.edu.cn/contest/173/problem/C/) 题目大意: 小花梨给出?个点,让?位同学对这?个点任意添加无向边,构成?张图.小花梨想知道对于每个点? ...

  7. “美登杯”上海市高校大学生程序设计邀请赛(华东理工大学) 小花梨的取石子游戏(博弈)

    Description 小花梨有?堆石子,第?堆石子数量为??,?堆石子顺时针编号为1 − ?(如图) . 游戏将进行?轮,每轮游戏单独进行,互不干扰,每轮初始时第?堆石子数目为??. 第?轮从编号为 ...

  8. 上海市高校大学生程序设计邀请赛 C:小花梨判连通

    上海市高校大学生程序设计邀请赛 C:小花梨判连通 Problem C.小花梨判连通 时间限制:2000ms 空间限制:512MB Description 小花梨给出?个点,让?位同学对这?个点任意添加 ...

  9. 字节跳动杯2018中国大学生程序设计竞赛-女生专场题解

    以下所有AC题解程序来自"仙客传奇"团队. A. 口算训练 题解链接: ABDFHK "字节跳动杯"2018中国大学生程序设计竞赛-女生专场 B. 缺失的数据范 ...

最新文章

  1. Python设计模式-状态模式
  2. Pascal常用函数
  3. mysql的慢查询日志功能_MySQL 慢查询日志
  4. 某房产中介服务器托管及安全方案(下)
  5. 博士申请 | 香港科技大学谢知遥教授实验组招收机器学习全奖博士生
  6. 『收集』体验微软ImageX 玩转系统映像文件
  7. 获取文本中你须要的字段的 几个命令 grep awk cut tr sed
  8. 使用putty连接linux
  9. java 事物_java事务
  10. 对于计算机网络技术的课程,计算机网络技术课程剖析.doc
  11. Maven聚合工程怎么变回普通的Maven工程
  12. putty 32位_了解linux系统远程操作软件,putty的安装过程!
  13. mfc在调整界面时左边的控件会丢失_Qt项目中如何完成一个漂亮的界面
  14. linux进程共享内存通信,linux下进程通信方式--共享内存
  15. iOS面试题06-其他
  16. 2018-2-13-win10-uwp-如何让WebView标识win10手机
  17. r5驱动 索尼exmor_索尼Exmor APS HD CMOS弱光测试
  18. java模拟usb接口_Java练习:一个简单的USB接口程序设计
  19. 保险资管需求多元化 壹资管平台赋能行业智能化转型
  20. zblog mysql修改_zblog数据库批量替换https的方法

热门文章

  1. 打印用户在指定时间段内做过的SAP Fiori Launchpad personalization明细
  2. 使用SAP WebIDE往Github上推送代码修改时遇到错误消息 Commit request failed Commit failed. Ref must be HEAD and is HEAD
  3. SAP Spartacus organization unit里org list的focus实现问题
  4. SAP云平台上应用的HTTPS证书
  5. SAP Fiori应用中事务锁的实现 - Transaction Lock实现机制
  6. 如何在SAP Server Side JavaScript里消费destination
  7. CRM WebClient UI的浏览器打印实现
  8. java 三个版本区别_关于java三个版本的区别
  9. python学习-类(global、nonlocal、继承、多态)
  10. ajax获取对象获取不了属性,Ajaxing JavaScript变量到Django视图获取:AttributeError:“WSGIRequest”对象没有属性“data”...