骚技巧
凉秋girl
保持学习应该是最难的一件事吧?
展开
-
POJ 3279 <牛踩格子>
虽然看了题解,一发AC还是美滋滋的。枚举一部分情况,根据这些枚举的结果进行推导。题意是给一个网格,网格有0有1,其中0代表这这个格子的颜色为白,1代表着这个格子的颜色为黑。(每次反转颜色由黑色转为白色或从白色转为黑色)为了提高牛的智商..(好厉害的农场主),所以农场主让牛玩游戏,牛每次选择一个格子,这个格子会反转(同时其上下左右的格子都反转),对于边界,如最左上角,只反转3个,问牛最少原创 2017-06-07 15:51:25 · 360 阅读 · 0 评论 -
FBI树<链表构造二叉树+后序输出>
the reason of failure:1、将一个字符串从i到len分成两份的时候,若为偶数,注意第二份的开头是len/2+1题意:给一串01码,把01码分割成左右两份,左结点放左份,右结点放右份,然后判断这份结点包括有"0"和"1"则为F结点,如果只包含"0"则为B结点,只包含"1"则为I结点。代码:#include#include #include using nam原创 2016-12-19 14:33:02 · 283 阅读 · 0 评论 -
***快排sort与qsort的使用
sort是用来排序值,用>号。而qsort是通过指针的对比。代码:#include using namespace std;int cmp1(const void *a,const void *b){ return *(int*)a-*(int*)b; //qsort的使用,a-b为从小到大排序; }bool complare(int a,int b){原创 2016-11-20 22:24:57 · 1176 阅读 · 0 评论 -
上机题目<构造表达式>
thinking: 开一个数组,将每个数字中间空出来,然后通过用DFS枚举全部可能填补这个空出来的位子,然后把每次出现的数组可能进行计算,如果是0则+1。important point:int dfs(int t){ int i,j; if(t>n*2-2)jisuan(); else for(j=-1;j>-4;j--){ // cout << "i=" << i << "原创 2016-12-23 12:32:24 · 255 阅读 · 0 评论 -
简单组合
求在N个数中取M个数,有几种取法.如1 3 5 9 7 C(5,3)=C(4,3)+C(4,2) //从5个数取3个=(从 4个取3个)+(从4个取2个+之前没取那个)=C(3,3)+C(3,2)+C(3,1)+C(3,2)=1+C(2,1)+C(2,2)+3+C(2,1)+C(2,2)=1+2+1+3+2+1=10代码:#include using namespac原创 2016-11-28 12:40:07 · 248 阅读 · 0 评论 -
方差,标准差.--概率论
方差的2种计算方法:对于4个数字 1 2 3 4平均数M=(1+2+3+4)/41、D(X)=((1-M)^2+(2-M)^2+(3-M)^2+(4-M)^2)/4E(x)=M1 4 9 16E(x^2)=(1+4+9+16)/42、D(X)=E(x^2)-E(x)^2标准差为方差的开方。原创 2016-11-27 21:56:29 · 1161 阅读 · 0 评论 -
Combination Lock<uscao>1.3 -<枚举>(环形用%的坑)
the reason of failure:1、《数据》因为环形,用%判断当这个环后面几个数+某个数大于N时对应的一个循环后是哪个数,但是当环为1时,任何数%1都为0.2、《数据》当环为50 %50的时候,得到的值为0,而一个环的开始是从1开始的.坑在的数据为:11 1 11 1 1---------5049 50 150 1 2题意:有一个3个数字的环原创 2016-11-26 11:49:13 · 296 阅读 · 0 评论 -
***各个进制之间的转换
thinking:通过求余的方法,如果大于10则加55变成ASCII对应的英文字母,如果小于10则加48成对应的数字,然后存储在char的数组中.#include using namespace std;int main(){ int a,i,j,k,l,x; char result[50]; cin >> a >> x; int mod; int f1=0; while(a)原创 2016-11-25 11:39:58 · 239 阅读 · 0 评论 -
transform<usaco>1.2<水>(结构体的比较memcmp(&square1,&square3,sizeof(ttt)))
the reason of failure:1、是只进行一次操作然后选出数字最小的编号,而不是操作N次然后找出最小操作次数能达到结果图案,认真读题.thinking:按照题目跟着模拟就好.代码:/* PROG: transform LANG: C++ ID: me */ #include using namespace std;stru原创 2016-11-23 14:40:04 · 278 阅读 · 0 评论 -
KMP
thinking:有s1,s2.2个数组,判断s2在s1中出现的次数,复杂度为O(N+M).如s1=1 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 5 s2=4 2 3 4 2 3用一个数组next[]储存s2的各个数字上一次在本数组出现的位子,就不用再重头开始判断,如next[1]=0,next[2]=0,next[3]=0,next[4]=1,next原创 2016-12-04 21:46:20 · 174 阅读 · 0 评论 -
倒水问题<隐式图遍历><结构体中帮设置优先队列>
the reason of failure:1、ttt新定义的结构体需要自己赋值,其初始值并不为0.2、如果用普通队列存在t[1]便退出,得到的并不是最少倒水数。3、状态的转移一定要以从队列出来的状态为基准而改变。题意样例输入1 3 6 41 12 15 7输出414代码:#include #include #include using n原创 2016-12-12 23:13:05 · 403 阅读 · 0 评论 -
HDU 1233 <最小生成树prim><稠密图><可做模版>
the reason of failure:1、阶层不会算,用循环写的,最后超时。N!=N*(N-1)/2thinkin:模板题题意:还是畅通工程Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41687原创 2016-12-09 11:13:17 · 312 阅读 · 0 评论 -
最长回文子串<通过从中间插入然后向两边扩展>
thinking:通过从选择每个字符,然后判断其右边是否有与其相同的字符串,如果有相同的字符串则r1++,直到无与选择的这个字符相同的字符,然后开始左右判断字串是否相同,相同则接着判断,最后返回的长度为r1-l1-1;代码:#include #include using namespace std;char str[100];int len;int fun(char str[],原创 2016-12-10 16:42:32 · 261 阅读 · 0 评论 -
C++的小数点后几位和几位有效数字
cout << setiosflags(ios::fixed) << setpresition(6) << a << endl; 为输出a这个变量的六位小数cout << setprecision(3) << a << endl;为输出a这个变量的3位有效数字#include <ios原创 2016-11-09 21:44:56 · 10222 阅读 · 3 评论