编程
不爱吃代码的熊猫
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
牛客练习赛76
牛客练习赛76 B zzugzx (vs) Kurisu 是一个博弈游戏 注意到(m+1)^n<=5000 那么我们是可以直接考虑爆搜的 总共N个回合,那么两个人就是2*N次操作 定义f[a][b]代表当 ,zzugzx 选了a的数,Kurisu选了b的数,zzugzx赢的概率 a和b分别是n位m+1进制的数,代表n回合他抽到1-m的数放在1~n哪个位置 #include<bits/stdc++.h> using namespace std; int ok[5000][5000]; dou原创 2021-02-03 17:58:03 · 257 阅读 · 0 评论 -
博弈论+状压+记忆化深搜
题目链接 https://ac.nowcoder.com/acm/contest/5944/K 题意 二维平面 n个点,每次可以去掉一条直线上的任意多个点,两个人都足够聪明,拿到最后一个点的人获胜,求谁将获胜(n<=15) 思路 可以通过状压来保存存在哪些点,判断两个状态之间是否可以通过一次去直线操作得到,再通过递归判断下一个状态的输赢状况来决定这个状态的输赢。 就比如说初始状态 111011 下一步状态 100001 通过XOR运算得知 去除了2,3,5三个点,判断三个点是否为一条直线,假如是一条直原创 2020-06-14 19:19:42 · 248 阅读 · 0 评论 -
字符哈希+二分答案求最长回文串
题目 给一个字符串,求出其中是回文串的子串的最大长度 例如: aaaaaa 6 baaaaac 5 常规思路 遍历每个字符,以他为中心,向两边遍历,时间复杂度O(N2) 可以看到是非常慢的 字符串哈希 就比如取个质数P =131 字符串 aabbcc 他的哈希值为 (a-a+1)*p^5+ (a-a+1)*p^4+ (b-a+1)*p^3+ (b-a+1)*p^2+ (c-a+1)*p^1+ (c-a+1)p^0 那么很显然,两个字符串哈希值相等,他们字符串不相等的可能性很低很低很低 接着 字符原创 2020-06-11 18:44:36 · 716 阅读 · 0 评论 -
单调栈经典实战
题意 就比如这张图,有不同高度的柱子,切割一刀,求出矩形的最大面积 很显然,上图最大面积是3*7=21 思路 其实很简单,假如纯暴力,我们遍历每一行,再展开,时间复杂度就是O(N2),那么比如会超时 如何利用我之前说的单调栈来实操呢。 就比如说上面那行,每行的高度是 2 1 7 7 8 1 5 7 那么很显然他们向左做单调不递减的长度为 1 2 3 4 5 1 2 3 同理向右是 2 1 2 1 4 1 1 1 这个求出来的意义是什么? 就是求出每个点可以左右连续不减少的长度 每个点的面积是 s[i]*(.原创 2020-06-10 18:17:53 · 237 阅读 · 0 评论 -
Solve The Maze
题目链接 https://codeforces.ml/contest/1365/problem/D 题意: 比如输入3 * 3 3 3 #B. #… GG. . 代表路可以走 B 代表这是坏人 G 代表这是好人 #代表此路不通 你可以把非 #的地方全变成# 判断能否让所有的好人都到最右下角的点,所有的坏人都不能到右下角的点(当然可以把最右下角的点也堵上,那么久所有人都出不去) 思路 很容易想到,我们必做的事情是 在最右下角的点进行dfs,判断能到达哪些点 但最难的部分就是怎么通过深搜将好人放出,坏人堵住?原创 2020-06-09 13:11:29 · 558 阅读 · 0 评论 -
最大公因数算法
欧几里得算法 思路 比如说gcd(a,b) 那么假设 d 是 a,b 的公因数 那么d|a,d|b 那么 我们先假设 a=kb+x——————(1) 即用b表示a 那么 x =a%b 我们对式(1)变形 x=a-kb 两边对d取模 x%d=(a-kb)%d=0 那么也就是说d也是x的公因数 那么我们就可以求gcd(a,a%b) 一步一步便可将一个数变为0,另一个即为最大公因数 int BigestFactor(int m,int n) { int r=m; while(r!=0) {原创 2020-06-06 21:48:00 · 881 阅读 · 0 评论 -
2019牛客多校联赛—2第二场—H Second Large Rectangle
题意 输入一个01矩阵,求出全为1矩阵中,面积第二大矩阵的面积 输入 01 输出 0 输入 101 输出 1 思路 前缀和 单调栈 我这里只分享思路哈 比如下面: 1 0 1 0 1 0 0 1 1 1 0 1 0 0 0 对上面的五列,我们可以对每一列进行前缀和操作 得到结果: 1 0 1 0 1 1 0 2 1 2 1 1 0 0 0 对得到的结果我们在进行单调栈的操作 PS:单调栈就是可以求得 连续不递减或者连续不递增的长度 那么我们对于第一步求出来的高(前缀和) 和第二问求出来的宽(单调栈)求原创 2020-06-05 21:15:53 · 130 阅读 · 0 评论 -
质数筛选法
问题 给定一个整数N,输出1—N之间所有的质数 经典方法试除法 简单描述一下就是遍历N个数,对于每个数n,从2—√n尝试 做n/m(m为2—√n)依次判断这个数有没有因数来判断是不是质数 我们可以看到时间复杂度为O(n^1.5) 质数筛选法 如下面数字 第一次筛选 2 3 4 5 6 7 8 9 10 11 12 第二次筛选 2 3 4 5 6 7 8 9 10 11 12 第三次筛选 2 3 4 5 6 7 8 9 10 11 12 可以看见对于每个数n,假如他经过之前的数的筛原创 2020-06-04 21:33:58 · 544 阅读 · 0 评论 -
第三届中国计量大学ACM程序设计竞赛个人赛(同步赛)-B -Birthday Gift
Birthday Gift 题目链接:https://ac.nowcoder.com/acm/contest/5795/B 题意:给定两个数组 例如 a=[1 3 5 4 2] b=[2 4 3 5 3] 从 A,B中选出两个索引 如选x,y(1<=x,y<=5(五个数)) 那么他的得分就是min(a[x]+b[y],b[y]+a[x]) 我们的目的就是选出两个索引是的其得分最大 观察他的数据范围是2e5 因此我们要考虑时间复杂度O(N2)以下 思路: 我最先想的是二分答案,但是二分答案检查答案原创 2020-06-03 18:53:15 · 366 阅读 · 0 评论 -
numpy-Kmeans
NUMPY—Kmeans聚类) 此代码实现了欧式距离聚类,k值在1-5之间 import numpy as np import matplotlib.pyplot as plt def show(x, y, crowd): lable = []#存标签 ans=999999 flag=0 for i in range(len(x)): for j i...原创 2019-10-20 23:53:16 · 183 阅读 · 0 评论 -
P1020 导弹拦截
P1020 导弹拦截 思路 简化一下就是求不上升序列长度和上升序列长度 我们可以用stl函数lower_bound与upper_bound### 作用lower_bound会找出序列中第一个大于等于x的数 upper_bound会找出序列中第一个大于x的数 必须在升序中使用 否则需要添加cmp函数,我们这里可以使用简便方法 lower_bound(a + 1, a + 1 + n, x, grea...原创 2019-07-09 21:52:00 · 234 阅读 · 0 评论
分享