
算法
朤白
(。・ω・。)
展开
-
Unity 小球融合 贝塞尔曲线模拟
前几天做小球融合,让我陷入困难,后来搜到用贝塞尔曲线模拟中间过渡效果的,但是他们的代码都有显然的和隐藏的错误之处,改了半天都无法达到预期效果,不够直白易懂,但是经过一天的琢磨最后还是搞懂了思路并想到了算法,源码和项目也分享给大家学习,注释很详细,所以我只简单解释思路,示意图:如图,根据两球的距离设置合适的a1和a2,求出P1,P2,P3,P4的坐标,然后根据圆上切线的方向,自己根据圆的半径...原创 2020-04-24 21:03:48 · 1987 阅读 · 0 评论 -
unity 人机五子棋(附程序代码)
unity2018.4.8项目下载网址:https://pan.baidu.com/s/1JdN62plr433NGb8KN1eCUg 这两天交了人工智能的期末大作业,花两天时间查阅思考算法、编写优化程序代码以及制作界面,做了个智能五子棋人机对下系统。思路是结合了求棋盘各点位置的权重与博弈树的一些改进,运行效果是电脑的水平和普通的人差不多,不过有1%左右的概率落子失误(不知道是因...原创 2020-01-09 14:58:34 · 5012 阅读 · 2 评论 -
CF 2018.09.07 22:35 题解(赛)
A. Function HeightYou are given a set of 2n+12n+1 integer points on a Cartesian plane. Points are numbered from 00 to 2n2n inclusive. Let PiPi be the ii-th point. The xx-coordinate of the point PiPi...原创 2018-09-09 14:50:09 · 773 阅读 · 0 评论 -
CF 2018.09.06 00:35 题解(补)
比赛题目链接:http://codeforces.com/contest/1040A. Palindrome DanceA group of nn dancers rehearses a performance for the closing ceremony. The dancers are arranged in a row, they've studied their dancing...原创 2018-09-06 19:28:14 · 444 阅读 · 0 评论 -
栈的基本使用方法
代码:#include<iostream>#include<stack> //栈需要的头文件 using namespace std;int main() { stack <int> s; //定义 s.push(1); s.push(2); printf("尺寸:%d\n",s.size()); printf("空的?:%d\n"...原创 2018-09-13 21:32:42 · 2104 阅读 · 0 评论 -
全排列算法 C语言
#include<stdio.h>void Swap(int *a,int x,int y) { //交换函数 int t=a[x]; a[x]=a[y]; a[y]=t;}void Perm(int *a,int m,int n) { //全排列函数 if(m==n) { for(int i=0;i<n;i++) printf("%d ",a...原创 2018-11-20 11:53:30 · 8169 阅读 · 3 评论 -
约瑟夫环 快速解法
#include<stdio.h>int main() { int a=41; //人数 int d=3; //间隔 int s=1; //起始位置 int j=0; for(int i=2;i<=a;i++) j=(j+d)%i; printf("%d",(j+s-1)%a+1);}原创 2018-12-02 12:11:52 · 1000 阅读 · 0 评论 -
递归解决汉诺塔问题
题目:输出解N层汉诺塔时的移动过程。代码:#include<iostream>#include<vector>using namespace std;vector<int> stick[3]; //动态数组,存储三根柱子上的圆环 int n,ans; //总层数,当前移动步数//求出总步数(answer=2^n-1)int answer(...原创 2018-09-30 15:33:53 · 441 阅读 · 0 评论 -
12个球称3次问题
题目:现在有12个外观一样的球,其中有一个球和其他球质量不一样,请问怎样用一个没砝码的天平秤三次找出这个球? 首先把球编号1到12第一次称时左侧放1 2 3 4右侧放5 6 7 8 要是平了的话明显就是剩下那4个有问题了,再来两次就可以找出来不用我说了吧 要是不平就难办了,先假设左侧重了 咱第二次要左侧放1 6 7 8,右侧放5 9 10 11 (别问...原创 2018-08-14 11:44:20 · 7535 阅读 · 6 评论 -
圆周率高精度算法
#include<stdio.h>#define MAX 1000000 //f数组要足够大,否则计算较多位数时可能会发生数组越界#define WEI 100 // 小数点后位数(必须是4的倍数)int a,b,c,d,e,f[MAX],g;int main() { a=10000; b=c=WEI/4*14; d=e=0; g=c*2; for...原创 2018-08-11 16:34:45 · 4748 阅读 · 0 评论 -
DFS求解数独算法
以前也想过很久解数独的算法,但是没有得到很简单的方法,某天看到某位学长的代码,恍然大悟,本以为暴力搜索会很花时间(10^81种可能),没想到实际上由于各种限制,枚举次数竟然普遍小于10000次,用dfs便可实现每种可能都列举。这样计算一个数独就很快了(不到1ms),下面附上自己理解改动并加了注释的代码,DEV编译可能会效果好一些。代码:#include <stdio...原创 2018-09-25 21:22:17 · 3322 阅读 · 2 评论 -
CF 2018.09.02 22:35 题解(补)
比赛题目链接:http://codeforces.com/contest/1037A. PacketsYou have nn coins, each of the same value of 11.Distribute them into packets such that any amount xx (1≤x≤n1≤x≤n) can be formed using some (pos...原创 2018-09-03 20:42:18 · 845 阅读 · 0 评论 -
分治排序(归并排序)
思路借鉴的,具体实现方法自己想的,考虑到用队列存储每次小部分排序时的序列也许可行,并且这方法可以很巧妙的在把队列中数据返回给数组时将其顺便清空,不过存取仍然是很浪费时间的,只是控制在了常数级别倍数差时间而已,复杂度为O(nlogn),实际试了一下,排序一千万个数,基本这样子: 一千万个数排序花了大约10秒。1e7大约是2的23次方,也就是说计算量为23*1e7=2*1...原创 2018-07-18 17:18:11 · 557 阅读 · 6 评论 -
线段树(点修改)
线段树和树状数组有很多相似之处,能用树状数组写的题,线段树也一定能,而树状数组又因为其用二维数组存储的关系,当数据量太大时内存可能会不够,而且也没法对区间修改,相比之下,线段树就是满满的优点了。 不过,写法复杂难懂,可能也是它的一个缺点,它至少要包括三个函数,分别是数据的初始化,数据的修改,数据的查询,我想了一下觉得前两个应该可以合并,就默认初始全都是0,然后把初始化...原创 2018-07-01 13:07:57 · 489 阅读 · 1 评论 -
优先队列与贪心 POJ3614
SunscreenTo avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her hide with sunscreen when they're at the beach. Cow i has a minimum and maximum SPF rating (1 ≤ minSPFi...原创 2018-04-11 22:54:22 · 428 阅读 · 0 评论 -
优先队列 POJ2010
Moo University - Financial Aid Bessie noted that although humans have many universities they can attend, cows have none. To remedy this problem, she and her fellow cows formed a new university called ...原创 2018-04-12 23:58:32 · 191 阅读 · 0 评论 -
最短路——floyed算法 HDU1874
畅通工程续 某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。 现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。Input本题目包含多组数据,请处理到文件结束。 每组数据第一行包含两个正整数N和M(0<N<200,0<...原创 2018-04-18 22:15:17 · 216 阅读 · 0 评论 -
最短路——Dijkstra算法 HDU2066
一个人的旅行 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给...原创 2018-04-19 21:54:56 · 290 阅读 · 0 评论 -
最短路——Dijkstra变形 POJ1797
Heavy Transportation Background Hugo Heavy is happy. After the breakdown of the Cargolifter project he can now expand business. But he needs a clever man who tells him whether there really is a way fr...原创 2018-04-20 22:09:15 · 384 阅读 · 0 评论 -
树状数组 通俗易懂地从头讲\(^_^)/
怎么理解树状数组?先从最最最最基本简单的开始讲起: 首先说明树状数组并不是像优先队列那样的新的代码知识,用的还是普通的数组,只是数据在数组中存储的方法很特别,这种特别的方法对于我们来说可能会觉得又麻烦又难懂,但是计算机用起来却会特别快,快很多倍,acm的比赛中对于运行时间的要求是很苛刻的,所以学会使用花时间较小的算法就显得非常重要了。在讲它之前,先看一张图: 是不是很像...原创 2018-04-24 23:45:24 · 386 阅读 · 0 评论 -
快速幂运算
#include<stdio.h>int main() { float a,ans=1,x[1000]; int b,i,j; scanf("%f%d",&a,&b); x[0]=a; for(i=2,j=1;i<=b;i*=2,j++) x[j]=x[j-1]*x[j-1]; for(i=0;;i++,b/=2) { if(b==0) brea...原创 2018-05-10 16:05:30 · 328 阅读 · 0 评论 -
最小公倍数和数论——UVa10791-Minimum Sum LCM
大致题意给定一个1e10以内的正整数a,试着求初出这样一串数列,它们的最小公倍数为a,输出这个数列元素和的最小值(元素数量至少为2)。解题思路很明显最终答案的元素中,任意两个元素的最大公约数都要是1,否则肯定存在另一个和更加小的数列,所以当我们把a分解成多个质数相乘时,必须要把相同的数乘在一起合并为一个数,另外还要处理一些特殊情况比如a=1,a为质数等等。AC代码#include<iostr...原创 2018-05-12 13:45:04 · 247 阅读 · 0 评论 -
gcd和枚举 CodeForces-892C
原题网址:CodeForces-892C大致题意:给定一个长度为n的数组,现在要进行一种操作,即把其中两个相邻的元素的最大公约数(GCD)求出来,并赋值给两个其中的一个,问这样的操作至少要多少次才能把数组中所有元素都变成1,如果不存在方法,输出-1。大致思路:显然数组中只要有了一个1,再执行n-1次就一定能把所有数变成1,因为1和任何数的GCD都是1。所以问题转化成了求出产生1所需要的最小步数,通...原创 2018-05-07 22:35:34 · 384 阅读 · 0 评论 -
凸多边形的判定方法
我的思路:首先当然要在平面直角坐标系中知道每个点的坐标1. 将n边形的顶点按照横坐标从小到大排序,记为a[0]~a[n-1]。2. 分别求出a[0]与a[1]~a[n-1]连线的斜率,记作k[1]~k[n-1]。3. 将这些点按照其斜率( k[1] ~ k[n-1] ) 从小到大排序,重新记作a[1]~a[n-1]。4. 按照新的顶点序号顺序分别求出相邻两个点连线的斜率...原创 2018-06-21 10:20:57 · 7395 阅读 · 0 评论 -
简单查并集 HDU 1213
Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know each other, a...原创 2018-04-15 22:19:58 · 194 阅读 · 0 评论