
基础题
文章平均质量分 64
hzasrd
这个作者很懒,什么都没留下…
展开
-
ccf 201509-4 高速公路(强连通分量)
试题编号:201509-4试题名称:高速公路时间限制:1.0s内存限制:256.0MB问题描述:问题描述 某国有n个城市,为了使得城市间的交通更便利,该国国王打算在城市之间修一些高速公路,由于经费限制,国王打算第一阶段先在部分城市之间修一些单向的高速公路。 现在,大臣们帮国王拟了一个原创 2017-11-30 23:53:20 · 452 阅读 · 0 评论 -
zzulioj 1473: 奇怪的排序(pair数组)
Description最近,Dr. Kong 新设计一个机器人Bill。这台机器人很聪明,会做许多事情。惟独对自然数的理解与人类不一样,它是从右往左读数。比如,它看到123时,会理解成321。让它比较23与15哪一个大,它说15大。原因是它的大脑会以为是32与51在进行比较。再比如让它比较29与30,它说29大。给定Bill两个自然数A和B,让它将 [A,B] 区间中的所有数按从小到大原创 2016-11-20 19:55:44 · 877 阅读 · 0 评论 -
博弈游戏
1、Bash游戏:有一堆石子共有N个。A B两个人轮流拿,A先拿。每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N和K,问最后谁能赢得比赛。例如N = 3,K = 2。无论A如何拿,B都可以拿到最后1颗石子。#include#includeint main(){ int n,k,t; scanf("原创 2016-12-11 19:54:59 · 347 阅读 · 0 评论 -
51Nod1057 N的阶乘
输入N求N的阶乘的准确值。Input输入N(1 Output输出N的阶乘Input示例5Output示例12010000的阶乘,任何类型都不能保存得下,这里用到了大数的思想,将这阶乘后得来的一串数字每八位分成一份用数组来存储。#include#include#include#include#include#define N 10010原创 2016-11-30 19:07:02 · 473 阅读 · 0 评论 -
poj3279 Fliptile
枚举第一行的翻转所有翻转情况然后逐行向下更新,如果上一行是1的话,那么下面一行肯定要翻转,因为只有下面一行能影响上面一行。 最后判断一下,最后一行是不是都是0,如果都是,则维护最小的翻转次数。#include#include#include#include#include#include#include#include#include#define INF 1<<30u原创 2016-10-07 17:32:13 · 225 阅读 · 0 评论 -
zzuli1210 东东的女朋友(二)(水)
Description我们已经知道了,东东有很多的女朋友。每个女朋友都要东东陪她们,但是现在东东的女朋们每天也都需要上课,所以不可能一整天都有时间。现在的问题是,给出东东女朋友每一天的空闲时间,问东东最少用多少天可以陪每个女朋友至少一次。因为东东还要留很多时间来学习算法呢。当然当东东在陪一个女朋友时间段内不可以同时去陪另一个女朋友。Input第一个数t表示有t组测试实例,每原创 2016-10-28 12:30:53 · 2447 阅读 · 4 评论 -
poj3069 Saruman's Army(贪心,水)
DescriptionSaruman the White must lead his army along a straight path from Isengard to Helm’s Deep. To keep track of his forces, Saruman distributes seeing stones, known as palantirs, among the原创 2016-10-16 11:53:47 · 221 阅读 · 0 评论 -
zzulioj1783简单的求和
暴力求解肯定会超时,刚开始写时候怎么也想不到优化方案,看了看大神们写的后才知道原来还可以这样采取空间换时间。类似与素数筛选法的思想,然后打表就可以了= =代码如下:#include#include#includelong long sum[1000010];long long pp()//核心代码{ int i,j; sum[1]=1; for(i=2;原创 2016-05-16 13:35:11 · 470 阅读 · 0 评论 -
zzulioj1908(小火山的围棋梦想)
一道简单的搜索题。可以搜索每一个点,看这个点是否可以走到边界外,如果不可以走到,说明这个点被包围了,注意用bfs来做,(反正我用dfs超时了,不过听巨巨说他是用dfs做的,不知道怎么过了 ╮(╯▽╰)╭);#include#include#include#includeusing namespace std;char a[30][30];int b[30][30],m,n,fla原创 2016-08-10 18:01:46 · 507 阅读 · 0 评论 -
zzulioj 1902( 985的因子对难题)
类似于素数筛选的方法打表,用数组a来记录每个数组出现的次数(下标法)#include#include#include#includeint a[1000010]; int main(){ int i,j,t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); int max原创 2016-08-11 15:16:21 · 297 阅读 · 0 评论 -
zzulioj 1912: 小火山的爱情密码
Description小火山获得了一个字符串,然而大火山让小火山从里面截取一段字符串,并且让小火山截取的字符串满足一些字符达到一定数量。小火山觉得很容易,但是他想要知道他至少得截取多长的字符串。Input首先是一个整数t(t的种类.(字符只包含小写英文字母)个数(没有重复字符种类),然后有m行,每行第一个是一个字符,然后是一个整数x(xOutput原创 2016-08-15 23:12:51 · 370 阅读 · 0 评论 -
zzulioj 1204 剔除相关数(map和vector的应用)
Description一个数与另一个数如果含有相同数字和个数的字符,则称两数相关。现有一堆乱七八糟的整数,里面可能充满了彼此相关的数,请你用一下手段,自动地将其剔除。Input多实例测试。每组数据包含一个n(nOutput按从小到大的顺序输出非相关数,若没有非相关数,则输出None。Sample Input8213 667 3 213 43原创 2016-10-24 12:42:00 · 1296 阅读 · 0 评论 -
全排列
求正整数n(int型)的全排列;#include#include#include#include#include#include#define N 1000200#define MOD 1000000007#define INF 2<<30using namespace std;typedef long long ll;int main(){ char str[原创 2016-12-06 16:04:39 · 257 阅读 · 0 评论 -
用并查集判断是否为树
描述给定一个包含 N 个顶点 M 条边的无向图 G ,判断 G 是不是一棵树。输入第一个是一个整数 T ,代表测试数据的组数。 (1 ≤ T ≤ 10)每组测试数据第一行包含两个整数 N 和 M 。(2 ≤ N ≤ 500, 1 ≤ M ≤ 100000)以下 M 行每行包含两个整数 a 和 b ,表示顶点 a 和顶点 b 之间有一条边。(1 ≤ a, b ≤ N)原创 2017-07-30 17:21:30 · 642 阅读 · 0 评论 -
51Nod1027 大数乘法
给出2个大整数A,B,计算A*B的结果。Input第1行:大数A第2行:大数B(A,B的长度 = 0)Output输出A * BInput示例123456234567 Output示例28958703552大数乘法,模拟乘法的步骤就好了。#include#include#include#include#include#define原创 2016-11-30 19:14:23 · 517 阅读 · 0 评论 -
hdu3068 最长回文子串问题.
O(n)法求最长回文串,代码如下#include#include#includeint p[310000];char str[310000];int min(int a,int b){ return a<b?a:b;}int kp(int n){ int i; int max=0; int id,ans=1;; for(i=1;i<n;转载 2016-05-21 17:14:46 · 298 阅读 · 0 评论 -
hdu 2572 终曲(sustrb的用法)
题意中文题目,很简单。思路:把第一个字符串的额所有子串求出来,然后逐个判断是否包含有第二个和第三个字符串,最后打印结果就行。这里要求所有子串,可以使用c++里的一个函数strsub(i,j),第一个参数是要截取的字符串的起始位置,后一个参数是要截取字符串的长度。代码如下:#include#include#include#include#includeusing namespa原创 2017-03-06 21:05:20 · 391 阅读 · 0 评论 -
uva 1586 分子量
题意:给你一个分子式,求出这个分子的摩尔质量是多少,已知分子式只含有 C、H、O、N 四种元素。这是一道非常简单的题,只需要用sum累加所有原子的原子质量就行了,遇到数字的时候就累加这个数字乘上前面的原子的原子质量,很水,却在细节上浪费了一小会,实在不应该。#includeusing namespace std;mapmp;int main(){ int t,i原创 2017-07-09 17:56:59 · 311 阅读 · 0 评论 -
uva10391 Compound Words (substr用法)
题意:给你一组字符串构成一个字典,问字典中是否存在复合词,复合词的定义为这个词在字典中,并且油这个词分割成的两个词也在字典中。用map存字典,遍历整个字典,遍历到其中一个字符串的时候,用substr分割这个字符串来判断分割后的两个词是否在字典中。#includeusing namespace std;int main(){ mapmp; string s[原创 2017-07-20 20:32:35 · 230 阅读 · 0 评论 -
百度之星初赛B 1002 Factory
Problem Description我们将A省简化为由N个城市组成,某些城市之间存在双向道路,而且A省的交通有一个特点就是任意两个城市之间都能通过道路相互到达,且在不重复经过城市的情况下任意两个城市之间的到达方案都是唯一的。聪明的你一定已经发现,这些城市构成了树这样一个结构。现在百度陆续开了许许多多的子公司。每家子公司又会在各城市中不断兴建属于该子公司的办公室。由于各个子公司原创 2017-08-14 20:39:45 · 288 阅读 · 1 评论 -
lightoj1003 Drunk 、uva10305 Ordering Tasks (基于dfs的拓扑排序)
uva10305题意很简单,给你几个任务,这几个任务之间有先做和后做的顺序,如果a,b之间有顺序的话,就必须在做b之前先把a做了,然后问你做这几件事的一个可能的顺序是什么(答案可能不唯一,只要满足要求即可)。这道题很基础的一道拓扑排序,由于数据很小,可以采用矩阵来存储图;关于拓扑排序网上也有很多讲解,感觉dfs这种比较容易理解一点吧,在《算法竞赛入门经典》第二版167页讲解有;#inc原创 2016-09-06 09:18:30 · 414 阅读 · 0 评论 -
算法模板之最近公共祖先问题(LCA)
poj1330最近公共祖先问题模板:#include#include#include#include#include#include#include#include#define N 30000using namespace std;int id[N],vis[N],depth[N],in[N],dp[N][20],k;vectorG[N];int Min(原创 2017-08-10 17:34:19 · 303 阅读 · 0 评论 -
hdu 3183 A Magic Lamp(RMQ)
Kiki likes traveling. One day she finds a magic lamp, unfortunately the genie in the lamp is not so kind. Kiki must answer a question, and then the genie will realize one of her dreams.The questio原创 2017-08-09 16:21:52 · 250 阅读 · 0 评论 -
hdu 1873 看病要排队(优先队列)
看病要排队这个是地球人都知道的常识。 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的话原创 2017-07-21 21:39:33 · 697 阅读 · 0 评论 -
poj3126 Prime Path(BFS水)
感觉似乎是水过去了?还是说这道题太水了,写完没调试测试样例正确,提交一遍过= =思路:先素数打表,然后在进行BFS搜索,每次改变一个数字,是素数的话就加入队列中去,直到搜到最后;#include#include#include#include#include#include#include#include#define INF 1<<30#define N 10009u原创 2016-09-28 12:56:27 · 311 阅读 · 0 评论 -
求N的阶乘的最高位
题意:给你一个整数N,求N的阶乘的最高位是几。数字太大,直接计算无法计算。这道题巧妙的运用了double小数的运算,每次相乘的时候,如果flag>=10,就来个循环每次除以10,将整数变成小数,每次移位,直到flag#includeint main(){ double fact,n,i; scanf("%lf",&n); fact=1; for(i=1原创 2016-10-21 17:24:05 · 2222 阅读 · 3 评论 -
Openj_Bailian_4118:开餐馆(动态规划)
Description北大信息学院的同学小明毕业之后打算创业开餐馆.现在共有n 个地点可供选择。小明打算从中选择合适的位置开设一些餐馆。这 n 个地点排列在同一条直线上。我们用一个整数序列m1, m2, ... mn 来表示他们的相对位置。由于地段关系,开餐馆的利润会有所不同。我们用pi 表示在mi 处开餐馆的利润。为了避免自己的餐馆的内部竞争,餐馆之间的距离必须大于k。请你帮助小明选择一原创 2016-07-30 20:13:09 · 948 阅读 · 0 评论 -
lightoj 1369 - Answering Queries (数学、规律、水)
Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu(明确指出64位格式为lld,用I64d会wa!!!)DescriptionThe problem you need to solve here is pretty simple. You are give a functionf(原创 2016-08-18 20:27:04 · 438 阅读 · 0 评论 -
LightOJ 1138(求末尾零个数)
DescriptionYou task is to find minimal natural number N, so that N! contains exactly Q zeroes on the trail in decimal notation. As you knowN! = 1*2*...*N. For example, 5! = 120, 120 contains o原创 2016-08-18 20:14:12 · 1492 阅读 · 0 评论 -
hdu1425 排序+hash
从这道题学到了排序的一种新方法,当数据量非常大的时候就可以用哈希表这种方法来进行排序,类似于桶排序利用下标;这种排序方法时间复杂度是O(n);#include#include#include#include#include#include#define N 1000010int Hash[N];int main(){ int i,m,n,t; while(~原创 2016-08-07 17:16:10 · 248 阅读 · 0 评论 -
hdu1496 equation(较好的hash)
初一看四个变量,四重循环,暴力肯定会超时,这个时候可以将等式移项一下,得到如下式子;a*x1^2+b*x2^2=-c*x3^2-d*x4^2;这样一来,可以将左边的结果暴力枚举一下存在一个数组中,同时将右边的结果枚举一下,存在另一个数组,当两边结果相等时,用左边的方案数乘上右边的方案数就是最终的方案数;#include#include#include#include#inclu原创 2016-08-07 16:48:33 · 483 阅读 · 0 评论 -
LightOJ - 1041 Road Construction(最小生成树)
DescriptionThere are several cities in the country, and some of them are connected by bidirectional roads. Unfortunately, some of the roads are damaged and cannot be used right now. Your goal is t原创 2016-08-17 10:54:03 · 427 阅读 · 0 评论 -
Lightoj 1078(模拟取余)
这道题其实就是个手动模拟除法的过程,每次对所得余数*10+后面的一位数字重新得到一个数,循环此过程直到整除就行了;#include#include#include#include#include#define N 60using namespace std;int main(){ int t,n,d,k,h; scanf("%d",&t); k=0;原创 2016-07-30 20:07:46 · 435 阅读 · 0 评论 -
hdu 1014 Uniform Generator
看网上大神说这个题实质上是求最大公约数,看是否两个数的最大公约数为1,是的话就是good;不是的话就是bad;听起来很简便,不过毕竟我是弱鸡,想不明白怎么回事,还是老老实实的按常规思路来吧。题意很简单,按照给出的公式计算,推算0~mod-1之间的数是否都出现过就行。计算出所有seed然后用个循环遍历一下看是否都有即可。注意seed是循环出现的,所以计算到第一次循环结束就可以了。#inclu原创 2016-05-13 13:31:14 · 285 阅读 · 0 评论 -
hdu2095异或问题
异或,英文为exclusive OR,或缩写成xor异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运原创 2016-05-23 21:41:54 · 345 阅读 · 0 评论 -
1061:青蛙的约会
解题思路:因为可以把路径看成一个环,那么对青蛙每次跳跃后再对路径的长度取模,就是青蛙此时的坐标。判断两者青蛙坐标是否相等,相等的话输出坐标就行。如果两只青蛙在同时回到起点时还没有相遇,则永远不能相遇;#include#include#include#include#include#define N 110using namespace std;int main(){原创 2016-07-30 20:03:54 · 281 阅读 · 0 评论 -
hdu1257 导弹拦截系统(LIS)
给你一个序列,求这个序列中不上升子序列有多少个;这道题可以转换为求原序列的最长上升子序列,即 不上升子序列的最小划分数=最长上升子序列的长度!这是一个很巧妙地转换;不明白的可以仔细想想;#include#include#include#include#include#include#define INF 1<<30#define N 20000using namespa原创 2016-09-13 16:12:05 · 444 阅读 · 0 评论 -
hdu1466计算交点数(DP)
m条直线的交点方案数=(m-r)条平行线与r条直线交叉的交点数 + r条直线本身的交点方案=(m-r)*r+r条之间本身的交点方案数(1)#include#include#include#include#include#include#define INF 1<<30#define N 20000using namespace std;int main(){原创 2016-09-13 21:54:47 · 265 阅读 · 0 评论 -
hdu1253 胜利大逃亡(BFS)
简单的搜索题,以往做的都是二维的,这个是三维的,建好图之后按照以前的做法来就行了;#include#include#include#include#include#include#define INF 1<<30#define N 55using namespace std;int a[N][N][N],b[N][N][N];struct que{ int x,y原创 2016-09-20 13:39:20 · 293 阅读 · 0 评论 -
hdu1495 非常可乐(规律)
网上大多都是用bfs来写的,不过其实这也是一道规律题;#include#include#include#include#include#include#define INF 1<<30#define N 210using namespace std;int gcd(int a,int b){ if(a%b==0) return b; retu原创 2016-09-19 21:46:21 · 1614 阅读 · 4 评论