- 博客(650)
- 收藏
- 关注
原创 Weight the Tree CodeForces - 1646D
http://codeforces.com/contest/1646/problem/D在“好”点不能相邻的条件下,使“好”点的数量最多,典型树型DP。在使“好”点的数量最多的条件下,使权重最小(非“好”点权重为1,“好”点权重为邻接点权重之和),也可按树型DP处理。#include <bits/stdc++.h>using namespace std;const int maxn=2e5+10;struct node{ int v,tp,next;};no
2022-03-05 18:50:22 324 1
原创 Big Brush CodeForces - 1638D
http://codeforces.com/contest/1638/problem/D按题意着色则需要考虑先后次序问题,次序问题一般用拓扑解决。#include <bits/stdc++.h>using namespace std;const int maxn=1e3+10;struct node{ int x,y,c;};queue <node> que;node ans[maxn*maxn];int ary[maxn][maxn],book
2022-02-20 10:52:01 328
原创 MEX Sequences CodeForces - 1613D
http://codeforces.com/contest/1613#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll mod=998244353;const int maxn=5e5+10;ll dp[2][maxn];int n;int main(){ ll ans; int t,i,val; scanf("%d",&t);
2022-02-11 18:21:41 496
原创 Range and Partition CodeForces - 1631D
http://codeforces.com/contest/1631/problem/D只要保证“[x,y]内的数量-[x,y]外的数量>=k”,则一定存在对应的划分。那么可以分为两个独立小问题:(1)如何确定x与y满足“[x,y]内的数量-[x,y]外的数量>=k”(2)如何找出划分。(1)是典型最大最小化,二分即可#include <bits/stdc++.h>using namespace std;const int maxn=2e5+10;int a
2022-02-08 12:14:16 493
原创 New Year Concert CodeForces - 1632D
http://codeforces.com/contest/1632/problem/D“dcan beany positive integer”是关键:既然可选任意数,则选大于1e9的素数即可。线段树用于区间查询,AC代码复杂度为n*logn*logn。其中logn*logn为二分*区间查询,可通过修改区间查询来省略二分(线段树本来就在不断二分),将复杂度降为n*logn。#include <bits/stdc++.h>using namespace std;cons..
2022-02-07 22:06:02 469
原创 手写数字识别 手动实现+基于Pytorch实现
利用sklearn中的数据集手动实现:import numpy as npfrom sklearn.datasets import load_digitsfrom sklearn.preprocessing import LabelBinarizerfrom sklearn.model_selection import train_test_splitimport warningsimport randomwarnings.filterwarnings('ignore')random.s
2020-12-02 18:16:46 311
原创 使用感知机对随机生成数据集进行分类 (线性可分)
学习参考《统计学习方法》现存疑惑:对于书中解释需进一步理解代码如下:import numpy as npfrom matplotlib import pyplot as pltnp.random.seed(0)X=np.r_[np.random.randn(20,2)-[3,3],np.random.randn(20,2)+[3,3]]Y=20*[-1]+20*[1]w,b=[0.0,0.0],0.0step=0.01while True: p=-1.
2020-07-20 18:21:48 1972
原创 使用SVM对随机生成数据集进行分类 (线性可分 硬间隔)
具体数学原理参考《统计学习方法》在学习过程中有疑惑如下:一直想不明白为什么式7.11中的分子没有用并且可以被当作常数下面的解释是当w与b同比例变换时,函数间隔(即分子)亦会同比例变换。的确是这样,自己纸上写一下就好。但是为什么w和b一定要同比例变换?如果不同比例的话上述结论就不成立了啊?后来自己想到的解释是:我们最终要求的参数是w和b,而w和b组合在一起就代表了一个平面。对于整个问题而言,我们要找的就是一个可以是几何间隔最大的超平面,可以大体表示为y=f(x)的形式,其中x代
2020-07-15 17:47:00 2763
原创 Oil Deposits ZOJ - 1709
https://zoj.pintia.cn/problem-sets/91827364500/problems/91827365208第一次用Python来A算法题习惯问题 和用C写的大差不差的样子。。import numpy as npimport queuedef bfs(e,book,n,m,x,y): next=[[0,-1],[-1,0],[0,1],[1,0],[-1,-1],[-1,1],[1,1],[1,-1]] que=queue.Queue().
2020-07-14 10:55:04 156
原创 使用K近邻对iris数据集进行分类
听了好几年的K近邻算法 今天终于接触到了原理很简单 讲样本映射为多维空间中的点无标签新样本 由空间中与其最近的K个点中数量最多的标签来定义以下为暴力实现 高效算法留坑from sklearn import datasetsdef cmp(elem): return elem[0]iris=datasets.load_iris()data=iris.datatarget=iris.targetnum_data,num_feature=data.shapenum_ta
2020-07-13 10:03:03 1644
原创 梯度下降&线性回归
import csvimport random as rdimport matplotlib.pyplot as pltInf=1e9data=csv.reader(open("dataII.csv","r"))L=list(data);X=[];Y=[]for row in L: X.append(float(row[0]));Y.append(float(row[1]))N=len(X);step=0.0001#a=rd.uniform(-Inf,Inf...
2020-05-31 12:37:00 336 2
原创 最小二乘法&线性回归
参考https://b23.tv/aUuSF7import pandas as pdimport numpy as npimport random as rdimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressiondata=pd.read_excel("data.xlsx")features=data["X"].values.reshape(-1,1)target=data.
2020-05-27 17:08:31 279
原创 使用朴素贝叶斯对iris数据集进行分类
贝叶斯分类是数学性较强的分类方法,在处理多属性问题的分类时,主要用到下面两个公式:第二个公式之所以成立,是因为在贝叶斯分类中进行了各属性均与分类标签独立的假设。即X与Ci独立,则有:,,import randomimport numpy as npfrom math import efrom math import powfrom sklearn.datasets import load_irisiris=load_iris()n_tot,n_attr=iri..
2020-05-26 10:17:12 7347 2
原创 生命游戏 蓝桥真题
直接模拟细胞繁殖与死亡的过程 打表记录下每次变化后的活细胞数量 发现有长度为60的循环节 即每60个数加10#include <bits/stdc++.h>using namespace std;const int maxn=1e2+10;char ch[2*maxn][maxn][maxn];int q=200,n=100,m=100;void init()...
2019-05-21 15:14:55 425
原创 磁砖样式 蓝桥真题
老套路 每次递归 都找最左上角的空白位置 这个地方是必须要填满的 如果放不下合适的瓷砖直接返回即可 具有很强的剪枝效果递归时的参数为已铺的面积 若已铺满 则判重后累加答案即可#include <bits/stdc++.h>using namespace std;const int maxn=20;map <int,bool> mp;int book...
2019-05-21 15:02:19 250
原创 凑平方数 蓝桥真题
题意有问题 明明应该是组间无序 却写成组内无序 坑的一批啊先全排列 然后将每个排列都分成数份 因为组间无序 所以先排个序再去重写这道题有两个智障错误 第一是忘开longlong 第二是排序时直接对dfs用的序列排序。。还有注意遇到当前位置是0时要特殊处理#include <bits/stdc++.h>using namespace std;typedef l...
2019-05-20 15:07:23 229
原创 k-Tree CodeForces - 431C
http://codeforces.com/problemset/problem/431/Cdp[i][j]代表走到第(i+1)层权值和为n的方案数 转移方程为dp[i][k+j]+=dp[i-1][k] 其中j是当前边的权值题目要求包含至少一条权值大于等于d的边 用总方案数减去一条都不包含的即可#include <bits/stdc++.h>using name...
2019-05-17 10:07:10 217
原创 Building HDU - 5033
http://acm.hdu.edu.cn/showproblem.php?pid=5033详见注释#include <bits/stdc++.h>using namespace std;const double PI=acos(-1.0);const int maxn=1e5+10;struct node{ double x,h; int tp;...
2019-05-15 22:19:38 239
原创 物流运输 洛谷 - P1772
https://www.luogu.org/problemnew/show/P1772一共n天 每天都对应一张独立的图 dis[a][b][i][j]代表a到b天所有图取并集后 i到j的最短路(即只要某天某个点不能用 则这一段时间内都将该点忽略) floyd预处理一下即可然后dp[i]代表到第i天结束时的最小代价dp[i]=min(dp[i],dp[j-1]+dis[j][i][1][m...
2019-05-15 20:05:25 231
原创 Tree HDU - 6228
http://acm.hdu.edu.cn/showproblem.php?pid=6228考虑每条边的贡献 如果一条边左右两边均有不少于k个点 则不管具体如何着色 该边一定符合条件#include <bits/stdc++.h>using namespace std;const int maxn=2e5+10;struct node1{ int u,...
2019-05-15 09:55:35 209
原创 广场舞 蓝桥真题
https://www.dotcpp.com/oj/problem1838.html50%数据参考博客https://blog.csdn.net/qq_39562286/article/details/80033097很多博客的思路都是 枚举每个小正方形的右上角 然后判断其余三个角是不是在多边形内 但是当出现斜率不存在的直线时就不好使了 比如下面这个样例60 02 02 31 ...
2019-05-14 21:59:30 169
原创 Intersecting Lines POJ - 1269
http://poj.org/problem?id=1269叉积真的是计算几何利器首先对于两条直线(p1 p2) (p3 p4) 若两直线共线 则p3-p1与p2-p1的叉积模为0且p4-p1与p2-p1的叉积模为0否则 用斜率判一下平行最后 如果相交求交点 设交点为p0 则p1-p0与p2-p0的叉积模为0p3-p0与p4-p0的叉积模为0联立后可得a1*x+b1*y+c1...
2019-05-10 19:58:49 181
原创 Segments POJ - 3304
http://poj.org/problem?id=3304利用叉积可以判断一个点在直线的哪一侧 对于两线段确定的直线(u1 v1) (u2 v2)如果u1与v1在(u2 v2)不同侧或u2与v2在(u1 v1)不同侧 则两直线相交对于这道题来说 是否存在一条直线 使所有线段在该直线上的投影都相交于一点 这个问题等价于是否存在一条直线与所有线段相交因为如果存在这样一条直线的话 该直线...
2019-05-10 15:38:24 158
原创 TOYS POJ - 2318
http://poj.org/problem?id=2318利用叉积判断点在线段所确定直线的哪一侧 二分一下即可叉积参考https://www.cnblogs.com/flipped/p/7207560.html#include <cstdio>#include <cstring>#include <algorithm>using na...
2019-05-10 13:10:19 234
原创 Going from u to v or from v to u? POJ - 2762
http://poj.org/problem?id=2762问是否任意两点uv都满足u可达v或v可达u 先强连通缩点 然后暴力n^2扫一遍应该有更好的办法 留坑#include <cstdio>#include <cstring>#include <algorithm>#include <stack>using names...
2019-05-10 08:47:27 372
原创 Strings in the Pocket ZOJ - 4110
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4110先看两个字符串是否相等 若相等则直接用马拉车求回文半径即可否则 找出l和r来 满足[0,l-1]与[r+1,n-1]内两字符串相等 然后看两字符串[l,r]内是否完全相反 若不完全相反 即翻转后仍无法相等则输出0 否则就以(l+r)/2即不相等子串的中心 左右...
2019-05-09 10:38:53 204
原创 Welcome Party ZOJ - 4109
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4109不开心总人数即连通块数 每个块出一个编号最小的人 贪心考虑 与其相识的人可以下批入场 优先队列维护拓扑即可#include <cstdio>#include <cstring>#include <algorithm>...
2019-05-09 09:25:38 236
原创 数的划分 CODEVS - 1039
http://codevs.cn/problem/1039/参考博客https://blog.csdn.net/qq_37321281/article/details/74531143#include <stdio.h>int main(){ int e[201][7]; int n,k,i,j; while(scanf("%d%d",&a...
2019-05-07 22:02:21 198
原创 Trailing Loves (or L'oeufs?) CodeForces - 1114C
http://codeforces.com/problemset/problem/1114/C将b素因子拆分 形如b=(a1^p1)*(a2^p2)*...*(ak^pk)凑出一个尾0 就需要p1个a1p2个a2...pk个ak 然后看n能提供多少 取最小即可#include <bits/stdc++.h>using namespace std;typedef...
2019-05-07 19:13:32 142
原创 GCD and LCM HDU - 4497
http://acm.hdu.edu.cn/showproblem.php?pid=4497将gcd与lcm素因子分解 如果gcd某个素因子的幂次pi大于lcm对应素因子的幂次qi 那就是凑不出 因为gcd肯定是lcm因子如果pi<=qi xyz三个数中必有一个幂次为pi 必有一个为qi 因为gcd就是取得三者最小 lcm取最大 只剩一个数的幂次ti可变 当ti=pi或ti=qi时 ...
2019-05-07 18:38:15 161
原创 Visible Lattice Points POJ - 3090
http://poj.org/problem?id=3090预处理答案 ans[i]比ans[i-1]多出来的部分 就是2*f(i) 也就是看多出来的一圈点中有多少点与(0,0)的横纵坐标之差互质 画画图就出来了#include <cstdio>#include <cstring>#include <algorithm>using name...
2019-05-07 10:25:25 150
原创 Pagodas HDU - 5512
http://acm.hdu.edu.cn/showproblem.php?pid=5512发现可以建立的寺庙都是a*x+b*y的值域 求一下ab的gcd 则n/gcd则为一共可以修建的寺庙数 判一下奇偶即可#include <cstdio>#include <cstring>#include <algorithm>#include <...
2019-05-07 09:12:17 310
原创 Arc of Dream HDU - 4686
http://acm.hdu.edu.cn/showproblem.php?pid=4686将ai与bi相乘即可得aibi得递推式子 这里让求前n项和 其实就是求递推矩阵的前n项和 若已知前n/2项和 在乘某个矩阵即可得后n/2项和 二分一下即可#include <cstdio>#include <cstring>#include <algorit...
2019-05-06 19:33:51 168
原创 Sum HDU - 4704
http://acm.hdu.edu.cn/showproblem.php?pid=4704题中定义的整数分解 对于n有2^(n-1)种方案 打个表就有规律可是幂次太大 这时要用到欧拉定理 即若a与n互质 则a^f(n)%n=1 (f为欧拉函数)现在要求(2^n)%mod 因为mod=1e9+7为一个素数 所以f(mod)=mod-1 得2^(mod-1)%mod=1 这样就找到了循环...
2019-05-06 18:23:27 166
原创 Bi-shoe and Phi-shoe LightOJ - 1370LightOJ
http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1370两个质数之间得合数得欧拉函数小于较小的质数 (暂时还没想出证明)这样每个合数都可以被一个比它小的素数替代 所以只考虑素数即可 对每个给定的数 找一个欧拉函数值大于该数的数 就相当于找第一个大于该数的素数#include <cst...
2019-05-06 16:04:37 152
原创 The Balance POJ - 2142
http://poj.org/problem?id=2142先求ax+by=gcd(a,b)的一组特解(x0 y0) 而后的ax+by=c的通解(x0*(c/gcd)+t*(b/gcd) y0*(c/gcd)-t*(a/gcd))题目要求的是|x|+|y|最小 其次|a*x|+|b*y|最小的解看别人博客知道 当c>0时 若a>b则x非负 反之则y非负 这样只要保证a>...
2019-05-06 14:07:47 156
原创 C Looooops POJ - 2115
http://poj.org/problem?id=2115拓展欧几里德裸题 以cc为a (1<<k)为b(bb-aa)为c 求(a*x)%b=c得最小非负整数解即可#include <cstdio>#include <cstring>#include <algorithm>using namespace std;ty...
2019-05-05 21:50:28 141
原创 青蛙的约会 POJ - 1061
http://poj.org/problem?id=1061两只青蛙是同时跳的 如果两只青蛙的步子一样大 那永远也无法相遇否则 考虑用拓展欧几里得求(a*x)%b=c的最小非负整数解 将步子之差(m-n)作为a 总长度l作为b 初始距离y-x作为c(注意不能是(x-y))即可#include <cstdio>#include <cstring>...
2019-05-05 20:23:46 180
原创 道路和航路 蓝桥真题
http://lx.lanqiao.cn/problem.page?gpid=T22因为有负权边 只能用spfa 但是数据比较强 只能做到95分。。 可能有其他方法吧主要记一下spfa两种优化第一种是SLF 就是改用双端队列 当一个点v入队列时 判断其和队首点front的大小关系 如果队列为空或者dis[v]>=dis[front] 则把v扔到队尾 否则扔到队首第二种是LLL...
2019-05-05 20:16:55 191
原创 地宫取宝 蓝桥真题
http://lx.lanqiao.cn/problem.page?gpid=T120dp[i][j][k]代表从(1,1)出发到达(i,j)时 总共拿k件物品且以(i,j)处物品为最后一件时有多少种方案 遍历到(i,j)时就看左上角有多少位置的物品价值是小于(i,j)处物品 就从该处转移而来根据样例推测题意 所拿物品相同时 路径不同也不算同一种方案 所以从(ii,jj)转移(i,j)时要...
2019-05-05 10:58:19 149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人