C/C++
Decision2016
这个作者很懒,什么都没留下…
展开
-
UVa 815 Flood! (习题4-10)
只能靠水题维持生活的样子将数据存在一个一维数组中,然后排序为了避免负海拔影响,记录一下最低海拔,然后将每个格子的海拔都减去最低海拔,那么最低的就变成0然后最后答案再加上去还有自己的一个坑点就是x在循环后会变成x=m*n+1,导致覆盖的地方超过100%那么特判一下就行了 玄学RE,点错了题目题目:https://vjudge.net/problem/UVA-815...原创 2018-11-08 23:00:53 · 174 阅读 · 0 评论 -
【模板】二叉查找树
果然这些数据结构还是要自己写一遍才熟悉啊。。。这次也是加深了我对指针的认识,以前都不怎么注意的二叉查找树二叉查找树,每一个节点有左右儿子,然后这个节点的值大于左儿子,小于右儿子,那么根据定义不难得出代码,先配个图以便于理解(网上也有不少)~二叉查找树一共有三种操作:查询,删除,插入结点结构体:struct Node{ Node *lchild,*rchild原创 2017-02-14 13:53:14 · 264 阅读 · 0 评论 -
UVa 11039 Building designing
一开始没看到是选数,,,就以为是dp,但是后来看到是选出来排列,那么直接按照绝对值排序之后就加判断就好了。。。 #include<cstdio> #include<cstring> ...原创 2017-02-14 09:36:47 · 222 阅读 · 0 评论 -
【模板】Trie树模板
Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。上面是百度百科找的,trie树=字典树=前缀树,下面就说说前缀树的实现。首先trie树的根必定是一个空节点,每一条边代表了一个字符,每一个节点有多种可能,那么我们可以使用一个数组来达到这个目的;同时,每一个单词(字符串)的最原创 2017-01-21 16:56:56 · 344 阅读 · 0 评论 -
UVa 232 Crossword Answers (习题3-6)
字符串的一道模拟题吧,小小的思考一下= =(虽然因为一些原因我也WA了几次) #include<cstdio>#include<cstring>#include<iostream>#include<cstdlib>#include<vector>#include<queue>#include<sta...原创 2017-02-10 23:25:46 · 213 阅读 · 0 评论 -
UVa 1225 Digit Counting(习题3-3)
代码之前发过c语言版本的,这回重新发一次,相当于是补充吧这个应该不算是字符串的处理了吧,从1开始枚举到n,然后每个数字分别出现的次数先把数字取模10之后ans数组++,然后数字再陈10直到数字为0代码:#include#include#includeusing namespace std;int ans[11];int s;int main(){ int n;原创 2016-12-06 13:57:19 · 194 阅读 · 0 评论 -
UVa 1586 Nolar Mass(习题3-2)
这道题的关键点应该就是在原子符号中间的数字的地方了吧注意之前出现过的原子在接下来也会出现 统计原子数量,计算没记错的话这道题好像借鉴了之前网上的一个代码代码: #include<cstring> #include<iostream> #include<iostream>using namespace std; const...原创 2016-12-06 13:42:43 · 227 阅读 · 0 评论 -
UVa 1585 Score(习题3-1)
一道比较水的题目,很久之前自己写了代码的所以直接复制上来吧关键的地方就是计算'O'连续出现的次数才发现之前已经发过一遍了,那么这个就当是完善一下之前一些地方吧代码;#include#include#includeusing namespace std;int main(){ int k; cin>>k; while(k--) { char s[100];原创 2016-12-05 14:02:58 · 166 阅读 · 0 评论 -
UVa 1584 Circular Sequence(例题3-6)
中午来水一道。。。。环形序列,只要能够比较字符串还有表示出以某个字符串开头的比较方式的话这题就简单了字典序的意思这里也不多说,书上也有代码:#include#include#includeusing namespace std;int check(char* s,int m,int n){ int sum = strlen(s); for(int i = 0;i<sum原创 2016-12-05 13:58:18 · 217 阅读 · 0 评论 -
UVa 455 Periodic Strings(习题3-4)
这几天一直都没有写代码,主要是有点事情还有就是忙着复习期末考试,所以说最近一段时间都会很少更新了这道题的话是比较水的,但是因为我在写代码的时候还有有的地方思路没有想清楚,重复了几次才过的一开始想的太简单了,直接枚举判断,后来才慢慢修改,还有就是判断的后面不要加上分号,有时候不细心真的看不出来代码:#include#include#includeusing namespace原创 2016-12-14 23:49:40 · 226 阅读 · 0 评论 -
UVa 10905 Children's Game
字符串。。。直接排序(如果用字符数组储存不便于排序) #include<cstdio>#include<cstring>#include<iostream>#include<cstdlib>#include<vector>#include<queue>#include<stack>#incl原创 2017-02-14 14:06:43 · 301 阅读 · 0 评论 -
bzoj1101/洛谷P3455 [POI2007]ZAP-Queries
之前看了但是没有理解的莫比乌斯函数现在找题目练练手。。。寒假里面看的当时理解不了就没有多管,导致现在写预处理函数很懵逼。。题意:给定n,m,d,求出1最简单的方法,O(n²)的暴力枚举就不用说了,但是这个数据范围肯定是过不了的。。那么我们设函数f(d)为使得gcd(x,y)=d的x,y的对数设函数F(d)为d可以整除gcd(x,y)的情况那么显然有(仔细想一下或者手玩一下)则反演之后就是 那么我们原创 2017-05-06 00:48:16 · 341 阅读 · 0 评论 -
UVa 1589 Xiangqi (习题4-1)
经历了三天的拉锯战终于搞出来了一开始写的是标记红方占据的位置,后来直接改用多个函数调用检测是否被将军移动四个方向来检测是否有棋子可以将军,如果都不行的的话就是被将军了其中用了两个函数来返回两个棋子之间的相对位置然后将要检测的棋子按照那个方向移动但是又WA了很多次,ubebug上的数据也可以过,一直找不到错误最后通过python生成了1000组数据在udebug上面跑才发...原创 2018-11-04 16:07:15 · 194 阅读 · 1 评论 -
UVa 220 Othello 黑白棋 (习题4-3)
做完这道加上前面两道,这一章果然都是调用函数的。。。自己写一堆函数来搞写的过程中甚至觉得自己可以考虑写一个黑白棋的游戏了233 主要还是一个模拟其实做了象棋那题的话会发现和象棋那题差不多,也是一堆函数堆出来的象棋那题有一个思路就是需要对不同棋子也不同的函数通过三个函数分别检测某一行,某一列,某一斜行是否合法然后通过一个函数来检查8次该位置是否合法再来几个函数用来...原创 2018-11-02 14:49:04 · 267 阅读 · 0 评论 -
UVa 253 Cube painting 骰子涂色(习题4-4)
A题会让人上瘾。。骰子这个题好像还有一个群论的做法??记不清了 思路:如果两个骰子相同,那么可以通过变换把两个字符串变成一样的那么先把骰子按照1-4-6-3的顺序(方向可逆可顺)旋转,旋转4次,每次都旋转侧面4次,每次旋转检测,只要有一次字符串相同,骰子就是相同的如果还没有,再按照1-2-6-5的顺序(方向可逆可顺)旋转,再做上面的变化最后flag为1就输出TRUE...原创 2018-11-02 16:10:42 · 242 阅读 · 0 评论 -
UVa 201 Squares (习题4-2)
时隔一年之后继续搞这些东西 然后开始复习以前的内容,把以前高中没写的题好好的搞一下。。紫书第四章的习题以前就直接没写过,然后昨天调象棋调了一天还是疯狂WA,看到网上正解有400行。。真jier可怕然后先把那题放一放,主要还是调用函数比较多,改天再重新写一下 Squares这个题以前还是想的太复杂了。今天上去教室的途中突然想到这么一个n^3的算法然后看了一下数据范围2&l...原创 2018-11-02 09:30:53 · 190 阅读 · 0 评论 -
UVa 1590 IP Networks(习题4-5)
这道题也是卡了我的一道题。。。主要卡在没注意1<<32的时候直接变成0了。。导致异或的时候出现错误然后存储ip我直接用unsigned long long存的,这样方便处理,但是没有想到后面那个位运算错误。。如果当时用数组的话可能方便很多。。一开始的确想用数组来着。。但是觉得数组麻烦。。没想到用整数直接存会有这么一个沙雕bug特例数据:20.0.0.0...原创 2018-11-06 17:33:13 · 177 阅读 · 0 评论 -
bzoj1878/洛谷1972 [SDOI2009]HH的项链
这题想着用线段树对于我这个蒟蒻来说太难了啊。。然后看了题解知道是莫队算法。。貌似还有一个【小Z的袜子】这么一个例题实际上我觉得这题比较容易入门吧莫队算法就是优化之后的暴力,离线处理区间问题通过分块把区间进行排序,然后枚举区间,只要知道[L,R]中的ans,那么就可以得出[L+1,R],[L,R+1],[L,R-1],[L-1,R]的ans,不过我们可以直接通过两个下标来进行对区间的原创 2017-06-06 01:31:17 · 261 阅读 · 0 评论 -
洛谷 P3389 【模板】高斯消元法
第一个点过不去,貌似是因为判断是否多解和无解的地方出了问题??稍作修改即可。。我懒得改了//Decision's template#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#d原创 2017-05-29 23:16:24 · 259 阅读 · 0 评论 -
洛谷P2602|bzoj1833 [ZJOI2010]数字计数 数位dp
数位dp先预处理啊,然后xjb乱搞一下啊好吧其实我还是看了一下题解。。一开始弄错了统计的方法。。于是疯狂wa有关数位dp的文章的话,传送门:http://blog.csdn.net/wust_zzwh/article/details/52100392,当然是这位大犇写的了%%%%(虽然百度也可以找到)题解(有抄题解嫌疑的我)://Decision's template#inclu原创 2017-05-18 13:25:07 · 339 阅读 · 0 评论 -
洛谷 P1262|P2341|P2002 强连通分量,缩点
图论强连通分量算法,个人感觉tarjan相比两次dfs好写一点(个人看法)这三道题都在学了强连通分量算法之后都比较基础,貌似都要判断一下缩点之后每个点的入度?P1262 间谍网络题意:直接复制一下数据的输入格式这里,还是比较好理解的吧第一行只有一个整数n。第二行是整数p。表示愿意被收买的人数,1≤p≤n。接下来的p行,每行有两个整数,第一个数是一个愿意被收买的间谍的编号原创 2017-05-06 01:01:51 · 540 阅读 · 0 评论 -
UVa 1583 Digit Generator(例题3-4)
这道题主要就是了解生成元的意思,那么很容易想到直接求,但是可以优化成为一个查表的问题。。就好像今年noip的D2T1(虽然我只水了个暴力分)枚举100000以内的生成元,查表,输入就可以了,PS:注意数组all代表的意思代码:#include#include#includeusing namespace std;int all[100000+10],n,tmp;int原创 2016-12-04 23:47:39 · 209 阅读 · 0 评论 -
*UVa 340 Master-Mind Hints(例题3-4)
为什么要加星号?因为这道题的算法和书上大致上是差不多的,不一样的地方是我把输入数组换成读入的时候统计而已但是在oj上一直通不过,这我就很懵逼了,也不想把书上的代码打一遍,反正基本上差不多,自己对照一下书上吧至于为什么是取最小的一个?应该是“同时出现”,所以取比较小的数据相加得到数字的贡献PS:如果发现代码有哪里出现问题请在评论里联系我,谢谢,因为我自己也不知道哪里的问题,oj上的测试数原创 2016-12-04 00:22:45 · 228 阅读 · 0 评论 -
UVa 401 Palindromes(例题3-3)
这个题我提交了三次才过。。。为什么呢?因为在写all数组的时候空格位置不太对,然后就是在msg的某个数组的地方少了一个逗号。。(细心。。一定要细心。。)主要的话,还是在镜像串的处理上面,回文串直接枚举中心就行了,回文串用一个数组来替换就行代码:#include#include#include.using namespace std;const char all[]="A原创 2016-12-01 14:00:55 · 213 阅读 · 0 评论 -
UVa1225 Digit Counting 数数字
代码: #include int c[10000][10]; int main() { int i, k, t, n; for (i = 1; i < 10000; ++i) { for (k = i; k; k /= 10) ++c[i][k % 10]; for (; k < 10;原创 2016-08-10 14:07:55 · 447 阅读 · 0 评论 -
UVa 536 Tree Recobery 二叉树重建
这个题看着比较简单就先做了,虽然用了不少时间,但是也学到了不少东西,对二叉树的遍历有了进一步的了解,然后就是提交答案的时候,有一些细节没有注意,提交了3次才过思路:递归建立二叉树,用映射给节点编号,直到中序遍历建立二叉树结束为止,建立的同时输出后序遍历代码:#include #include #include #include using namespace std;cha原创 2016-08-02 17:42:00 · 229 阅读 · 0 评论 -
UVa 10763 Foreign Exchange,交换学生(习题5-4)
思路:左右排序,排序之后相加对比是否相等原题:UVa 10763 Foreign Exchange代码:#include#include#include#include#include#includeusing namespace std;int a[500005],b[500005];int main(){ int all; while(cin>>all)原创 2016-07-28 18:58:14 · 336 阅读 · 0 评论 -
NOIP2012复赛day1 Vigenère密码 简单的一题
noip2012年复赛题,字符串的处理,随便做一做直接贴代码,不说其他的~#include#include#include#includeusing namespace std;char ki[100+10],C[1000+10];queue M;char bts(char c){ char c1='a'+(c-'A'); return c1;}char stb(原创 2016-08-03 17:21:50 · 664 阅读 · 0 评论 -
STL——stack栈
栈(statck)这种数据结构在计算机中是相当出名的。栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了。因此实现非常的方便。下面就给出栈的函数列表和VS2008中栈的源代码,在STL中栈一共就5个转载 2016-07-19 22:05:13 · 183 阅读 · 0 评论 -
UVa1594 Ducci Sequence Ducci序列(习题5-2)
这道题一开始还以为很难,后来思路通了之后发现自己真的想的太多了,很简单,直接判断是否存在ZERO的情况,如果在遍历数次之后不存在,则输出ZERO,一开始提交的时候忘记修改调试数据,把循环次数写成20次,改成1000次后直接AC。原题参考:UVa1594 Ducci Sequence思路:一个不定长数组,储存现在的数组,一个整数变量储存数组第一位(便于计算数组最后一位),然后把当前数组原创 2016-07-28 15:13:32 · 555 阅读 · 0 评论 -
UVa 1593 Allgnment of Code代码对齐( 习题5-1)
#include#include #include #include#include#include #includeusing namespace std;vector word_line[1024];string line;int thelong[108];int main(){ freopen("1593.in","r",stdin); f原创 2016-07-26 18:38:48 · 491 阅读 · 0 评论 -
UVa 12100 Printer Queue(习题5-7)
题目的大概也就是一个队列,如果一个任务之后有优先级更高的,那么把这个任务放在最后,否则打印,打印花一分钟时间。思路:通过队列(queue)模拟,使用映射(map)来表示任务的编号,然后用一个不定长数组(vector)来储存优先级队列,如果队列中的映射满足等于第一个,那么就打印。做这个题目的时候思路是比较混乱的,但是后来写出来就比较清楚了,在UVa上出现了WA,才发现是一开始for循环在测试原创 2016-07-24 19:08:50 · 375 阅读 · 0 评论 -
UVa 725 Division(例题7-1)
按照书上的思路枚举fghij即可代码#include#include#includeusing namespace std;int n,tmp[1000],num[15],flag = 1,yes = 0;void solve(){ yes = 0; for(int i = 1000;i*n<=99999;i++) { flag = 1; //num[10] =原创 2016-08-13 16:53:56 · 204 阅读 · 0 评论 -
UVa 712 S-Trees S树
一开始脑子比较乱,写了一堆代码都不对,直接删了重来思路:字符串保存叶子,用映射代表各个节点,用整形n来保存当前节点位置,最后输出代码:#include#include#include#include using namespace std;int deep;string leaves,order;map m; char solve(const string& c){ i原创 2016-08-09 18:57:08 · 217 阅读 · 0 评论 -
UVa 673 Parentheses Balance 平衡的括号
思路:栈,“(""[“入栈”)“”]“出栈 栈为空时”]"")"入栈 最后判断栈是否为空#include #include using namespace std; int main() { int n; stack sta; scanf("%d%*c", &n); while (n--) { /原创 2016-08-09 18:52:39 · 173 阅读 · 0 评论 -
UVa 10082 WERTYU(例题3-2)
和上一题一样,可以边读入边判断,但是要注意换行符的处理,一开始没注意就直接cout空格,没有注意换行符,关键还是处理换行符然后键盘的处理的话就是按照自己的键盘敲一遍可输入区域就可以,之后就可以直接判断是否要输入前一位#include#include#includeusing namespace std;char all[]="`1234567890-=QWERTYUIOP[]\\原创 2016-12-01 00:05:46 · 248 阅读 · 0 评论 -
UVa 11636 Hello World 水题
思路:题目要求输出要复制多少遍达到n 那么全部复制粘贴是不是最快的 所以一直除2就可以了 注意特殊情况代码:#include#includeusing namespace std;int k,cnt=0;;int solve(int n){ int ans = 0; int tmp = 0; if(n==1) return 0; if(n==2) return 1; w原创 2016-11-02 23:17:41 · 252 阅读 · 0 评论 -
UVa 10976 Fraction Again?! 分数拆解 (例题7-3)
枚举y则x=k*y/(y-k) 一一枚举出来然后用不定长数组#include#include#include#includeusing namespace std;vector tx;vector ty;void solve(int k){ for(int y = k+1;y<=2*k;y++) { if(k*y%(y-k) == 0) {原创 2016-09-17 00:03:21 · 274 阅读 · 0 评论 -
UVa 524 Prime Ring Problem (例题7-4)
这道题。。意思是比较明确的 但是自己写的时候在循环后面加了一个分号 导致数次不过。。妈的智障。。题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=465思路:递归调用 判断是否用过并且是否素数代码:#includ原创 2016-09-20 00:17:45 · 225 阅读 · 0 评论 -
Permutation全排列算法
在洛谷上看到的一个题,求1-n的全排列,虽然看着挺简单,但是最后还是觉得比较绕脑,思路:一个数组保持已经排列的数,然后用一个函数检测是否已经排过,只需要检测当前排列的数位置前面的数组是否已经出现就行了代码:#include#includeusing namespace std;int maxn,tmp[20],all[550000][15],ans=0;bool seach(原创 2016-08-13 18:45:31 · 333 阅读 · 0 评论