算法
文章平均质量分 61
一头迟钝的猪
记录下自己的一些学习的东西,想到了就更新。。。
展开
-
Mutant Flatworld Explorers
直接模拟BackgroundRobotics, robot motion planning, and machine learning are areas that cross the boundaries of many of the subdisciplines that comprise Computer Science: artificial intelligence, algor原创 2015-02-03 13:09:21 · 372 阅读 · 0 评论 -
Sicily 2369. Nim-B Sum
很简单的题,但WA了好多次,因为我用字符串转来转去,后来注意到可以是1000进制,就直接用数组储存每一位,然后就AC了,这题其实就是没有进位的加法而已代码如下:#include #include #include using namespace std;int j,k,l;int arr1[1000],arr2[1000],res[1000]; void to1(int原创 2015-01-19 22:39:41 · 483 阅读 · 0 评论 -
Sicily 1119. Factstone Benchmark
大概题意:找出最大的n,其阶乘思路:考虑到会爆表,所以取对数,将乘法换成加法#include #include #include using namespace std;int main(){ int n; while(cin >> n&&n!=0){ long long bit_n=(n-1960)/10+2; long long bit=p原创 2015-01-19 16:00:48 · 360 阅读 · 0 评论 -
Sicily 4495. Print permutations
#include #include #include using namespace std;int len;char ch[100];void allsort(int n,int m){ if(n >= len){ for(int i=0; i < len; i++) cout << ch[i]; cout << endl; } else{ for(i原创 2015-01-17 20:38:35 · 355 阅读 · 0 评论 -
Sicily 1890 BallsAgain
#include #include using namespace std;struct bottle{ int num; int cap;};bottle arr[1000];bool reduce1(bottle a,bottle b){ if(a.cap!=b.cap) return a.cap > b.cap; return a.num > b.num;}bo原创 2015-01-17 20:25:25 · 300 阅读 · 0 评论 -
Sicily 1344数列
这道题一开始没什么思路,去网上搜了下,发现原来很有规律,同样是进制转换而已把n转成二进制,再把二进制的那个转成k进制的就行,看下面的例子能更好理解。1, 3, 4,9 , 10 , 12 , 13.....30,31,30+31,32,30+32,31+32,30+31+321, 10, 11, 100, 101, 110 , 111,#include#includeus转载 2015-01-12 01:56:23 · 370 阅读 · 0 评论 -
Sicily 7144. Different Triangles
#includeusing namespace std;bool istriangle(int a, int b, int c){ if(a+b>c&&a+c>b&&b+c>a&&a-b<c&&a-c<b&&b-c<a) return true; return false;}int arry[10001];int main() { int n;原创 2015-01-10 12:50:45 · 493 阅读 · 0 评论 -
Sicily 3712. Matrix multiplication
#includeusing namespace std;int max1[1001][1001];int max2[1002][1001];int sum[1001][1001];int main(){ int n; while(cin >> n){ for(int i=0; i < n; i++) for(int j=0; j < n;原创 2015-01-10 12:49:55 · 318 阅读 · 0 评论 -
Sicily 4312. A + B
#includeusing namespace std;int reserve(int a){ int hehe=0; while(a!=0){ hehe=hehe*10+a%10; a /= 10; } return hehe;}int main(){ int n; cin >> n; whi原创 2015-01-10 12:48:40 · 464 阅读 · 0 评论 -
Sicily 1036. Crypto Columns
#include #include #include using namespace std;char ch[11][11];int arr[100];char ch1[11][11];int main(){ string str; while(cin >> str&&str!="THEEND"){ int len=str.length(); string st;原创 2015-01-26 13:17:47 · 313 阅读 · 0 评论 -
Sicily 1395. Rounders
坑爹的0害我WA好几次#include #include using namespace std;int arr[100];int num_dig(long long n){ int k=0; while(n!=0){ arr[k++]=n%10; n /= 10; } for(int i=0; i < k-1; i++){ if(arr[i]>=5)原创 2015-01-26 22:05:07 · 328 阅读 · 0 评论 -
K-based Numbers. Version 2
DescriptionLet’s consider K-based numbers, containing exactly N digits. We define a number to be valid if its K-based notation doesn’t contain two successive zeros. For example:1010230 is原创 2015-02-01 23:58:08 · 490 阅读 · 0 评论 -
K-based Numbers
动态规划DescriptionLet’s consider K-based numbers, containing exactly N digits. We define a number to be valid if its K-based notation doesn’t contain two successive zeros. For example:原创 2015-02-01 23:47:49 · 315 阅读 · 0 评论 -
Labyrinth(深度搜索)
Administration of the labyrinth has decided to start a new season with new wallpapers. For this purpose they need a program to calculate the surface area of the walls inside the labyrinth. T原创 2015-02-01 16:27:36 · 613 阅读 · 0 评论 -
The Blocks Problem
模拟题型Background Many areas of Computer Science use simple, abstract domains for both analytical and empirical studies. For example, an early AI study of planning and robotics (STRIPS) u原创 2015-01-31 17:41:34 · 454 阅读 · 0 评论 -
How many tiles
#include#include#includeusing namespace std;char maxr[21][21];int count=0;void check(int w,int h,int f,int g){ if((maxr[f][g]=='.'||maxr[f][g]=='@')&&f>=0&&f=0&&g<w){ count+原创 2015-01-09 12:31:28 · 371 阅读 · 0 评论 -
Sicily 4835. Numbersrebmun
水题,练习下map函数和传递引用,忘了把测试的注释掉WA好久不知道哪里错= =#include #include #include using namespace std;void toup(string &str){ int len=str.length(); for(int i=0; i < len; i++) if(str[i]>='a'&&str[i]<='z')原创 2015-01-28 17:07:16 · 436 阅读 · 0 评论 -
天梯 蛇形矩阵
#include using namespace std;int arr[100][100];int main(){ int n,num=2; cin >> n; int d=n/2,f=n/2; arr[f][d]=1; d++; for(int i=2; i <= n-1 ; i+=2){ int k=i;原创 2015-01-28 16:03:43 · 393 阅读 · 0 评论 -
Sicily 1438. Shopaholic
#include #include #include using namespace std;int arr[200000];int main(){ int test; cin >> test; while(test--){ int n; cin >> n; for(int i=0; i < n; i++) cin >> arr[i]; sort原创 2015-01-28 16:01:54 · 327 阅读 · 0 评论 -
Sicily 1201. 01000001
#include#includeusing namespace std;char lala[100000];int main(){ int n; cin >> n; for(int i=1; i <= n; i++){ string str1,str2; int num=0; cin >> str1 >> st原创 2015-01-10 12:44:14 · 377 阅读 · 0 评论 -
Sicily 1294. 高级机密
#include using namespace std; int main(){ int a,b,p; cin>>a>>b>>p; int c = 1 ; while(b!=0) { if(b%2==1) { b = b-1 ; c = (c*a)%p原创 2015-01-10 12:43:07 · 494 阅读 · 0 评论 -
二进制转十进制
根据二进制的换算,如果这个位数是1的话就等于加上2的位数次方,比如100,第三位是1,所以2的3次方就是8,转为10十进制就是8很简单的题,直接放码#include#include#includeusing namespace std;int main(){ int n; cin >> n; while(n--){ string原创 2014-12-13 23:33:32 · 364 阅读 · 0 评论 -
Prime Ring Problem
A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and the sum of numbers in two adjacent circles should be a prime.Note: the number原创 2017-02-20 19:55:42 · 177 阅读 · 0 评论 -
soj 1034. Forest
方法来源:http://blog.csdn.net/guozhengchun/article/details/40761255判断森林是否合法,以及找出最大宽度跟深度,上面博客的方法很好,是将森林变成树来处理的#include #include #include using namespace std;struct node{ i转载 2017-02-20 19:55:55 · 350 阅读 · 0 评论 -
n皇后问题
DescriptionGiven N queens on an N*N chess board, find the number of ways of placing these queens so that they will not attack each other. InputThere are multiple cases. For each case, th转载 2017-02-20 19:56:10 · 388 阅读 · 0 评论 -
堆排序(小根堆)
void push(int x) { h[++n]=x; int index=n; while(index>1 && h[index]<h[index/2]){ swap(h[index],h[index/2]); index=index/2; } }//在数组后面加多一个元素,进行调整时只需要往上调整,跟父节点比较就好(不用从最后原创 2017-02-20 19:56:31 · 678 阅读 · 0 评论 -
多重背包
Time Limit: 1sec Memory Limit:256MB DescriptionOuyang has 6 kinds of coins.The number of the i-th coin is N[i] (0Their value and weight are as follewed:0. $0.01, 3g1. $0.05, 5g2. $0原创 2017-02-20 19:57:06 · 784 阅读 · 0 评论 -
Huffman coding
In computer science and information theory, a Huffman code is an optimal prefix code algorithm.In this exercise, please use Huffman coding to encode a given data.You should output the number of bi原创 2017-02-20 19:57:18 · 877 阅读 · 0 评论 -
二叉树最大宽度
用两个队列找出二叉树的最大宽度#include #include using namespace std;typedef int T;struct treeNode { T data; struct treeNode *left, *right; treeNode(T d, treeNode *l=NULL, treeNode *r=NUL原创 2017-02-20 19:57:30 · 1300 阅读 · 0 评论 -
根据前序中序求后序
原理解说(摘自百度)如前序 为 ABDECGF 中序 为 BDACGEF先 根据前序第一个节点 把中序分为BD和CGEF两部分,A为根节点,A左边为左子树,右边为右子树。再把左右子树分别做上述步骤。以此类推 根据第二,第三...个节点构成二叉树 A原创 2017-04-06 10:18:03 · 485 阅读 · 0 评论 -
SOJ 1107. Simple Puzzle
ConstraintsTime Limit: 10 secs, Memory Limit: 32 MB DescriptionHere is a simple puzzle on numbers. There are n numbers, each of which is of k (kn) distinct and significant digits. When t原创 2017-02-20 19:55:10 · 444 阅读 · 0 评论 -
链表加优先队列做拓扑排序
Description John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task is only possible if other tasks have already been executed.InputThere are mul原创 2016-07-15 17:21:17 · 314 阅读 · 0 评论 -
完全素数
输入一个数,找出这个位上的所有完全素数,完全素数是指一个整数是素数,而且每次去掉最后一个数后它仍是素数,这个题用枚举的话很容易超时,效率低思路:如果一个数是完全素数,那么去掉最后一个数时也是完全素数,这样一直去掉,知道个位也是素数,所以就可以用递归,从个位开始,所以是素数,就乘10再分别加1到9,如果加完还是素数就继续乘十仔加1到9,直到那个 位数,而且是素数就输出来代原创 2014-12-13 23:05:26 · 833 阅读 · 0 评论 -
最小剩余数字
给定一个N位的数字,每位的数码都是1~9之间的数字,要求你删去其中K位数字(K例如6位数字“375426”需要删掉其中3位,可以删掉第二位的7,第三位的5,第六位的6,剩下的数码按原先的相对顺序能够得到数字342,然而另一种方案是删去第二位的7,第三位的5和第四位的4得到更小的数字326。现在的问题是:给定这个N位数和数字K,如何合理的删除数字使得剩下的数字按原来相对顺序重原创 2014-12-13 22:51:20 · 1361 阅读 · 0 评论 -
归并排序求逆对数
给出N个数,你要求出有多少个 (ai,aj) 使得i aj Input第一行为整数N(N第二行为N个整数output 输出逆序对个数逆对数的典型算法有树状数组,归并算法等,我要介绍的就是归并算法归并排序是分治思想的典型运用,要做的主要有两个部分,将两个已排序的数组按顺序插到一起,这个比较简单,定义一个暂时的数组,然后将较小的储存到里面就好,我们下面的代码中则将暂时数组重原创 2014-12-07 21:57:07 · 949 阅读 · 0 评论 -
Sicily merge
Given n intervals, you should merge all overlapping intervals. For example, the given intervals are: [1,3], [2,6], [3,5], [7,9] you should output: [1,6], [7,9]InputThe first l原创 2016-07-15 17:16:43 · 230 阅读 · 0 评论 -
SOJ 1171
题意:在一块n*m的板子上,有一些细菌,如果一个细菌八个方向上细菌数为2或3,下回合保留,否则消失,如果是一个空格周围细菌数为3,则下回合长出新的,现在给出一种情况,要求出可能得到这种子代的父母有多少种情况解法:因为这道题的规模不是很大n*mn(m),就能将-1变成n-1(m-1),达到连通的效果,然后我是wa了一次,因为数组开太小了,因为说n*m6*6,然后就错了,这个很煞笔。枚举所有情况可原创 2016-07-15 17:17:08 · 559 阅读 · 0 评论 -
K-based Numbers. Version 2
高精度乘法,加法,动态规划DescriptionLet’s consider K-based numbers, containing exactly N digits. We define a number to be valid if its K-based notation doesn’t contain two successive zeros. For原创 2016-07-15 17:17:32 · 283 阅读 · 0 评论 -
SOJ 1048
BFS#include #include #include #include #include #include using namespace std;struct status{ int k; vector route;};bool check[520];//判断当前情况是否走过 2^9 int main(){ int test; cin >>原创 2016-07-15 17:19:46 · 216 阅读 · 0 评论 -
hash单词翻译(BKDR)
,大学做的一个小project,利用哈希实现单词翻译,也使用到文件流数组#include #include #include #include #include using namespace std;struct Word{ string english; string chinese; bool exist;原创 2016-07-15 17:20:23 · 501 阅读 · 0 评论