博弈
几种无法用常见博弈树解答的题型,寻找必败态。
巴什博弈
问题模型: 有一个堆物品,物品数量为n个,两个人轮流从这堆物品中取物品,规定每次至少取一个,最多取m个,最后取光者得胜。
解决思路: 当n=m+1时,无论先手者取多少个,后手者都能一次性取完剩下的,即先手必败。故可推得当面对n%(m+1)=0时,先手必败。当面对n=r*(m+1)+s时,先手取s,后手者取一定量设为a,先手者再取(m+1)-a,···,每次先手者取完后手者的m+1中剩余量,使后手者始终面对n%(m+1)=0的必败态,先手必胜。
结论:必败态为n%(m+1)=0。
12345678910111213141516 #include<stdio.h>int main(){ int T; scanf("%d",&T); while(T--) { int n,m; scanf("%d%d",&n,&m); if(n%(m+1)==0) prin ...
计算机视觉(本科) 北京邮电大学 鲁鹏 第二次作业 词袋模型图片分类
https://github.com/woriazzc/beiyouCV/tree/master/02
任务
编写一个图像分类系统,能够对输入图像进行类别预测。具体的说,利用数据库的2250张训练样本进行训练;对测试集中的2235张样本进行预测。
数据库说明:scene_categories数据集包含15个类别(文件夹名就是类别名),每个类中编号前150号的样本作为训练样本,15个类一共2250张训练样本;剩下的样本构成测试集合。
数据集详情可参阅: https://qixianbiao.github.io/Scene.html
数据集下载地址: https://figshare.com/articles/15-Scene_Image_Dataset/7007177
使用知识点: SIFT特征、Kmeans、词袋表示、支撑向量机
算法流程
提取数据集中的样本,并划分训练集和测试集
-----------------------特征提取与词典生成-----------------------
对于训练集的所有图片,提取图片的SIFT 特征点,并对SIFT 特征点向量归一化
对所有SIF ...
计算机视觉(本科) 北京邮电大学 鲁鹏 第一次作业 钱币检测
https://github.com/woriazzc/beiyouCV/tree/master/01
任务
编写一个钱币定位系统,其不仅能够检测出输入图像中各个钱币的边缘,同时,还能给出各个
钱币的圆心坐标与半径 。
算法流程
步骤1 :使用 Canny 算法 提取图像边缘
使用高斯滤波器滤波
计算图像的梯度图并获得梯度方向
对梯度图进行非极大化抑制
使用双阈值法获得最终的边缘图
步骤2:在边缘图上利用Hough变换计算圆心与半径
建立参数空间
依据边缘点的梯度方向对参数空间进行投票
依据预设定的投票阈值筛选出初步结果
对已筛选出的结果进行非极大化抑制,得到精确的参数(圆心和半径)
算法简介
Canny 算法
高斯滤波器可以针对服从高斯分布的噪声进行平滑。
图像在 xxx 方向的偏导数可以用核 (−11)\begin{pmatrix} -1 & 1 \\ \end{pmatrix}(−11) 卷积以近似求解,在 yyy 方向的偏导数可以用核 (−11)\begin{pmatrix} -1 \\ 1 \\ \end{pmatrix}(−11) 卷积以近似求解。也就 ...
对word2vec模型的理解
这篇文章只是针对像我这种初学者大致理解word2vec模型的引导,并无数学推导!!
One-hot
对于一个词汇量为 V 的语料库,现在需要给每一个词分配一个向量,使得每个词汇的向量之间不会相互冲突。
One-hot 给出了一个 V 维的向量(V 为语料库的词汇数),每一个单词在向量中占一个位置,则每个单词的向量中有且仅有1位是1,其它都是0.
词嵌入
One-hot给出的词向量尽管两两不冲突,但实在是太过浪费,并且对于词汇来说,每个词汇都不应该是独立的,例如**“我,和,你”,这三个词常常会出现在一起,则我们只要看到“我,?,你”,都能够推出中间那个词应该是“和”,而One-hot却将每个词汇独立出来,即“我”,“和”,“你”**之间变得毫无关系,这在文本情感分析中是致命的。
现在我们的任务是找出一种词汇的向量表示法,使得:
不同词汇的表示不会产生冲突。
词向量的维度尽可能地小。
对于有上下文关联的词汇,它们的词向量也应该有某种关系。
将One-hot所表示的高维度词向量嵌入低维度的空间,这样的方式叫做词嵌入。
Word2Vec模型
Word2Vec就是一种词嵌入模型。
Word ...
2020 CCPC Wannafly Winter Camp Day7
https://ac.nowcoder.com/acm/contest/4138
G. 草莓2
题意:n⋅mn\cdot mn⋅m 的网格,每格初始有一些草莓,每天早上wls收集这格所有草莓,下午向相邻格移动或者不动,每天晚上每格会多一个草莓,问 kkk天最多收集多少草莓。
由于数据量特别小,枚举可以发现始终存在哈密顿回路。
则如果 k>n⋅mk>n\cdot mk>n⋅m 则收集完一圈之后回到第0天的地方再沿路收集最优。
否则直接dfs找最优解。
注意本题dfs可能走重复格子!!如:1000,0,1000,1,1
123456789101112131415161718192021222324252627282930313233343536373839404142#include<bits/stdc++.h>using namespace std;#define ll long longconst int INF = 0x3f3f3f3f;const int maxn = 1e5 + 10;ll n, m, sx, sy, k;ll a[20][20] ...
2020 CCPC Wannafly Winter Camp Day6
https://ac.nowcoder.com/acm/contest/4137
C. 酒馆战棋
签到
题意:有圣盾,嘲讽,剧毒三种属性,只有我方剧毒随从能击杀敌方,我方打,只打一轮,问最多,最少击杀敌方多少人。
直接模拟
1234567891011121314151617181920212223242526272829303132333435363738394041424344#include<bits/stdc++.h>using namespace std;#define ll long longtypedef pair<int, int> pii;const int INF = 0x3f3f3f3f;const int maxn = 1e5 + 10;int T, n;int a1, b1, c1, d1, a, b, c, d;int main() { scanf("%d", &T); while (T--) { scanf("%d%d%d%d%d", &n, & ...
2020 CCPC Wannafly Winter Camp Day5
https://ac.nowcoder.com/acm/contest/4120
A - Alternative Accounts
题意:有 k≤3k\leq 3k≤3 场比赛,知道每场哪些人参加,同一场的账号一定不会是同一个人,问至少有多少真人。
当 k=1k=1k=1 时,最少为参加比赛的人数。
当 k=2k=2k=2 时,最少为 max(num[1],num[2])max(num[1],num[2])max(num[1],num[2]) 。
当 k=3k=3k=3 时,以二进制表示状态,则互补的账户可能是同一个人,且参加两场的只可能会和只参加一场的账号是同一个人。所以把参加两场的先加入答案,再从对应的参加的人数中减掉,表示他们被消耗掉了。最后还剩下的都是只参加一场,且没有人合并的,他们可能三场都是同一个人,所以再取 max(num[1],num[2],num[4])max(num[1],num[2],num[4])max(num[1],num[2],num[4]) 加入答案。
12345678910111213141516171819202122232425262728293 ...
2020 CCPC-Wannafly Winter Camp Day3
https://ac.nowcoder.com/acm/contest/4114
题解 https://ac.nowcoder.com/discuss/363557?type=101&order=0&pos=9&page=1
A. 黑色气球
题意:有n个气球,矩阵i,j表示第i,j个气球的高度和,求每个气球的高度。
当n=2时,由于答案唯一且高度为正整数,所以高度一定都为1.
123456789101112131415161718192021222324252627282930#include<bits/stdc++.h>using namespace std;#define ll long longtypedef pair<int, int> pii;const int INF = 0x3f3f3f3f;const ll inf = 1e18;const int maxn = 1e5 + 10;ll n;ll sum;ll a[1010][1010];int main() { scanf("%lld", ...
2020 CCPC Wannafly Winter Camp Day2
https://ac.nowcoder.com/acm/contest/4010
题解 https://ac.nowcoder.com/discuss/363450?type=101&order=0&pos=15&page=0
A. 托米的字符串
题意:给出一个字符串,求其所有子串中元音字母和’y’的期望占比。
前缀和套前缀和
主要是要得到计算公式。
期望=∑(1子串长度⋅子串含元音个数)子串个数期望=\frac{\sum(\frac{1}{子串长度}\cdot 子串含元音个数)}{子串个数}期望=子串个数∑(子串长度1⋅子串含元音个数)
首先对元音字母求一次前缀和,则 p[r]−p[l−1]p[r]-p[l-1]p[r]−p[l−1] 表示 [l,r][l,r][l,r] 中含元音的个数。
考虑把相同长度的子串合在一起考虑,则对于长度 lenlenlen,起点从 111 到 n−len+1n-len+1n−len+1 ,就是求 1len∑i=1n−len+1(p[i+len−1]−p[i−1])\frac{1}{len} \sum_{i=1}^{n-l ...
2020 CCPC Wannafly Winter Camp Day1
https://ac.nowcoder.com/acm/contest/3979
题解 https://ac.nowcoder.com/discuss/363319?type=101&order=0&pos=18&page=1
A. 期望逆序对
题意:有n个随机数,给出各自的随机区间,现在要求对这些区间重新排列,使得这些随机数形成的逆序对期望最小,求期望值。
按照中点从小到大排序后,n2n^2n2 遍历所有区间,两个区间形成逆序对的概率为1len1⋅∑i=l1r1g(i)len2\frac{1}{len_1}\cdot \sum_{i=l_1}^{r_1}\frac{g(i)}{len_2}len11⋅∑i=l1r1len2g(i)
其中 g(i)g(i)g(i) 为 区间2 中小于 iii 的部分的长度,这里就是要分类讨论的地方了。
g(i)=∑i=max(l1,l2)min(r1,r2)(i−l2)+∑i=min(r1,r2)r2len2g(i)=\sum_{i=max(l_1,l_2)}^{min(r_1,r_2)}(i-l_2)+\s ...