- 博客(66)
- 资源 (2)
- 收藏
- 关注
原创 博客搬家
各位关注我的朋友们!我的博客搬家到http://www.luckygong.cn/啦,自己新开的域名,其实早就在那边写博客了,但是由于域名一直没通过备案,所以一直没有公布。以前总是觉得自己开博客比较麻烦,但是自从自己试了一下之后,一发而不可收拾,还是很好的,自由度很大。能随时记录自己的成长轨迹,不光是写技术博客,还有很多自己的心里话,说给自己现在听,留给自己以后看,也给大家分享自己的点滴。
2015-08-26 09:56:46 552
原创 UVA-11210-Chinese Mahjong
训练指南24页的题 真是醉了 以为死循环了 原来是循环套的太多了 出一组样例 500S+ 递归尽量减少嵌套循环 会死 我的复杂度34*14*13*12*11*10*9*8*7*6*5*4*3*2*1 提前脑子不好用啊!!! 特别注意以后回溯千万别忘记调用函数后还要把变量改回来#include<stdio.h>#include<iostream>#include<vector>
2015-02-26 15:23:00 718
转载 位运算
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。运算符 含义 描述& 按位与:如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或: 两个相应的二进制位中只要有一个为1,该位的结果值为1^ 按位异或:若参加运算的两
2015-02-18 10:25:41 563
原创 UVA-1030-Image Is Everything
这个题先找出“看穿”的所有方块,拿下来,再不断找每一块在各个视图中颜色不一样的给删掉,直到没有为止,本题难点在于各个视图和小方块的坐标转化,还是看看刘汝佳的代码,太屌了,我用了两种转化,他一种就搞出来了,以下是我的代码:#include#includeusing namespace std;void kanchuan(char tu[][15][15],int m,int ti[][15
2015-02-16 21:06:48 470
原创 UVA-3708-Graveyard
我的代码:模拟搜索并移动:#include#include#includeusing namespace std;int main(){ int n,m; while(cin>>n>>m) { double before[1005],after[2005],ji = 10000.0/n,ans = 0; for(int i
2015-02-14 21:28:06 463
原创 UVA-213-Message Decoding
很久不码代码了,正如辉哥所说,再做出来一个题AC的冲动还是有的,明显很久不写了手生了,写的很麻烦还错误率很高。#include#include#include#includeusing namespace std;int main(){ char in[2550],zong[2550000],head[25500]; int store[80][1500],firs
2015-01-31 23:26:31 564
原创 数据结构第一章——线性表的实现
#include#include#include#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define OVERFLOW -2#define ERROR 0#define OK 1using namespace std;//typedef int Status;typedef struct{ int *ele
2014-10-08 17:14:03 916
转载 struct与typdef struct
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是
2014-09-17 15:48:39 774 1
原创 UVA-1394-And Then There Was One(约瑟夫环)
这个问题看了看,没看懂,搁置。约瑟夫环问题(Josephus)用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。(约瑟夫环问题 Josephus)解法一(My Solution):思想:建立一个有N个元素的循环链表,然后从链表头开始遍历并记数,如果计数i==m(i初始为1)踢出元素,继续循环,当当前元素与下一元素相同时退出循环。代
2014-08-19 14:23:30 728
原创 UVA-11040-Add Bricks in the wall(规律、递推)
由于这个排列的行数和列数已经固定了,所以比较好找规律,由最下面一行和倒数第三行可以得出最下面一行完整的数排列,所以整个排列就可以递推出来了,my ugly code(我没用上题目中的后几行数据):#include#include#includeusing namespace std;int main(){ int n;cin>>n; while(n--) {
2014-08-18 14:14:45 865
原创 HDU-4470-Lights Against Dudely(暴力枚举)
这道题一开始看上去枚举就可以了,但是最后发现一共有12种情况,开始没数齐。最后怎么交都是WA,最后发现边界没处理,好吧,我也懒得弄了,先放在这。#include#include#include#include#include#includeusing namespace std;int grid[201][201],is_legal[201][201];int main
2014-08-16 12:44:42 1047
原创 11181-Probability
不得不说这道题十分猥琐啊,递归求解,我RE了接近20次,最后发现还是数组开小了。#include#include#include#include#includeusing namespace std;int biao[250000],n,r,zhi = 0;double p[250000],possi[250000];int v[250000][25];void dfs(in
2014-08-15 16:07:37 533
原创 UVA-1636-Headshot
其实这道题不至于写题解,写个题解我只是为了说:这道题十分简单,直接AC就可以了。(有了D神般的成就感)#include#include#include#includeusing namespace std;int main(){ char str[105]; while(cin>>str) { double p1,p2; //p1是不需要转
2014-08-15 10:50:15 1056
原创 hdu-1005-Number Sequence
这题真是神坑啊,经过递归、for循环的思路,发现都会超时,而程序不能再化简了,就想到规律,不过本题的规律不是很好找,随着a、b不同,周期也不同,这个题神坑的一点在于当n%zhouqi == 0的情况,需要单独挑出来,以下是AC代码:#include#include#include#include#include#include#includeusing namespace std
2014-08-13 11:25:27 575
原创 10.2计数与概率基础
1.加法原理:做一件事有n种方法,第i个步骤有pi种方案,则一共有p1+p2+……+pn种方案2.乘法原理:做一件事,完成它需要分成n个步骤,做第一 步有m1种不同的方法,做第二步有m2不同的方法,……,做第n步有mn不同的方法。那么完成这件事共有 N=m1×m2×m3×…×mn 种不同的方法。 和加法原理是数学概率方面的基本原理。3.容斥原理:在计数时,必须注意无一重复,无一
2014-08-12 18:43:41 840
原创 UVA-12716 - GCD XOR
【思路】a^b = c等价于a^c = b 所以枚举a和c,而a和c全部枚举肯定TLE,所以高效算法:通过c是a的约数这个关系来枚举会减小循环,必须要将c放在循环外面,因为c的情况比较少。其实本题就是要求:c=a-b(规律),c=a^b 以下是高神的AC代码,很好很强大:#include #include #include #include using namespace s
2014-08-12 16:36:35 1841
原创 UVA-12169 - Disgruntled Judge(数学+枚举)
#include#include#includeusing namespace std;int x[105];int main(){ int t,aa,bb;cin>>t; for(int i = 0;i < t;i++) cin>>x[i]; for(int a = 0;a <= 10000;a++) for(int b = 0
2014-08-12 10:39:32 621
原创 UVA-11582-Colossal Fibonacci Numbers!(规律+幂取模)
第一天学数论,做的第一道题,真是恶心死我了,caocaocaocao
2014-08-11 19:24:00 624
原创 10.1数论初步
1.欧几里得算法(辗转相除法)和唯一分解定理:①唯一性分解定理:算术基本定理,又称为正整数的唯一分解定理,即:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式。算术基本定理的内容由两部分构成:分解的存在性;分解的唯一性,即若不考虑排列的顺序,正整数分解为素数乘积的方式是唯一的。②辗转相除法:是求最大公约数的算法。辗转相除法基
2014-08-11 14:56:42 1214
原创 大数模板
该模板:最多支持500位数,重载了+、-、*、/、^、%、>、=、>>、#include#include#include#include#include #include using namespace std;#define MAXN 9999#define MAXSIZE 10#define DLEN 4class BigNum{private: in
2014-08-11 07:30:04 767
原创 Codeforces-Round 174(Cows and Sequence)(树状数组、高校算法)
这道题是树状数组的题,但是用普通数组也能整出来,没学树状数组,就用的普通数组,算是高效算法吧,下面是我的修改思路:1.一上来我写了如下代码:把每个新加进去的数压入vector,但是我在当t=1时,我的想法是将v[i]一个一个加上去,这样肯定会超时,而且我这个方法的sum是最后一起求的,这样多了个循环,又耗费时间。#include#include#include#include#in
2014-08-08 11:45:47 736
原创 6.2单链表
1.特征:①链表中的元素个数可以根据需要增加和减少,不像数组,在声明之后就固定不变;②元素的位置可以变化,即可以从某个位置删除,然后再插入到一个新的地方;2.组成:指针存放下一个结点的地址3.基本操作:(1)创建链表是指,从无到有地建立起一个链表,即往空链表中依次插入若干结点,并保持结点之间的前驱和后继关系。(2)检索操作是指,按给定的结点索引号或检索条件,查找
2014-08-07 21:08:04 897
原创 UVA-12325-Zombie's Treasure Chest
只有两种物品,想到了贪心,将价值与体积比大(称为价值比)的优先放入。但体积限制,这样还不可以,会有剩余空间,使得这样的贪心策略并不是最优的,下面是写的贪心的WA代码:#include#include#include#includeusing namespace std;int main(){// freopen("out.txt","w",stdout);
2014-08-07 20:06:46 590
原创 UVA-11572-Unique snowflakes
#include#include#include#includeusing namespace std;int snow[1000005];int main(){ int n;cin>>n; while(n--) //有n个案例 { int m,l = 0,r = 0,maxn = 0; //确定初始左右指针 cin>>m;
2014-08-07 13:52:57 572
原创 UVA-11054-Wine trading in Gergovia(模拟+贪心)
首先这道题的节点数太多了,达到10^5,所以不能用数组模拟啊,肯定TLE,所以用贪心算法,读取第一个结点,搬到第二个结点,剩下的和第二个结点合并,一起搬到第三个结点。。。。。。这个算法很好,每次看成只是邻居间买卖,下面是代码:#include#include#includeusing namespace std;int main(){ int n; while(cin
2014-08-07 09:55:35 895
原创 UVA-11134-Fabled Rooks (结构体排序+贪心)
这个题和八皇后问题比较像,但是在选位置之前一定要进行排序,让靠左上的优先选择位置,这块脑残没想到!好了,这道题没代码贴。
2014-08-06 17:17:15 710
原创 1152 - 4 Values whose Sum is 0(好用的hash标记,多重循环简单化)
不得不说这个题就是炫酷啊!首先说一说思路吧,是这么想的:1.弄四重循环,爆破,明显会超时。2.为了处理多重循环,就枚举a+b+c,只需要在d中找到a+b+c的相反数即可,超时3.枚举a+b,只需要在c+d中找到a+b的相反数即可,TMD超时!4.循环只能优化到这个程度了,再优化就得用哈希表直接调用了。这个题的哈希表也是新的知识,由于本题a+b的值可能很大很大,所以以
2014-08-06 14:27:56 783
原创 8.4 贪心法
1.背包问题:①最优装载问题:把物体重量从小到大排列,依次选择每个物体,只顾眼前,却能得到最优解。②部分背包问题:把物体的“价值除以重量的值”从小到大排序,一次选择每个物体(贪心只能对一个变量贪心,这是一种巧妙的转换)。③乘船问题:只让眼前的浪费最少。(注意是让什么最少,是让浪费最少!)2.区间相关问题(排序:排左边还是右边?):①选择不相交区间:②区间选点问题:③区间
2014-08-05 10:10:13 775
原创 8.3递归与分治
1.棋盘覆盖问题:分治算法:①把棋盘分成四份 ②递归解决,当不能再分时返回 ③不用合并,边递归边打表就行在一个 2^k * 2^k 个方格组成的棋盘中,若恰有一个方格与其它方格不同,则称该方格为一特殊方格,称该棋盘为一特殊棋盘。显然特殊方格在棋盘上出现的位置有 4^k 种情形。因而对任何 k>=0 ,有 4^k 种不同的特殊棋盘。下图所示的特殊棋盘为 k=2 时 16
2014-08-04 15:10:16 549
原创 poj-3614-Sunscreen
#include #include #include #include #include#include#includeusing namespace std;struct cow{ int xiao,da; bool if_search; cow():if_search(false){}};struct sunscreen{ int spf
2014-08-02 16:18:52 481
原创 ZOJ-3508-The War
#include #include #include #include #include#include#includeusing namespace std;struct soldier { bool if_search; int xiao,da; soldier():if_search(false){}};soldier s[2509];int
2014-08-02 13:53:43 454
原创 7.4回溯法
1.八皇后问题://回溯解决n皇后问题#include #include #include #include#includeusing namespace std;int A[99],zhi = 0;void solve(int n,int *A,int cur){ if(cur == n) //当cur指向n时,跳出程序,这是说明到达底层,n行已经考虑完毕
2014-07-31 13:24:18 454
原创 UVA-10391-discuss Compound Words
把#include#include#include#include#includeusing namespace std;char str[120005][30];int main(){// freopen("out.txt","w",stdout); int n = 0; while(cin>>str[n]) { n++; }
2014-07-29 18:10:33 522
中科院(国科大)黄庆明模式识别与机器学习2017-2018试卷(兰艳艳、郭嘉丰、山世光).doc
2018-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人