算法
qq_35009005
这个作者很懒,什么都没留下…
展开
-
快速幂
#include long PowerMod(long long A, long long B, long long C){ long ans = 1; A %= C; while (B > 0) { if (B % 2 == 1) { ans = (ans * A) % C;原创 2016-12-16 11:26:47 · 222 阅读 · 0 评论 -
拉丁方正
#include #include using namespace std; struct Node{ int data; Node *Next; }; int main(){//拉丁方正问题 int n; cin>>n; Node *pNode=(Node*)malloc(sizeof(Node)); p原创 2017-04-29 14:55:31 · 324 阅读 · 0 评论 -
约瑟夫问题
#include #include using namespace std; struct Node{ int data; Node *Next; }; int main(){//约瑟夫问题 Node *pNode=(Node*)malloc(sizeof(Node)); pNode->data=1; pNode->N原创 2017-04-29 14:54:45 · 256 阅读 · 0 评论 -
多维向量vector的初始化
vector > ope; 对于ope多维向量来说,如果没有初始化其长度,是不可以通过ope[0][1]来初始化的,这时系统会报错!解决方法:1.就是用push_back()函数向末尾添加元素。#include #include #include using namespace std; int main(){ vector > ope;原创 2017-04-29 14:53:57 · 632 阅读 · 0 评论 -
hdu 1166
#include#include#includeusing namespace std;const int maxn=50000+20;int c[maxn];int N;int lowbit(int x){ return (x &(-x));}void change(int i,int x){ while(i<=N){ c[i]+=x; i原创 2016-12-23 20:46:32 · 242 阅读 · 0 评论 -
杭电1754
#include#include#includeusing namespace std;const int maxn=200000+100;int a[maxn];struct Node{ int data; int left,right;};Node b[maxn*10];int max(int x,int y){ return x>y ? x:y;}原创 2016-12-27 23:37:19 · 254 阅读 · 0 评论 -
堆排序 与 快速排序
#include#includeusing namespace std;int a[10]={2,5,8,1,3,4,10,9,7,45};//待排序的数组int b[11]={-1,2,5,8,1,3,4,10,9,7,45};//待排序的数组//快速排序void QuikSort(int A[],int begin,int end){ if(begin>=end) retur原创 2016-12-23 11:19:16 · 313 阅读 · 0 评论 -
Ants(No.1852)
最先想到的应该是,暴力求解,即:穷举树所有蚂蚁的朝向问题,但这样时间复杂度回达到O(2^n)指数级别的。这显然不是我们想要的。因此,我们来换一种思维:题目中让我们计算的是,当蚂蚁全部掉下去所花的最短时间和最长时间。当两只蚂蚁相遇时,会沿路返回,直到结束。那么,我们是否可以看做当两只蚂蚁相遇时,并没有沿路返回,而是交换了身体,继续向前走。也就是说,在整条杆上,并没有存在原路返回的现象原创 2016-11-27 09:04:27 · 186 阅读 · 0 评论 -
算法的优化(举例1)
前几天,由于忙着期末考试,一直没有去看算法书,过了几天,感觉也忘得差不多了。所以,以后要继续加油了。原创 2016-11-29 22:35:05 · 566 阅读 · 0 评论 -
博弈论
巴什博弈题意:一堆n个物品,两人轮流取,每次取1至m个,最后取完者胜。可以发现,两人每次取的时候,两人所取物品之和最多可以为(1+m)个,也就是说,游戏每进行一轮,物品可减少(m+1)个,所以,要想先取到第n个物品,那么他就要先取出n-(m+1)物品,再下一次为 n-2(m+1),依次类推.......因此,可以发现r=n%(m+1) ,如果r==0的话,则后取物品的人获胜,反之,原创 2016-12-07 13:11:09 · 237 阅读 · 0 评论 -
魔术师发牌问题
由于最近在学习链表,所以写了几个关于循环链表的问题。但由于刚刚开始学,代码写的并不是很好。但想记录一下。#include #include using namespace std; struct Node{ int data; Node *Next; }; int main(){//魔术师发牌问题 Node *pNode=(Node*)mal原创 2017-04-29 14:56:28 · 327 阅读 · 0 评论