ACMer的打工岁月
acm的刷题贴
猴子姑娘呀
这个作者很懒,什么都没留下…
展开
-
HDU 6023 Automatic Judge (模拟)
题目链接:点击打开链接题目大意:就不讲了,能理解的,这个题没什么难度,就是在处理输入的时候我愣了一下……代码如下:#include#include#includeusing namespace std;int vis[15],time[15];int main(){ int T,n,m,A,B,a,h,mi; char str[5]; scanf("原创 2017-10-15 20:19:06 · 363 阅读 · 0 评论 -
CodeForces - 782A Andryusha and Socks
题目大意:今天面临一个问题,要把袜子放在衣橱里。 他有一堆不同的袜子,最初在一个袋子里。 从1到n编号。 Andryusha想把配对的袜子放在一起,放在衣橱里。 他从包里一个一个地拿起袜子,每个袜子,他看看这双袜子的另一只是否已经从包里拿出来了。 如果没有(这意味着这双袜子还在袋子里),他把现在的袜子放在他面前的桌子上。 否则,他把两双袜子都放在衣柜里。解题代码:#include#inc原创 2017-10-22 19:27:29 · 384 阅读 · 0 评论 -
POJ-1753 Flip Game(翻棋子)
题目链接:点击打开链接题目大意:翻转游戏是在一个矩形的4x4域上进行的,它的每一个16个方块上都有两面正面的棋子。每片的一边是白色的,另一边是黑色的,每一块都是黑色或白色的。每一轮你掷3到5个,这样就把他们的上侧的颜色从黑色变为白色,反之亦然。 根据以下规则, 1.每一轮都选择被翻转的棋子:选择16块中的任意一个。 2.把选中的部分和所有相邻的部原创 2017-10-09 21:51:51 · 981 阅读 · 0 评论 -
Wannafly模拟赛4 A Laptop (前缀数组)
题目大意:emmmmm……中文题,不用解释了吧解题思路: 一开始是直接就想着排个序然后开始枚举,目前水平对时间复杂度还不太会算,但是听了别人的分析,会超时,枚举肯定不行,所以就要换个思维。 题目要求被完虐的电脑数量,什么叫做被完虐呢,就是内存和速度都比别台电脑差,假如有一台电脑,存在任意一台电脑两项的值都比它大一些,那这台电脑就被完虐。因为每台电脑有2个原创 2017-10-23 20:44:46 · 409 阅读 · 0 评论 -
NULL、空格串、空字符串、0的区别和NULL详解及拓展
NULL、空格串、空字符串、0,‘\0’的区别和NULL详解在网上查阅并整合了一些资料,供自己学习,同时也希望能帮到大家!一、空字符串、NULL、空格串的区别:(1)先附上代码,来表示它们的区别: string str1=””; //空字符串 str1.length( )= 0 string str原创 2017-09-05 21:28:41 · 24402 阅读 · 0 评论 -
strlen、sizeof、length的区别和联系
strlen、sizeof、length的区别与联系在网上查阅并整合了一些资料,供自己学习,同时也希望能帮到大家!以下知识点自己测试出来更能够理解一些:(1) sizeof操作符的结果类型是size_t,头文件为typedef,该类型保证能容纳所建立的最大对象的字节大小。(2) strlen的头文件为string.h。(3)原创 2017-09-04 19:44:35 · 4955 阅读 · 2 评论 -
STL——基础知识点代码详解
以下是STL算法的一些基本用法,希望对大家有帮助哦!最好是可以照着自己敲一次,理解记忆这些用法~~~代码段:#includeusing namespace std; class Student{public: Student(int _age, char* _name) { this->age =原创 2017-08-19 09:35:21 · 324 阅读 · 0 评论 -
HDU 3535 AreYouBusy(组合背包)
题目链接:点击打开链接我做到这道题时它归类为分组背包,可是我理解大意之后,觉得这分明就是混合背包问题……但是还是不会做……刚从一个难以处理背包上限的题走出来了,又进入一个考初始化的题,这是道好题啊好题!题目大意:给你n组工作集合去选择和T分钟去完成它们,接下来有n组数据,每一组数据首先各给你一组m和s,m表示该组的工作数目,s表示你的选择方式(1.s=0表示至少选一个;2.s=原创 2017-08-07 10:33:50 · 265 阅读 · 0 评论 -
POJ 3260 The Fewest Coins(动态规划+多重背包+完全背包)
题目连接:点击打开链接题目大意:John有N种货币,每种货币有相应的价值V和数量C,他要用仅有的货币去买价值为T的货物,问:付的硬币数目和找回的硬币数目最少为多少个?解题思路:John的货币是有限的,所以可以用多重背包求解出买价值为T的货物最少要花的货币数目,卖家的货币数目是无限的,所以可以用完全背包计算出卖家找钱的最少数目;最后用两个数组遍历出参与交易最少的货币数就可以了原创 2017-08-06 16:13:20 · 546 阅读 · 0 评论 -
错排公式 ——递推与通项公式
错排公式 一、定义:错排问题,是组合数学中的问题之一。考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。 n个元素的错排数记为D(n)。研究一个排列错排个数的问题,叫做错排问题或称为更列问题。 二、递推与通项公式:当n个编号元素放在n个位置,元素编号与位置编号各不相同的方法数用D(n)表示,那么D(n-1)就表原创 2017-08-23 15:35:28 · 15464 阅读 · 3 评论 -
2017福建省大学生程序设计竞赛--K题(错排,组合数学)
题目在这里就不贴了题目大意:有n个人,打乱顺序后,要求至少有k个人能拿到到自己魔杖,问有几种排序方法?解题思路:典型的 错排+组合数学一定要理清错排的思路才能看懂这道题代码,在计算中 组合数学的取模运算还要用到快速幂+费马小定理求逆元。推荐学习错排的链接:代码如下,细节见代码:#includeusing namespace st原创 2017-08-23 16:05:49 · 736 阅读 · 0 评论 -
CodeForces 782B The Meeting Place Cannot Be Changed(二分)
题目大意:有一条从南到北的道路,根据最南建筑到北的方向延伸,有一系列的坐标,这条道路上有一些点,一共有n个朋友(这些点里一个点一个朋友),他们任一个站立在xi米的地方,可以沿着道路的两个方向的任何一个方向,以不超过每秒6米的速度移动:南或北。你要计算在路上的某个时刻收集所有n个朋友所需的最短时间。(注意:他们最短时间内达到的共同位置不一定为整数坐标)解题思路:这个题看懂了应该就明白是二分了,关原创 2017-10-22 19:09:20 · 327 阅读 · 0 评论 -
Leetcode-680. Valid Palindrome II(判断回文)
题目大意:给定一个非空字符串s,您最多可以删除一个字符。判断你是否能把它变成一串“回文”。题目解析:最开始用的暴力,结果超时了,换用递归解题代码:class Solution {public: bool validPalindrome(string s) { int len=s.length(); if(len<=2) return true;原创 2017-10-05 10:37:23 · 1040 阅读 · 0 评论 -
Leetcode-606. Construct String from Binary Tree
题目链接:点击打开链接题目大意:您需要构造一个字符串,该字符串由具有预序遍历的二叉树的括号和整数组成。空节点需要用空括号对“()”来表示。您需要省略所有的空括号对,它们不会影响字符串和原始的二进制树之间的一对一映射关系。(这里我之前没注意到,以为所有的空括号都要省略掉,,,,也就是说当一个节点有左子节点没有右子节点时,右子节点要用空括号表示,且不能省略)解题思路:递归,递归,递归!!(我肯原创 2017-10-04 10:16:39 · 274 阅读 · 0 评论 -
Leetcode- 383. Ransom Note(string)
题目链接:点击打开链接题目大意:假设有一个任意的赎金的字符串和另一个包含所有杂志的信件的字符串,写一个函数,如果可以从杂志上构造出赎金的话,这个函数就会返回true;否则,它将返回false。 其实就是问在magazine里面能不能构造出ransomNote字符串,且magazine中的字符都只能用一次,可以的话就返回true,否则返回false,前面一直没看懂题目、、、、以为是原创 2017-10-03 10:59:10 · 293 阅读 · 0 评论 -
Leetcode-686. Repeated String Match(string)
题目链接:点击打开链接题目大意:给你两个字符串A和B,求A要最少重复几次才能让B成为它的子串。(这里有个坑,就是A本身已经包含了1次)解题思路:用C++的string就好解题代码:class Solution {public: int repeatedStringMatch(string A, string B) { string ss=A;原创 2017-10-03 09:30:57 · 1821 阅读 · 0 评论 -
Codeforce 893A Chess For Three (模拟)
题目大意:三个人一起下象棋,一局只能2个人同时下,还有一个人要旁观,所以游戏规则是:第一局规定Alex和Bob下,Carl围观,后面则按照输的人去围观轮流来下棋。问题是:输入一组数据,为赢的人的顺序,让你判断这种赢的顺序是否可能,可能的话输出YES,否则输出NO。解题思路:每一局输的人则不能参加下一轮游戏,根据这一点来判断,直接模拟下棋过程。具体看代码代码如下:#inc原创 2017-11-30 21:03:26 · 637 阅读 · 0 评论 -
CodeForces 893B Beautiful Divisors (打表)
题目大意:最近,Luba了解了一种特殊的数字,他称之为“漂亮的数字”。这个数被称为漂亮是因为它的二进制表示包括k+1个连续的,然后是k个连续的0。Some examples of beautiful numbers:12 (110);1102 (610);11110002 (12010);1111100002 (49610).输入:The only line of inpu原创 2017-11-27 21:00:54 · 479 阅读 · 0 评论 -
Codeforce 894A QAQ(计数)
题目大意: 输入一串字符串,Bort想知道的是,在他的“钻石”中有多少次“QAQ””。注意,字母“QAQ”不一定是连续的,但是字母的顺序应该是准确的。解题思路: 根据样例找找规律可知,开一个数组来记录到每一个位置上已经出现的“Q”的个数,将字符串遍历一次即可。然后再遍历一次,计算每个“A”前后出现的"Q"的个数,用排列组合的方法算原创 2017-11-27 20:45:51 · 474 阅读 · 0 评论 -
Codeforce 894B Ralph And His Magic Field (思维+快速幂)
题目大意: 拉尔夫有一个魔法场,它被分成n X m个块。也就是说,这里有n行和m列。Ralph可以在每个块中放置一个整数。然而,它只适用于每一行中的整数和每一列的乘积等于k,k是1或-1。 现在,Ralph想让你计算出在每个方块中放置数字的方法,这样神奇的区域就能正常工作。两种方法被认为是不同的当且仅当存在至少一个街区中的数字在原创 2017-11-27 20:34:06 · 438 阅读 · 0 评论 -
Codeforces 892B Wrath (递推)
题目链接:点击打开链接题目大意:每个人手里都有一个武器,武器的长度决定他们可以杀死前面多少个人的人数,只要铃声响起就可以开始刺杀,问铃声落下后,还有多少人活着?解题思路:一开始我用暴力去写,抱着试试的心态,结果意料之中的TLE,然后还是死磕着从左往右遍历,但是想不出,然后想着从右往左,依次遍历,根据题意,最右边的人一定不会死,所有从他手里的武器的长度入手,开个变量依次维护可刺杀人数的最大值原创 2017-11-23 21:13:59 · 460 阅读 · 0 评论 -
Codeforces 892 A Greed(水题)
题目链接:点击打开链接题目大意:现在要把所有剩余的可乐倒进2个罐子里,问能不能实现?代码如下:#include#includeusing namespace std;const int maxn=1e5;typedef long long ll;int n;ll a[maxn],b[maxn];ll sum1,sum2;bool cmp(int a,int b){原创 2017-11-23 21:03:53 · 355 阅读 · 0 评论 -
Codeforce 890A ACM ICPC(枚举)
题目链接:点击打开链接题目大意:问是否能把6个人分成2支队伍,要求按照比赛结果来分,能分的条件是两支队得分要相同解题思路:不知道是A类题,一开始我以为难…… 因为只有6个人,所以可以枚举,只要暴力过就好了代码分析:用三重循环来找三个人组成一支队,只要依次枚举找到的3个人的总成绩等于6个人总成绩的1/2就ok代码如下:#includeusing namespace std;原创 2017-11-23 20:54:19 · 302 阅读 · 0 评论 -
Lucas定理——推导及证明
Lucas定理(大组合数取模)一、定义: 当n、m为大数,p为素数时,Lucas定理是用来求 c(n,m) mod p的值。适用领域范围:在数论中求大组合数取模。 表达式:C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p二、定理内容: Lucas定理:我们令n=sp+q , m=tp+r .(q ,r ≤p)那么原创 2017-08-24 16:08:01 · 4454 阅读 · 1 评论 -
质因数分解(唯一分解定理)
质因数分解(唯一分解定理)基本概念:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。 分解质因数只针对合数。并且,每个合数能够且仅仅能够被分解为唯一一组质因数的乘积。介绍与证明:质因数分解一般用来求解对一个整数的分解。算法实现:注意:以下只是一个介绍性质的代码,实际的质因数分解将使用素数筛法预处理后进行分解原创 2017-08-21 17:42:42 · 11500 阅读 · 0 评论 -
HDU 5428 质因数分解(唯一分解定理)
题目链接:点击打开链接题目大意:有一个数列,FancyCoder沉迷于研究这个数列的乘积相关问题,但是它们的乘积往往非常大。幸运的是,FancyCoder只需要找到这个巨大乘积的最小的满足如下规则的因子:这个因子包含大于两个因子(包括它本身;比如,4有3个因子,因此它是满足这个要求的一个数)。你需要找到这个数字并输出它。但是我们知道,对于某些数可能没有这样的因子;在这样的情况下原创 2017-08-21 17:28:00 · 596 阅读 · 0 评论 -
素数筛法
素数筛法 基本概念:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。而在ACM比赛当中经常遇到需要使用大量既定的素数,或者判定素数,或者应用于唯一分解定理当中。介绍与证明:厄拉多塞是一位古希腊数学家,他在寻找素数时,采用了一种与众不同的方法:先将2-N的各数放入表中,原创 2017-08-21 10:39:26 · 686 阅读 · 0 评论 -
费马小定理
费马小定理基本概念: 费马小定理(Fermat's little theorem)是数论中的一个重要定理,在1636年提出,其内容为: 假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p),即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。介绍与证明:引理1原创 2017-08-19 14:13:59 · 2014 阅读 · 0 评论 -
ACM-ICPC Asia Regional Contest HDU 5974 A Simple Math Problem(数论)
题目链接:点击打开链接题目大意:不说了.解题思路: 由题意,我们知道两个条件:1.X+Y=a,2.lcm(X,Y)=b;我们从将X和Y分解出最大公约数入手,记:gcd(X,Y)=g;则: X=g*k1, Y=g*k2,, 则条件1可以表示为:a=g*(k1+k2) 记为1式 ;由 lcm(x,y)*gcd(x,y)=x原创 2017-08-11 22:06:03 · 297 阅读 · 0 评论 -
POJ 1006 Biorhythms (中国剩余定理)
题目链接:点击打开链接题目大意:人的一生有三种周期:体力,感情,智力,分别为:23、18、33。每个周期里都有巅峰的一天,处于巅峰时期时状态达到最佳。三个周期不同,但可能在同一天达到巅峰。前三个输入p、e和i的值是指从年初开始的,物理、情感和智力的周期分别达到峰值的天数。,最后一个输入是给定的日期(该年的第几天),求:下一次同时达到巅峰到d的天数。先了解中国剩余定理:《原创 2017-08-10 16:48:39 · 343 阅读 · 0 评论 -
HDU 1576 A/B(扩展欧几里得,思维)
题目连接:点击打开链接解题思路:由题知:n=A%9973,有欧几里得可化为:A=9973*k1+n代入所求式子:((9973*k1+n)/B)%9973)=x(记为x)即为:(9973*k1+n)%9973=B*x,可化为:9973*k1+n=9973*k2+B*x,可化为:B*x-n=9973 *(k1-k2)=9973*y (B*x-n与9973成倍数关系)原创 2017-08-10 11:31:16 · 273 阅读 · 0 评论 -
向上取整⌈⌉ 和 向下取整⌊⌋ 和四舍五入
在网上看到这篇写的不错的,不过有点乱,特意整理了一下转载过来向下取整的运算称为Floor,用数学符号⌊⌋表示;向上取整的运算称为Ceiling,用数学符号⌈⌉表示。例如:⌊59/60⌋=0⌈59/60⌉=1⌊-59/60⌋=-1⌈-59/60⌉=0向上向下 取整函数数只会对小数点转载 2017-08-24 09:43:03 · 14381 阅读 · 0 评论 -
第十一届湖南大学生程序设计竞赛 阶乘除法(思维)
题目链接:点击打开链接题目思路很清晰,就不讲解了,思路分析直接详细写在代码了,代码如下:#include#includeusing namespace std;#define ll long longint main(){ ll k; ll tmp; //记录遍历上限 int p=1; while(cin>>k)原创 2017-08-10 11:23:06 · 307 阅读 · 0 评论 -
递归经典算法 汉诺塔问题
汉诺塔问题(基于hdu 2511,我们来详细的讨论一下汉诺塔递归问题和其中的DFS问题)基本问题:汉诺塔是由三根杆子A,B,C组成的。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。问:如何移?原创 2017-07-27 21:01:30 · 1501 阅读 · 0 评论 -
HDU 2511 汉诺塔X(递推+DFS)
HDU 2511 汉诺塔X(递推+DFS)Problem Description:1,2,...,n表示n个盘子.数字大盘子就大.n个盘子放在第1根柱子上.大盘不能放在小盘上.在第1根柱子上的盘子是a11,a22,...,ann. a11=n,a22=n-1,...,ann=1.即a11是最下面的盘子.把n个盘子移动到第3根柱子.每次只能移动1个盘子,且大盘不能放在小盘上.问第m次移动原创 2017-07-27 16:30:00 · 724 阅读 · 0 评论 -
UVA --11218 KTV(DFS+回溯)
**Promble KTV** One song is extremely popular recently, so you and your friends decided to sing it in KTV. The song has 3 characters, so exactly 3 people should si原创 2017-07-26 21:38:45 · 375 阅读 · 0 评论