题目:click

1.三角魔法

叉乘判断。注意三点构不成三角形的坐标情况,应该是要非退化三角形。(粘个板子)

typedef long long ll;
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fclass Solution {public:struct Point {ll x,y;};ll solve(Point p1,Point p2,Point p3) {return ((p1.x-p2.x)*(p3.y-p2.y)-(p1.y-p2.y)*(p3.x-p2.x));}string castMagic(vector<vector <int > > &triangle, vector<int> &point) {Point P,A,B,C;P.x=point[0];P.y=point[1];A.x=triangle[0][0],A.y=triangle[0][1];B.x=triangle[1][0],B.y=triangle[1][1];C.x=triangle[2][0],C.y=triangle[2][1];if(solve(A,B,C)==0) {return "No";}ll ca,ba,cb;ca=solve(C,A,P);ba=solve(B,A,P);if((ca>0&&ba>0)||(ca<0&&ba<0))return "No";if(ca==0&&ba==0) return "Yes";cb = solve(C, B, P);if (cb == 0) return "Yes";if (ba == 0){if ((ca > 0 && cb > 0) || (ca < 0 && cb < 0))return "No";else return "Yes";}if ((ba > 0 && cb > 0) || (ba < 0 && cb < 0))return "Yes";else return "No";}
};

2.区间异或

RMQ板子一打,处理出区间的最大最小。直接异或。
貌似分治或者线段树做标记也可以。

typedef long long ll;
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3f
class Solution {public:int stmax[50010][20];int stmin[50010][20];void init(vector<int> &a){int i,j,k;int n=a.size();for(i=1;i<=n;i++)stmax[i][0]=stmin[i][0]=a[i-1];int t=log2(n)+1;for(int j=1;j<t;j++){for(int i=1;i<=n-(1<<j)+1;i++){stmax[i][j]=max(stmax[i][j-1],stmax[i+(1<<(j-1))][j-1]);stmin[i][j]=min(stmin[i][j-1],stmin[i+(1<<(j-1))][j-1]);}}}int solvemax(int l,int r){int k=log2(r-l+1);return max(stmax[l][k],stmax[r-(1<<k)+1][k]);}int solvemin(int l,int r){int k=log2(r-l+1);return min(stmin[l][k],stmin[r-(1<<k)+1][k]);}int Intervalxor(vector<int> &num, vector<vector<int>> &ask) {init(num);int ans=0;for(int i=0;i<ask.size();++i) {int hh1=solvemax(ask[i][0],ask[i][1]);int hh2=solvemin(ask[i][2],ask[i][3]);ans^=(hh1+hh2);}return ans;}
};

3.五字回文


直接暴力,但是需要判断一下是三个不同的字符组成的长度为5的回文串。

class Solution {public:int Fivecharacterpalindrome(string &s) {int sum=0;for(int i=0;i<s.length();++i) {int j=i+4;if(j>=s.length())break;if(s[i]==s[j]&&s[i+1]==s[j-1]&&s[i]!=s[i+1]&&s[i]!=s[j-2]&&s[i+1]!=s[j-2]){sum++;}}return sum;}
};

4.小栖的金字塔


施罗德数(超级卡特兰数),施罗德数是一组可用于解决组合数学中某些问题的序列。
在组合数学中,施罗德数用来描述从(0,0)到(n,n)的格路中,只能使用(1,0)、(0,1)、(1,1)三种移动方式,始终位于对角线下方且不越过对角线的路径数。
施罗德数的前几项为1, 2, 6, 22, 90, 394, 1806, 8558, 41586, 206098,…


递推:
(n+1)∗Sn=(6∗n−3)∗Sn−1−(n−2)∗Sn−2(n+1)*S_n=(6*n-3)*S_{n-1}-(n-2)*S_{n-2}(n+1)∗Sn​=(6∗n−3)∗Sn−1​−(n−2)∗Sn−2​,第i项的施罗德数(超级卡特兰数)为Si−1∗2S_{i-1}*2Si−1​∗2(第一项除外)。
(证明推导目前不会)

第一个式子可以形象理解为从(0,0)至(n,n)只能往右,上,右上,从0–n-1-k的方案数乘以0–k的方案数,Sn−1S_{n-1}Sn−1​即为走斜线的时候。

上述题目便可以解决了。

typedef long long ll;
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3f
class Solution {public:const ll mod=1e9+7;/*** @param n: The number of pyramid levels n* @param k: Possible coordinates k* @return: Find the sum of the number of plans*/ll num[10000010];ll quickpow(ll a,ll n) {ll res=1;while(n) {if(n&1) {res=(res*a)%mod;}n>>=1;a=(a*a)%mod;}return res%mod;}int pyramid(int n, vector<int> &k) {num[1]=num[0]=1;for(ll i=2;i<=n;++i) {num[i]=((6*i-3)*num[i-1]%mod-(i-2)*num[i-2]%mod+mod)%mod*quickpow(i+1,mod-2)%mod;}ll ans=0;for(int i=0;i<k.size();++i) {if(k[i]==n||n==1) {ans=(ans+1)%mod;continue;}ans=(ans+(num[n-k[i]]*2)%mod)%mod;}return (int)ans;}
};

(天池)超级码力在线编程大赛初赛 第2场相关推荐

  1. 阿里云天池超级码力在线编程大赛初赛 第2场 ABCD(A.计算几何 判断点在三角形内 D.大施罗德数/超级卡特兰数)

    心得 打了一下被群友吐槽的比赛,阅读体验极差 阴间题面,读题1小时,AC5min,原题警告 思路来源 https://blog.csdn.net/PleasantlY1/article/details ...

  2. 超级码力在线编程大赛初赛 第2场 1.三角魔法

    超级码力在线编程大赛初赛 第2场 1.三角魔法 题目链接 描述 小栖必须在一个三角形中才能施展魔法,现在他知道自己的坐标和三个点的坐标,他想知道他能否施展魔法 −1e9≤xi,yi≤1e9-1e9\l ...

  3. 超级码力在线编程大赛初赛第1场-1-树木规划题解

    目录 题目描述 示例 输入 输出 说明 分析 代码 动规 贪心 其他题目 题目描述 在一条直的马路上,有n棵树,每棵树有一个坐标,代表它们距离马路起点的距离. 如果每相邻的两棵树之间的间隔不小于d,那 ...

  4. 超级码力在线编程大赛初赛 第3场 1.最大公倍数

    超级码力在线编程大赛初赛 第3场 1.最大公倍数 题目链接 描述 小栖有一个区间,他准备从中取三个数,他想知道如何取才能使得它们的最小公倍数最大 请直接告诉小栖最小公倍数是多少. 示例 输入: a = ...

  5. 超级码力在线编程大赛初赛 第2场 题解

    超级码力在线编程大赛初赛 第2场 题解 题目出的对退役老年选手很友好,拿个T恤跑路- 下面的题解仅代表个人观点,出了问题,概不负责. 比赛链接:https://tianchi.aliyun.com/o ...

  6. 阿里云 超级码力在线编程大赛初赛 第2场 题目4. 小栖的金字塔(超级卡特兰数+除法求模/乘法逆元)

    文章目录 1. 题目 2. 解题 1. 题目 来源:https://tianchi.aliyun.com/oj/15165469968503404/76745683739284070 2. 解题 按道 ...

  7. 阿里云 超级码力在线编程大赛初赛 第4场 题目3. from start to end

    文章目录 1. 题目 2. 解题 1. 题目 样例1: 输入: "abcd" "bcda" 输出: true样例2: 输入: "abcd" ...

  8. 阿里云 超级码力在线编程大赛初赛 第3场 题目2. 房屋染色(DP)

    文章目录 1. 题目 2. 解题 1. 题目 有n个房子在一列直线上,现在Bob需要给房屋染色,共有k种颜色. 每个房屋染不同的颜色费用也不同,Bob希望有一种染色方案使得相邻的房屋颜色不同. 但Bo ...

  9. 阿里云 超级码力在线编程大赛初赛 第3场 题目1. 最大公倍数

    文章目录 1. 题目 2. 解题 1. 题目 来源:https://tianchi.aliyun.com/oj/15179470890799741/85251759933690467 2. 解题 看的 ...

最新文章

  1. Apache 基金会宣布 Apache Pulsar 毕业成为顶级项目
  2. python迭代器两个基本方法可供参考_浅析python迭代器和生成器
  3. Android证书通过keytool获取sha1、sha256、MD5
  4. python如何编程-如何入门Python编程
  5. Hibernate之一级缓存和二级缓存
  6. 算法与数据结构(插入排序)
  7. Linux 分割、合并文件
  8. Apollo自动驾驶入门课程第⑩讲 — 控制(下)
  9. 注释为基础的SpringMVC
  10. 【转】成为一名推荐系统工程师永远都不晚
  11. 763-GMAX3809 1.1” 900万分辨率全局快门CMOS图像传感器
  12. 机器人领域期刊会议汇总
  13. .jnlp 文件打开方式
  14. laravel 输出最后执行sql 附:whereIn用法
  15. ArcMap批量等分割线流程
  16. ABP实战--集成Ladp/AD认证
  17. linux系统登陆微信,在Deepin 20系统下实现电脑端登陆两个微信账号的方法
  18. 头歌-信息安全技术-【实训10】HTML信息隐藏、动态分析技术
  19. html5 css背景图片满,css background-size与背景图片填满div
  20. 讲人话科普,Python是个啥?为啥大家都在学?

热门文章

  1. Linux环境下,文件的压缩/解压
  2. dwz打开自定义dialog
  3. 基于马尔科夫链的股市大盘指数预测
  4. PRODUCT_CHARACTERISTICS 详解
  5. 解决word中无法粘贴问题(Ctrl+V失灵问题)
  6. Linux下内存检测工具:asan
  7. Wine零知识学习1 —— 介绍
  8. Linux中RPM、YUN和克隆
  9. [题解]LuoGu2698: [USACO12MAR]花盆Flowerpot
  10. oracle trim没用,Oracle中Trim函数的使用方法