Trie基础 Trie字典树又叫前缀树(prefix tree),用以较快速地进行单词或前缀查询,Trie节点结构如下: //208. Implement Trie (Prefix Tree)class TrieNode{ public: TrieNode* children[]; //或用链表.map表示子节点 bool isWord; //标识该节点是否为单词结尾 TrieNode(){ memset(children,,sizeof(children)); isWord=false; }…
方形画圆 解决方案: 循环偏移5角度画方形 效果图: Python 源码 import turtle; window = turtle.Screen(); window.bgcolor("pink") def draw_circle(): square = turtle.Turtle(); square.shape("turtle"); square.color("blue"); square.speed(-3); max_rot = 360;…
1.题目描述 2.问题分析 使用过两个计数器. 3.代码 class Solution { public: vector<int> sortedSquares(vector<int>& A) { , right = A.size() - ; vector<int> res; while (left <= right) { if (abs(A[left]) >= abs(A[right])) { res.push_back(A[left] * A[le…
题面 自己去\(LOJ\)上找 Sol 直接排序然后\(KDTree\)查询 然后发现\(TLE\)了 然后把点旋转一下,就过了.. # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; IL int Input(){ RG int x = 0,…
http://poj.org/problem?id=3347 题目大意:给定一些正方形的边长,让他们尽可能向左以45°角排列(不能互相重合),求在上面看只能看到哪几个正方形. ———————————————————— https://www.cnblogs.com/Ritchie/p/5491758.html 神犇的博客,我都是借(抄)鉴的…… #include<cstdio> #include<queue> #include<cctype> #include<c…
原题传送门 题意:在圆上有n个节点(珂以构成凸多边形),让你给节点编号,使得将题目给你的边(一棵树)没有交叉 我们钦定1为这个树的根节点.任意节点\(x\)的一颗子树的点应该是圆弧上连续的一段(我也不知道我当时怎么就从HNOI2019d1t3多边形yy到这道题了),所以就是要将一段序列划分成\(siz[x]+1\)段,这个节点的贡献就是\(A_{siz[x]+1}^{siz[x]+1}\).因为父子之间排序方案数互不干扰,所以最后答案就是所有节点贡献的乘积(根节点要特判,因为在一个环上,不能直接…
题面 首先我们可以发现,在每一次 BFS 时按照 \(A→B→C\) 的顺序枚举遍历肯定是字典序最小的. 然后就是普通的 BFS 了. 我们考虑使用 \(\text{STL map}\) 来存储起点状态到当前状态所需的最少步数,以及到达它的上一个状态与上一个操作代号. 具体实现可参考代码. #include <bits/stdc++.h> using namespace std; int n, m; string start = "12345678", endd; //起始…
题目链接 题目大意 t组数据(t<=100) 给你一个半径d和步数k,你最开始在原点(0,0)每次可以让x坐标增加k,或者y坐标增加k 两人轮流走,求谁最后不能走了,谁就输了,都是最优博弈 输的条件为下次走的坐标(x,y)都满足\(x^2+y^2>d^2\) 题目思路 就是一个对称博弈 求最远的到达的(kz,kz)使得\((kz)^2+(kz)^2<=d^2\) 如果\((kz)^2+(kz+k)^2<=d^2\) 则先手胜,否则后手胜 因为后手一定有办法使得坐标变为(kz,kz)…
题目链接 题目大意 给你一个边长为n的正方形和边长为a和b的正方形,要求把边长为a和b的正方形放在长度为n的正方形内,且没有覆盖(可以相邻)求有多少种放法(mod 1e9+7) 题目思路 这个思路不是很容易想 假设a正方形在b正方形左边 那么只考虑纵坐标,还剩下n-a-b个空格,根据插空法则有C(n-a-b+1,2)种方法,然而需要注意可以这两个三角形可以插在一个空格里面则要加n-a-b+1,则总方案为C(n-a-b+2,2)然后考虑横坐标,那么a正方形有(n-a+1)种方法,b三角形有(n-b…
Content 有 \(n\) 个边长为 \(a_i\) 的正方形,第 \(i\) 个正方形的四个顶点分别是 \((0,0),(0,a_i),(a_i,0),(a_i,a_i)\),我们定义一个点属于一个正方形当且仅当这个点完全在正方形内或者在正方形的边界上.试找到一个属于 \(k\) 个正方形的点,或者这样的点不存在. 数据范围:\(1\leqslant n,k\leqslant 50,1\leqslant a_i\leqslant 10^9\). Solution 我们先按边长由小到大给这些…