_2017
文章平均质量分 61
Draymonders
这个作者很懒,什么都没留下…
展开
-
C++中的string常用函数用法
标准c++中string类函数介绍 注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数转载 2018-02-09 17:58:30 · 265 阅读 · 0 评论 -
51NOD 1174 区间中最大的数
RMQ 感觉线段树 也就那样儿 #include using namespace std;const int maxn = 10010;int s[maxn2];void up(int rt){ s[rt] = max(s[rt1] , s[rt1|1]);}void build(int l,int r,int rt){原创 2018-02-09 17:59:48 · 332 阅读 · 0 评论 -
51nod 1106 质数检测
#include using namespace std;int n;const int maxn = 1e5+10;bool s[maxn];void is_prime(){ memset(s,true,sizeof(s)); s[0] = s[1] = 0; for(int i=2; i*i ){ if(s[i])原创 2018-02-09 17:59:45 · 242 阅读 · 0 评论 -
51NOD 1081 子段求和
1081 子段求和 给出一个长度为N的数组,进行Q次查询,查询从第i个元素开始长度为l的子段所有元素之和。 例如,1 3 7 9 -1,查询第2个元素开始长度为3的子段和,1 {3 7 9} -1。3 + 7 + 9 = 19,输出19。Input第1行:一个数N,N为数组的长度(2 <= N <= 50000)。第2 至 N + 1原创 2018-02-09 17:59:42 · 306 阅读 · 0 评论 -
extgcd 扩展欧几里得算法模板
#include using namespace std;int extgcd (int a,int b,int &x,int &y){ int d = a; if(b != 0){ d = extgcd(b,a%b,y,x); y -= (a / b)*x; } else x=1,y=0原创 2018-02-09 17:59:39 · 304 阅读 · 0 评论 -
51nod 1073约瑟夫环
思路传送门 :http://blog.csdn.net/kk303/article/details/9629329 n里面挑选m个可以递推从n-1里面挑m个然后n-1里面的x 可以转换成 n里面的x 的公式x = (x+m)%n; #include using namespace std;int main (){ int n,m;原创 2018-02-09 17:59:36 · 184 阅读 · 0 评论 -
UVA 11806 Cheerleaders (容斥原理
1.题意描述本题大致意思是讲:给定一个广场,把它分为M行N列的正方形小框。现在给定有K个拉拉队员,每一个拉拉队员需要站在小框内进行表演。但是表演过程中有如下要求:(1)每一个小框只能站立一个拉拉队员;(2)广场的第一行,最后一行,第一列,最后一列都至少站有一个拉拉队员;(3)站在广场的四个角落的拉拉队员可以认为是同时占据了一行和一列。2.思路分析:本题如果直接枚举的话难原创 2018-02-09 17:59:34 · 354 阅读 · 0 评论 -
HDU 1863 畅通工程 (最小生成树
看卿学姐视频学到的题目 kruskal算法实现最小生成树#includeusing namespace std;const int maxn = 105;typedef long long ll;int n,m;struct edge{ int from ,to; ll cost;}E[maxn*maxn];bool cmp(edge原创 2018-02-09 17:59:31 · 221 阅读 · 0 评论 -
并查集模板
const int maxn = ;int fa[maxn];int fi(int x){ return fa[x]==x?x:fa[x]=fi(fa[x]);}void union(int x,int y){ int fx = fi(x),fy = fi(y); if(fx != fy) fa[fx] = fy;}bool原创 2018-02-09 17:59:28 · 154 阅读 · 0 评论 -
HDU 1874 畅通工程续(最短路训练
因为数据比较小 所以flyod spfa dijkstra 多可以过 Floyd #include using namespace std;const int INF = 0x3f3f3f3f;const int maxn = 210;int s[maxn][maxn];int main (){ int n,m; while(~sc原创 2018-02-09 17:59:51 · 215 阅读 · 0 评论 -
风景区的面积及道路状况分析问题 test
参考文献: https://wenku.baidu.com/view/b6aed86baf1ffc4ffe47ac92.html #include using namespace std;const int maxn = 100;double a[maxn][maxn];int main (){ freopen("in.txt","r",s原创 2018-02-09 17:59:54 · 328 阅读 · 0 评论 -
51NOD 1181 质数中的质数(质数筛法)
1181 质数中的质数(质数筛法) 如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。 Input输入一个数N(N Output输出>=N的最小的质数中的质数。自己写的模拟版本原创 2018-02-09 17:59:56 · 185 阅读 · 0 评论 -
51NOD 1163 最高的奖励
来源:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1163 这个题 自己想了想 mmp 感觉一做贪心题只会用 sort 忽略了 优先队列这题搜了题解后 大概明白了 就是建立一个最小堆 把cost 压入最小堆 如果当前时间 》 Q.size() 说明可以直接加 如果小于等于 就要把cost原创 2018-02-09 18:00:19 · 146 阅读 · 0 评论 -
51NOD 1117 聪明的木匠
来源:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1117 挑战原题吧 大概每次挑选最小的两个,合起来 #include using namespace std;int main (){ int n; scanf("%d",&n); priorit原创 2018-02-09 18:00:13 · 221 阅读 · 0 评论 -
51NOD 1099 任务执行顺序
来源:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1099 前天没睡好 昨天做题闷闷沉沉的好多一眼题 都瞎做了 这题今天早上发现其实 让执行空间大的 存储空间小的 先存储 这样有效空间就最大就好了 #includeusing namespace std;const int ma原创 2018-02-09 18:00:16 · 180 阅读 · 0 评论 -
51nod 1428 活动安排问题 (贪心+优先队列)
来源:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 首先按照开始时间从小到大排序.其实只要维护一个结束时间的最小堆,每次比较开始时间和堆中最小时间的大小,如果比它大就放入堆中并且时间就要变成当前任务的结束时间,否则就要新开一个教室.并且把结束时间加入堆中,注意判断堆是否为空.#inclu原创 2018-02-09 18:00:10 · 163 阅读 · 0 评论 -
51NOD 1133 不重叠的线段
1133 不重叠的线段 X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。 例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠。Input第1行:1个数N,线段的数量(2 <= N <= 10000)第2 - N + 1行:每行2个数,线段的起原创 2018-02-09 18:00:07 · 197 阅读 · 0 评论 -
51NOD 1432 独木舟(贪心
1432 独木舟 n个人,已知每个人体重。独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?Input第一行包含两个正整数n (0<n<=10000)和m (0<m<=2000000000),表示人数和独木舟的承重。接下来n行,每行一个正整数,表原创 2018-02-09 18:00:05 · 193 阅读 · 0 评论 -
51Nod 1091 线段的重叠(贪心+区间相关
1091 线段的重叠X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。 Input第1行:线段的数量N(2 <= N <= 50000)。第2 - N原创 2018-02-09 18:00:02 · 202 阅读 · 0 评论 -
51Nod 1344 走格子(贪心
1344 走格子 有编号1-n的n个格子,机器人从1号格子顺序向后走,一直走到n号格子,并需要从n号格子走出去。机器人有一个初始能量,每个格子对应一个整数A[i],表示这个格子的能量值。如果A[i] > 0,机器人走到这个格子能够获取A[i]个能量,如果A[i] < 0,走到这个格子需要消耗相应的能量,如果机器人的能量 < 0,就无法继续前进了。问机器人最少需要有多少初原创 2018-02-09 17:59:59 · 167 阅读 · 0 评论 -
51NOD 1072 威佐夫游戏
1072 威佐夫游戏 有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。 Input第1行:一原创 2018-02-09 17:59:25 · 179 阅读 · 0 评论 -
51NOD 1069 Nim游戏
1069 Nim游戏 有N堆石子。A B两个人轮流拿,A先拿。每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N及每堆石子的数量,问最后谁能赢得比赛。例如:3堆石子,每堆1颗。A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子。 Input原创 2018-02-09 17:59:23 · 243 阅读 · 0 评论 -
dp暑假专题 训练记录
A 回文串的最小划分 题意:给出长度不超过1000的字符串,把它分割成若干个回文字串,求能分成的最少字串数。#include #include #include string.h>#include string>using namespace std;const int mod = 1e9 + 7;const int maxn = 1000 + 5;co原创 2018-02-09 17:58:49 · 201 阅读 · 0 评论 -
dp入门 专题记录 2017-7-26
POJ3176-Cow Bowling题目大意:现有n行数,以金字塔的形式排列,即第一行一个数字,第二行2个数字,依次类推,现在需要找一条从第一层到第n层的路线,使得该路线上的所有点的权值和最大思路:根据分析可以得出状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]),dp[i][j]表示以第i行第j个位置作为终点的的线路中的最大权值。#in原创 2018-02-09 17:58:46 · 191 阅读 · 0 评论 -
dp问题 -挑战例题 2017-7-24
01 背包题意: 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。f[i][v] = max{ f[i-1][v] , f[i-1][ v-c[i] ] + w[i] } #include #include #include using原创 2018-02-09 17:58:43 · 188 阅读 · 0 评论 -
贪心思维 专题记录 2017-7-21
A、UVa 10382 - Watering Grass题目大意:有一块草坪,长为l,宽为w,在它的水平中心线上有n个位置可以安装喷水装置,各个位置上的喷水装置的覆盖范围为以它们自己的半径ri为圆。求出最少需要的喷水装置个数。 思路 :转化一下 将二维降成一维 d = sqrt(1.0*r*r-w*w/4.0) 接着就是区间覆盖问题了#include原创 2018-02-09 17:58:41 · 203 阅读 · 0 评论 -
基于贪心算法的几类区间覆盖问题 附代码
(1)区间完全覆盖问题问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例:区间长度8,可选的覆盖线段[2,6],[1,4],[3,6],[3,7],[6,8],[2,4],[3,5]解题过程:1.将每一个区间按照左端点递增顺序排列,排完序后为[1,4],[2,4],[2,6],[3,5],[3,6]原创 2018-02-09 17:58:38 · 360 阅读 · 0 评论 -
HDU 2031 进制转换
进制转换Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 49963 Accepted Submission(s): 27441 Problem Description输入一个十进制数N,将它转换成R进制数输出。原创 2018-02-09 17:58:35 · 188 阅读 · 0 评论 -
辗转相除法 的 证明
挑战上的没有看特别懂 所以从网上搜索了下 感觉能看懂辗转相除法的证明 设两数为a、b(b<a),求它们最大公约数的步骤如下:用b除a,得a=bq+r(0≤r<b)(q是这个除法的商)。 若r=0,则b是a和b的最大公约数。 若r≠0,则继续考虑。 首先,应该明白的一点是任何 a 和 b 的公约数都是 r 的公约数。要想证明这一点,就要考虑把 r 写成原创 2018-02-09 17:58:33 · 405 阅读 · 0 评论 -
hdu 4902 Nice boat
http://acm.hdu.edu.cn/showproblem.php?pid=4902 线段树 区间更新 模板题#includeusing namespace std;#define N 100005#define mid (l+r)/2#define lc (rt<<1)#define rc (rt<<1|1)int T[N2],lazy[N2]原创 2018-02-09 18:03:18 · 216 阅读 · 0 评论 -
二分模板
从卿学姐那里偷来的模板 (整数二分 待更新更加高级的int left = 0,ri =maxn;while (left ri){ int mid = (left + ri)/2; if( check(mid) ) ans=mid,left = mid+1; else ri= mid-1;}cout 这个是double 类型的二原创 2018-02-09 17:58:52 · 189 阅读 · 0 评论 -
二分问题 -挑战例题 2017-7-28
poj 1064 Cable master(寻找可行解)题意: 给出n条线段,以米的单位给出,小数点后两位(精确到厘米),要你对这些线段裁剪,裁剪出m条等长的线段,并且让这些线段尽可能长另外线段的长度不能小于1厘米,如果筹不够m条,输出0.00思路: 1.转换成整数 接着套模板就可以了 2.check函数 里如果sum >= k说明此时可以拆分成k个 然后把区间右移 找原创 2018-02-09 17:58:55 · 227 阅读 · 0 评论 -
二分暑假专题 训练记录 2017-7-29
POJ3258-River Hopscotch题意: 给你区间【0,L】给你n个石头,然后去除m个石头 最大化 石头间最小的距离思路: 首先0和L 这两个石头是不可以动的 然后用 s 数组记录 整个区间的石头 然后排序 此时石头的排序就是有序的了 然后二分套模板 接着check函数才是最关键的好的把 从0到 n+1-m 总共就有 n+2-m 个石原创 2018-02-09 17:58:58 · 157 阅读 · 0 评论 -
51NOD 1066 Bash游戏
1066 Bash游戏基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 有一堆石子共有N个。A B两个人轮流拿,A先拿。每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N和K,问最后谁能赢得比赛。例如N = 3,K = 2。无论A如何拿,B都可以拿到最后1颗石子。原创 2018-02-09 17:59:20 · 182 阅读 · 0 评论 -
51NOD 1058 N的阶乘的长度
1058 N的阶乘的长度基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。 Input输入N(1 Output输出N的阶乘的长度Input示例6Output示例3#include usin原创 2018-02-09 17:59:17 · 255 阅读 · 0 评论 -
51NOD 1057 N的阶乘
1057 N的阶乘基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N求N的阶乘的准确值。 Input输入N(1 Output输出N的阶乘Input示例5Output示例120#include #define clear(a) memset(a,0,sizeof(原创 2018-02-09 17:59:14 · 260 阅读 · 0 评论 -
51NOD 1027 大数乘法
1027 大数乘法基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个大整数A,B,计算A*B的结果。 Input第1行:大数A第2行:大数B(A,B的长度 = 0)Output输出A * BInput示例123456234567Output示例28958703552原创 2018-02-09 17:59:12 · 178 阅读 · 0 评论 -
RMQ 区间最大值 最小值查询
/*RMQ 更新最小值操作 By:draymonder*/#include #include using namespace std;const int mod = 1e9 + 7;const int maxn = 1 17;const int INF = 0x3f3f3f3f;typedef long long LL;int n,s[2*maxn-原创 2018-02-09 17:59:09 · 278 阅读 · 0 评论 -
Codeforces Round #426 (Div. 2) C. The Meaningless Game
C. The Meaningless Game题意: 两个人刚刚开始游戏的时候的分数, 都是一分, 然后随机一个人的分数扩大k倍,另一个扩大k的平方倍, 问给你一组最后得分,问能不能通过游戏得到这样一组得分。(谁扩大k倍, 谁扩大k的平方倍,是可以自由选择的, k的值只要是自然数就行了)。 思路: 对输入的两个数a, b。求(a*b) 的1/3次方, 如果不能得到,就是不能得的输原创 2018-02-09 17:59:06 · 145 阅读 · 0 评论 -
51NOD 1046 A^B Mod C
给出3个正整数A B C,求A^B Mod C。例如,3 5 8,3^5 Mod 8 = 3。Input3个正整数A B C,中间用空格分隔。(1 Output输出计算结果Input示例3 5 8Output示例3用到了快速幂 ,挑战P123比如x ^22 = x ^16 *x ^4*x ^2;22 转换成二进制是10110;#include原创 2018-02-09 17:59:03 · 253 阅读 · 0 评论