Exercise
pocketdream
我的征途,是星辰大海
展开
-
Gym 102028D Keiichi Tsuchiya the Drift King(2018 ICPC 焦作站 D 题) 计算几何
去年暑假集训了两个月就去了焦作,这个题一直卡着到最后也没做出来,很遗憾的在人生中第一场 ICPC 比赛打了铁。当时也没有补题的习惯,这个题知道了大致做法后就放过了。今年准备银川赛区,翻出了往年的比赛真题做一下,又碰到了这道题,虽然很水,但还是想写个博客纪念一下,毕竟银川可能是参加的最后一场 ICPC 比赛了,希望不会留下遗憾!!!题目链接D. Keiichi Tsuchiya the ...原创 2019-10-16 00:34:00 · 456 阅读 · 0 评论 -
POJ2386 Lake Counting DFS求连通块数量
题目链接:https://cn.vjudge.net/problem/POJ-2386题意: 八连通的积水被认为是连在一起的,求出院子里有多少水洼。分析: 采用深度优先搜索(DFS,Depth-First Search),从任意的w开始,不断把邻接的部分用'.'代替,1次DFS后与初始这个w连接的所有w就全都被替换成'.',因此直到图中不再存在W为止,总...原创 2019-02-12 10:58:56 · 239 阅读 · 0 评论 -
BFS算法求迷宫的最短路径
BFS(Breadth-First Search)算法的具体实现就是:通过不断取得某个状态能够达到的所有状态并将其加入队列尾, 并且由于队列本身的特性先加入队列的状态总是先得到处理,这样就可以总是先将需要转移次数更少的状态进行处理。换句话说就是总是取得了这个状态的树中更接近根部的节点,又或者是总是让搜索树的广度得到尽可能增加。拿一个例子来说,有一个如图所示的迷宫,'#' 为墙壁,'...原创 2019-02-12 21:01:47 · 4562 阅读 · 1 评论 -
POJ 2431 Expedition 优先队列
题目链接:https://cn.vjudge.net/problem/POJ-2431题意: 一辆卡车在长为 L 的一条路上行驶,,每走 1 步耗费 1 单位油,,初始油量为 P ,路上共 N 个加油站,给出每座加油站的油量和距离终点的距离,假设油箱无限大,,求得到达终点时的最少加油次数,,无法到达则输出 -1。分析: 我们可以想象成,在到达加油站 i ...原创 2019-02-18 21:39:59 · 138 阅读 · 0 评论 -
POJ3617 Best Cow Line 字典序最小问题 贪心
题目链接:https://cn.vjudge.net/problem/POJ-3617题意: 给定一个字符串 ,利用这个字符串通过不断进行以下任意两种操作,从而构造出一个字典序尽可能小的新字符串。从初始字符串的头部拿走一个字符添加到新字符串的尾部; 从初始字符串的尾部拿走一个字符添加到新字符串的尾部;分析: 字典序是指从前到后比较两个字符串大小的方法...原创 2019-02-13 22:04:44 · 832 阅读 · 2 评论 -
STL 中 set、map、queue 的简单使用方法
set 内部为二叉搜索树#include <set>#include <cstdio>using namespace std;int main(){ //声明 set<int> s; //插入元素 s.insert(1); s.find(2); s.erase(3); //查找元素方法1...原创 2019-02-19 19:41:28 · 516 阅读 · 0 评论 -
SUST Weekly Final Round One 参考题解
A: 阿离分伞 ——任浦嘉签到题。这道题可以用线性筛的方法先将10000以内的素数打表出来,然后直接查找看每次分解的两个数是不是素数#include <cstdio>#include <cstring>using namespace std; int prime[10005]; //打表void isprime(){ ...原创 2019-03-02 22:53:05 · 259 阅读 · 0 评论 -
2019年ACM-ICPC全国邀请赛(西安) 赛后总结
写在前面是第二次参加 ACM 比赛了,上一次是在河南焦作的河南理工大学参加 2018 年的亚洲区预赛,很遗憾打了铁,都怪自己和队友们经(tai)验(cai)不(le)足。这一次有位特别强的大佬带,感觉紧张的情绪减少很多。5.18早上十点钟,我们学校一共六支队,浩浩荡荡地出发。到达后走流程签了到,拍了照,荧光橙色的衣服是真的亮骚,不过没有发心心念念的书包唉,今年必须搞一个(小声逼逼)。热身赛随...原创 2019-05-20 17:17:07 · 1405 阅读 · 1 评论 -
2019.7.16 递归 题解
A: 递归计算累加和前三题均为简单递归,找到递归终止条件即可#include <cstdio>using namespace std;int f(int n){ if (n == 1) { return n; } return n + f(n - 1);}int main(){ int n; scanf("...原创 2019-07-16 21:58:45 · 333 阅读 · 0 评论 -
2019.7.30 素数筛、矩阵快速幂 题解
A: 素数查询(Easy)一个欧拉筛然后查询完事#include <iostream>#include <cstring>using namespace std;const int MAXN = 2e5 + 7;int isprime[MAXN]; //保存素数int vis[MAXN]; //初始化void eulerSieve(){ ...原创 2019-07-30 23:14:42 · 313 阅读 · 2 评论 -
C++ 输入输出外挂
适用于普通正负 int 输入输出int Scan() { //输入 int res = 0, flag = 0; char ch; if((ch = getchar()) == '-') flag = 1; else if(ch >= '0' && ch <= '9') res = ch - '0'; while((c...原创 2019-10-04 11:31:33 · 638 阅读 · 0 评论 -
HDU1124 Factorial 阶乘末尾‘0’的个数
题意: 这道题罗嗦了一大堆就是让求给定一个数 n ,求 n!末尾有多少个 0。分析: 若要末尾出现 0 ,则需要乘数提供 5 ,而乘数能提供的 5 的个数则由他的因子决定。例如 10!,乘数 5 本身提供一个 5 ,乘数 10 也提供一个 5,所以 10!=3628800 末尾有两个零。n!里有多少个数能被 5 整除,个数为 n/5,这些数里还有一部分能被 ...原创 2018-12-11 23:18:33 · 202 阅读 · 0 评论 -
HDU1061 Rightmost Digit 快速幂
拿到这个题我第一反应是简单!!!#include <cstdio>using namespace std;int main(){ int t; scanf("%d", &t); while(t--){ int n; scanf("%d", &n); int tmp = 1; ...原创 2018-12-14 23:55:01 · 221 阅读 · 0 评论 -
HDU1141 Factstone Benchmark 数学
题目大意: 求一个最大的整数 n ,使得 n! 可以在一个 x-bit 计算机中以 unsigned integer(无号整数)来表示。即求 n!< 2 ^ x 成立时 n 最大的值。分析: 一开始看感觉好复杂,但如果对两边取对数,就可以变成 log(n!) < log(2^x),即 log(n!) < x * log(2),化简一下变成...原创 2018-12-13 12:00:57 · 207 阅读 · 0 评论 -
UVA-133 The Dole Queue
In a serious attempt to downsize (reduce) the dole queue, The New National Green Labour Rhinoceros Party has decided on the following strategy. Every day all dole applicants will be placed in a large ...原创 2018-07-28 19:42:33 · 156 阅读 · 0 评论 -
UVA-1225 Digit Counting
Trung is bored with his mathematics homeworks. He takes a piece of chalk and starts writing a sequence of consecutive integers starting with 1 to N (1 < N < 10000). After that, he counts the num...原创 2018-07-28 20:53:40 · 163 阅读 · 0 评论 -
UVA-489 Hangman Judge
In “Hangman Judge,” you are to write a program that judges a series of Hangman games. For each game, the answer to the puzzle is given as well as the guesses. Rules are the same as the classic game of...原创 2018-07-27 00:03:42 · 335 阅读 · 0 评论 -
UVa-227 Puzzle(不使用gets()函数)
原题链接在这里这个题做了好久,大致思路清楚就是一直A不了,真是郁闷死了,后来自己一个例子一个例子地试才找出来bug,唉,知菜而后勇。题目大意是给一个5*5的网格,有一个格子是空的,其他每个格子里有一个字母。有四种指令: A、B、L、R,分别表示把空格上下左右的字母移至空空格中。输入指定网格后输入指令序列,输出执行完毕后的网格,若指令非法(空格超出网格范围等),则输出固定语句。很容易...原创 2018-08-04 23:47:38 · 551 阅读 · 6 评论 -
UVa-455 Periodic Strings
A character string is said to have period k if it can be formed by concatenating one or more repetitions of another string of length k. For example, the string ”abcabcabcabc” has period 3, since it is...原创 2018-08-02 14:24:58 · 219 阅读 · 0 评论 -
UVa-202 Repeating Decimals
题目大意是,输入两个整数 a 和 b ,要求输出 a/b 的循环小数表示以及循环节的长度。这道题实际上就是用两个数组模拟了一个做除法的过程,qot[] 用来保存每一次相除所得的商(quotient),rmd[] 用来保存每一次相除所得的余数(remainder),若要找到循环节,就只需要每做一次除法时,都遍历一遍两个数组中已经保存的元素,若本次计算所得的 qot 和 rmd 同时与之前保存...原创 2018-08-16 15:29:16 · 288 阅读 · 0 评论 -
UVa-1588 Kickdown
题目大意是,给两个每列高度只为 1 或 2 的长条,将他们放入高度为 3 的容器中,问容器的最短长度。实际上就是将两个数组上下放置,固定一个移动另一个,使得对应位置上不同时为 ‘2’ 即可。需要注意的是有两种移动方法,固定 a 左移 b 和固定 b 左移 a ,这两种移动会有不同的效果,取其中较小的便可。 jdg() 函数中用来判断被移动数组循环次数的步骤略显繁琐。代码如下:#inc...原创 2018-08-20 23:54:24 · 164 阅读 · 0 评论 -
POJ-1013 Counterfeit Dollar 枚举
原题链接在这里这个题大致思想就是用枚举的方法,从 A 到 L 枚举出所有可能的情况( A 为较轻的假币, A 为较重的假币,B 为较轻的假币......)。同时数据的读入也存在技巧,分别将每行三个字符串存放在三个二维字符数组中,这样每次只需一个 for 循环便可遍历所有的称量情况。还有一个巧妙的地方在于对“较轻”和“较重”两种猜测情况的处理,为了防止代码无意义的重复,可以在猜测某枚硬币较重时,...原创 2018-09-04 11:16:42 · 192 阅读 · 0 评论 -
HDU5108 Alexandra and Prime Numbers 质因数分解
原题链接在这里每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。 分解质因数只针对合数。求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。分解质因数的算式叫短除法,和除法的性质差不多,还可以用来求多个个数的公因式。(来源:百度百科)这道题要找一个最小的 m ,使 n/m 为素数。就是要把 n 分解成 n 的质因数的乘积,取最大...原创 2018-09-24 14:33:01 · 227 阅读 · 0 评论 -
HDU1022 Train Problem I 栈的应用
原题链接在这里这道题主要用到了 STL 模板中的栈。栈的常用操作如下:#include <stack> //头文件stack <char> s; //建立一个元素为 char 类型的栈 s.empty() //如果栈为空返回 true,否则返回 false s.size() //返回栈中元素的个数 s.pop() ...原创 2018-09-21 09:12:08 · 152 阅读 · 0 评论 -
快乐数字
判断一个正整数是否是快乐数字?如果一个数字能够通过有限次快乐变换成为1,则是快乐数字。快乐变换是对一个数字的每一位的平方数求和。例如:对于6868 => 62+82= 100100 => 12 + 02 + 02 = 1因此68是快乐数字Input每一行输入一个整数,代表n;如果n为-1,表示输入结束。(n <= 100000000)Output针对...原创 2018-05-05 10:49:32 · 2550 阅读 · 0 评论