自己的一些练习
文章平均质量分 55
zhouzzz000
这个作者很懒,什么都没留下…
展开
-
乒乓球,水题
题目:早期乒乓球比赛采用21分制,目前乒乓球比赛采用11分制,为了研究11分制和21分制对选手的不同影响,需要对选手多年比赛的统计数据进行一些分析。通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。比如现在有这么一份记录,(其中W表示比赛选手张三获得一分,L表示张三的对手获得一分):WWWWWWWWW原创 2017-12-03 23:05:40 · 1439 阅读 · 0 评论 -
报数,思路
题目:描述有n个小朋友从左到右站成一排,从1到n编号。现在从最左边的小朋友开始从1开始报数,报到奇数的出列,然后剩下的人继续如此进行下去,直到只剩下一个人。问最后剩下的那个人编号是什么。输入第一行一个正整数t,表示有t组数据。接下去t行,每行一个正整数n。40%的数据,t80%的数据,t100%的数据,t输出原创 2017-12-03 23:08:55 · 623 阅读 · 0 评论 -
codevs 1214 线段覆盖(贪心)
题目:codevs1214思路:将输入的区间按照左小右大交换,然后按照左区间从小到大排序,左区间一样的,比较右区间,也按从小到大;然后从第一个区间开始删除后面的区间,如果后面的区间左区间大于前面的右区间,在比较前面的右区间和后面的右区间,如果前面的右区间大则删除前面的那个区间,否则删除后面的区间;代码如下:#include#include#includeusing原创 2017-11-24 12:22:13 · 400 阅读 · 0 评论 -
大精度整数三种运算(加法,减法,乘法)
有一些的题出的数都很大,连long long都无法存储,这时候就要用到大精度整数运算了,本质就是用数组存储每一位数,这里给出常见的三种大精度整数运算;1.加法运算:#include#include#include#includeint s[10000+10];char s1[10000+5];char s2[10000+5];using namespace std;原创 2017-12-06 18:40:40 · 762 阅读 · 1 评论 -
codevs 1068 乌龟棋,四维dp
题目描述 Description小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一 的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。…… 1 2 3 4 5 ……N 乌龟棋中M张爬行卡片,分成4种不同的类型(M张卡片中不一定包含所有4种类型 的卡片,见样例),每种类型的卡片上分别标有1、2原创 2017-12-18 00:19:14 · 215 阅读 · 0 评论 -
code VS 1044 简单dp
题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入描述 Input Description 输入导弹依次飞来的高度(雷达给出的高原创 2018-01-26 12:24:37 · 905 阅读 · 0 评论 -
codevs 1576最长严格上升子序列
给一个数组a1, a2 ... an,找到最长的上升降子序列ab1b2< .. bk,其中b1输出长度即可。输入描述 Input Description第一行,一个整数N。第二行 ,N个整数(N 输出描述 Output Description输出K的极大值,即最长不下降子序列的长度样例输入 Sample Inp原创 2018-01-26 12:33:40 · 253 阅读 · 0 评论 -
codevs 3027线段覆盖 2
数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段价值之和最大。n输入描述 Input Description第一行一个整数n,表示有多少条线段。接下来n行每行三个整数, ai bi ci,分别代表第i条线段的左端点ai,右端点bi(保证左端点原创 2018-01-26 13:25:04 · 223 阅读 · 0 评论 -
2018年全国多校算法寒假训练营练习比赛(第一场)I
链接:https://www.nowcoder.com/acm/contest/67/I来源:牛客网题目描述 lulu喜欢小于等于1000的正整数,但是如果某个数是a或b的倍数,lulu会讨厌这个数。如果某个数里包含了a和b两个数里包含的数,lulu也会讨厌。(例如a=14,b=23,如果数字中包含1、2、3、4这四个数中的任意一个数,lulu就会讨厌这个数)。现在告原创 2018-01-26 20:25:34 · 305 阅读 · 0 评论 -
codevs1048 经典dp
题目描述 Description有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]+w[i+1]。问安排怎样的合并顺序,能够使得总合并代价达到最小。输入描述 Input Description第一行一个整数n(n第二行n个整数w1,w2...wn (wi 输出描述原创 2018-01-27 18:50:11 · 243 阅读 · 0 评论 -
codevs 1154 能量项链(区间dp)
在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的原创 2018-01-28 12:47:07 · 233 阅读 · 0 评论 -
数位dp入门,简单dp
通常我们会遇到这样的一类问题:给定一个上下限,求这个区间内满足某个条件的数的个数。一般最简单的解法就是暴力枚举了:for(int i = low;i <= up;i++){ if(right(condition)) count++;}//low为下限,up为上限,right(condition)为给定的条件 但是往往区间会开的很大,这时候就会超时,...原创 2018-03-18 23:01:41 · 435 阅读 · 0 评论 -
简单介绍C/C++中结构体内存对齐
C中结构体的内存规则并不是直接其属性的内存直接相加的,而是有一定规则的,也就是内存对齐规则;一:结构体中第一个成员的偏移量是0,以后每个成员的位置是x的倍数;//x是各个属性的内存大小二:成员对齐后,结构体自身也要对齐,按照y的倍数进行;//y是内存最大的属性的内存比如:struct m1{ char a; int c; double d;}m1; cout <&...原创 2018-03-19 21:04:28 · 273 阅读 · 0 评论 -
c++中const和指针,顶层const和底层const
const指针 指针和引用不一样,指针本身是对象,所以可以定义为常量,而引用不行,有常量指针而没有常量引用。常量指针必须初始化,而且一旦初始化,其值(也就是指针存的地址)就不能在改变。把*放在const关键字之前用以说明指针是个常量,这隐含不变的是指针本身(即指针存的地址)的值不变而非指向的那个值; 还有一种就是指向常量的指针,即*在const后面,表示指针...原创 2018-04-10 21:22:22 · 331 阅读 · 0 评论 -
C++ 递归将整形数字转换为字符串
代码如下:typedef long long ll;char *itostr(ll n, char *string){ int p = n/10; if(n < 0)//假如n为负数 { n = -n; *string++ = '-'; } if(p!=0) { string = itostr...原创 2018-06-08 19:42:49 · 1874 阅读 · 0 评论 -
C++ 实现字符串类(重载运算符)
CNString.h:#include <iostream>#include <cstring>#ifndef CNSTRING_H#define CNSTRING_Hclass CNString{public: CNString& operator=(const CNString &cn);//重构= CNString ope...原创 2018-06-08 19:46:21 · 6278 阅读 · 0 评论 -
C++ 实现链表类(链表的各种操作)
Node.h:#ifndef NODE_H#define NODE_Htemplate <class T>class Node{public: Node<T> *next; Node<T> *prev; T data;};#endif //TEST1_NODE_HList.h:#ifndef LINK_...原创 2018-06-08 20:05:35 · 65749 阅读 · 18 评论 -
最大的细胞数量(模拟+搜索)
题目:描述一个N行x M列的矩形培养皿中生存着一堆细胞,在每个细胞周边的细胞存活情况决定着这个细胞本身在下个世代的存活情况。即每个细胞会且仅会被它左上、上中、右上、左边、右边、左下、下中、右下的八个细胞影响。每个世代中培养皿中各个位置的细胞存活状态规则如下:任何活着的细胞如果在它周边存活的细胞少于两个,则死亡,因为它不受欢迎。任何活着的细胞如果在它周边存活的细胞有两个或原创 2017-12-03 23:01:37 · 398 阅读 · 0 评论 -
codevs 1098 均分纸牌
题目:codevs1098思路: 直接从左到右,遇到小于均值的,直接向右边拿,大于均值的,直接给右边,因为纸牌总数为堆数n的倍数,所以最后肯定能均分;代码如下:#include#includeusing namespace std;int a[105];int main(){ int n; cin >> n; int count = 0; int sum =原创 2017-11-23 19:50:48 · 496 阅读 · 0 评论 -
codevs 1008 选数 dfs
#include#include#includeusing namespace std;int a[25];int n ,k , count_t = 0;bool isprime(int t){ for(int i = 2;i <= sqrt(t)+1;i++) { if(t%i == 0) return false; } return true;}void dfs(原创 2017-11-10 22:29:11 · 222 阅读 · 0 评论 -
codevs 1013 求先序排列
题目:codevs 1013;思路:已知后序遍历和中序遍历,不难知道后序的最后一个即为二叉树的根节点,在中序中找到这个节点,就可以知道左右子树的长度,多次递归即可求解,这题其实可以不用先序遍历二叉树,因为后序反过来就是先序了,所以建树的同时输出即可~ps:一开始弄错了substr()函数第二个参数的含义,其第二个参数为截取字符串的长度,我错解为结束截取的位置,导致各种bug,不过终于还是改原创 2017-11-11 19:20:23 · 459 阅读 · 0 评论 -
codevs1001 舒适的路(并查集+枚举)
题目:codevs1001思路:看了好多题解才会的,然后发现其实是我不会并查集,恶补了一下并查集;先把所有路按权值从大到小排序,然后依次枚举,假如想知道的景点之间有直达的路,肯定输出1无疑。题解:Code_Together的博客;并查集:并查集(Union-Find)算法介绍 - CSDN博客;代码如下:#include#include#includeusing namesp转载 2017-11-12 23:53:13 · 205 阅读 · 0 评论 -
nyoj 1809 思路题
转载自: 郑大第九届校赛-热身赛-zzulioj-1809-make pair题目:1809: make pairTime Limit: 1 Sec Memory Limit: 128 MB Submit: 87 Solved: 65SubmitStatusWeb Board Descriptionpair是c++标准模板库中一种十分有用的模板类型,它是转载 2017-11-13 00:06:27 · 200 阅读 · 0 评论 -
codevs1083+codevs1160 模拟
题目:codevs1160 codevs1083思路:模拟题主要就是找规律吧代码如下:codevs1160 :#include#include#define right 1#define up 2#define left 3#define down 4using namespace std;int n;int m = 1;int a[100][100];原创 2017-11-18 01:05:20 · 6683 阅读 · 0 评论 -
codevs1501二叉树 搜索
题目:codevs1501思路:就是简单的搜索,注意好几个细节;代码如下:#include#includeusing namespace std;int a[20][2];int wide;int getdeep(int i){ int ld = 0,rd = 0;//一定要初始化,不然会出错 if(a[i][0] == 0 && a[i][1] == 0)re原创 2017-11-18 01:02:01 · 285 阅读 · 0 评论 -
codevs 1009 产生数 floyd算法
题目:codevs1009 产生数思路:一开始没看清题目,以为就是简单地并查集,结果一直错,仔细看了看例子才发现我太天真的了,这题是用Floyd算法求点到点之间的连通关系,可以看成是一张10*10的图: 012345678900000000000100原创 2017-11-14 12:41:27 · 238 阅读 · 0 评论 -
codevs 1010 过河卒 dfs
题目:codevs1010 过河卒思路:感觉没啥好说的,一看到题就想到了dfs(深度优先搜索),按理说bfs(广度优先搜索也可以做出来),不过我一次就过了(这感觉真爽),就没尝试bfs;代码如下:#include#includeusing namespace std;int a[25][25];int bx,by;int cx,cy;int coun原创 2017-11-14 21:48:00 · 378 阅读 · 2 评论 -
放苹果
题目:给定m个苹果和n个盘子,问有多少种放苹果的方法,盘子允许为空,T组测试数据。测试数据:17 38思路:假如n>m,则必有m-n个盘子为空,等价于fun(m,m); 假如n<=m,假设每个盘子都有一个,则放法等价于fun(m-n,n); 假设至少有一个盘子是空的,则放法等价于fun(m,n-1);所以总得放法等价于fun(m,n) = fun(m,n-1)...原创 2017-11-20 18:59:54 · 223 阅读 · 0 评论 -
C++实现全排列(字典序)
以前都是写用复杂的逻辑语言实现全排列,直到发现了C++中原来已经封装好了一个全排列函数:next_permutation(s.begin(),s.end()),头文件这个函数会自动生成下一个字典序的排序,对应的还有prev_permutation,生成上一个字典序排序,炒鸡的简单明了,省去一大堆复杂的循环~~;代码如下:#include #include #include#inc原创 2017-11-20 19:07:12 · 5056 阅读 · 0 评论 -
codevs 1014 装箱问题
题目:codevs 1014思路:我是深搜直接求得答案。还有一种dp的方法,都挺简单的;代码如下:dfs:#include#includeusing namespace std;int v,n;int minv = 1<<30;int a[40];int sum;bool cmp(int x,int y){ return x>y;}void dfs(int x原创 2017-11-15 21:20:48 · 240 阅读 · 0 评论 -
线段树的两道模板题 hdu1698 hdu1166
最近学到了线段树,觉得挺不错的一个数据结构,这里有两个标准的模板题,代码也是别人哪里看到的,自愧不如;#include #include #include #include using namespace std;#define MAXN 50005typedef long long LL;LL arr[MAXN], sum = 0;struct node { LL l,原创 2017-11-21 18:24:00 · 389 阅读 · 0 评论 -
无向图 多余的链接(并查集)
题目:无向图(多余的链接)描述给定一个无向图,这个图是在一棵树的基础上加上一条边构成的,问哪条边可以删掉使图重新变成一棵树?(保证存在有一条边删掉可以使图重新变成一棵树)如果有多个答案,那么输出输入的边中最晚出现的那条边(数据范围输入每行包括两个数字(a和b)表示节点a和节点b是相连的输出输出输入的边中最晚出现的那条边原创 2017-11-30 21:42:28 · 321 阅读 · 0 评论 -
L1-006 连续因子
题目:一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数N(131)。输出格式:首先在第1行输出最长连续因子的个数;然后在第2行中按“因子1*因子2*……*因子k”的格式输出最原创 2017-12-09 22:37:22 · 429 阅读 · 0 评论 -
对串 旋转字符串
题目:旋转字符串(对串)描述S[0...n-1]是一个长度为n的字符串,定义旋转函数Left(S)=S[1…n-1]+S[0].比如S=”abcd”,Left(S)=”bcda”.一个串是对串当且仅当这个串长度为偶数,前半段和后半段一样。比如”abcabc”是对串,”aabbcc”则不是。现在给你字符串,判断他是否可以由一个对串旋转任意次得到。输入原创 2017-12-01 20:58:25 · 381 阅读 · 0 评论 -
codevs 3143 二叉树
题目:codevs 3143思路:就递归解决遍历,用栈和队列也可以做到,但是有简单的何乐而不为;代码如下:#include#includeusing namespace std;int a[17][2];void prev_travel(int root){ if(root == 0) return; cout << root << " "; prev_原创 2017-11-23 19:19:00 · 333 阅读 · 0 评论 -
无重复最长字串 (C++)
题目描述:给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。加入用暴力就没什么好说的了,暴原创 2018-07-05 18:41:49 · 2216 阅读 · 0 评论