
算法
本科期间刷的OJ上一些算法题的解法分享,读研期间已不再做,故此专栏不再更新。
zllxot
我要一步一步往上爬,在最高点乘着叶片往前飞
展开
-
NYOJ 108 士兵杀敌(一)
士兵杀敌(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。小工是南将军手下的军师,南将军现在想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。注意,南将军可能会问很多次问题。输入只有一组测试数据第一行是两个整数N,M,其原创 2016-07-26 17:32:42 · 346 阅读 · 0 评论 -
NYOJ 187 快速查找素数
#include#define MAX 2000000int prime[MAX];int isNotprime[MAX];int main(){int n;scanf("%d",&n);while(n){int i,j,num=0;for(i=2;i{if(isNotprime[i]==0) //判断成立说明i是素数prime[num++]原创 2016-07-25 21:38:56 · 345 阅读 · 0 评论 -
NYOJ 28 大数阶乘
#include#include#define MAX 20000int main(){ int a[MAX],c,i,sum,n,j; memset(a,0,sizeof(a)); a[0]=1; scanf("%d",&n); for(i=2;i<=n;i++) { c=0; //进位 for(j=0;j<MAX;j++) { sum=a[j]*i+c;原创 2016-07-25 21:33:44 · 282 阅读 · 0 评论 -
NYOJ 305 表达式求值
自己模仿 NYOJ 35 表达式求值 写的,竟然AC了。。。#include#include#include#define A(x,y) (x+y) //取两数之和 #define B(x,y) (x>y?x:y)//取两数最大#define C(x,y) (x<y?x:y)// 取两数最小 using namespace std;int main(){ int N; sc原创 2016-08-01 16:02:21 · 426 阅读 · 0 评论 -
NYOJ 35 表达式求值
表达式求值时间限制:3000 ms | 内存限制:65535 KB难度:4描述ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧。比如输入:“1+2/4=”,程序就输出1.50(结果保留两位小数)输入第一行输入一个整数n,共有n组测试数原创 2016-08-01 15:58:01 · 395 阅读 · 0 评论 -
NYOJ 2 括号配对问题
括号配对问题时间限制:3000 ms | 内存限制:65535 KB难度:3描述现在,有一行括号序列,请你检查这行括号是否配对。输入第一行输入一个数N(0输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入3[(])(])([[]()])样例输出NoNoYes原创 2016-07-25 21:41:33 · 299 阅读 · 0 评论 -
NYOJ 311 完全背包
完全背包时间限制:3000 ms | 内存限制:65535 KB难度:4描述直接说题意,完全背包定义有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是c,价值是w。求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。本题要求是背包恰好装满背包时,求出最大价值总和是多少。如果不能恰好装满背包,输出NO原创 2016-12-10 16:09:31 · 272 阅读 · 0 评论 -
HDU 2191 悼念512汶川大地震遇难同胞(01背包)
动态规划问题中的01背包/*Problem Description急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。请问:你用有限的资金最多能采购多少公斤粮食呢?Input输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行原创 2016-12-10 16:05:18 · 277 阅读 · 0 评论 -
NYOJ 204 Coin Test
#include#include#include#include#define MAX 70000int main(){ int n; scanf("%d",&n); getchar(); char s[MAX]; scanf("%s",s); int i; int a,b,flag=0; a=b=0; for(i=0;i<n;i++) { if(s[i]=='原创 2016-08-01 15:21:40 · 264 阅读 · 0 评论 -
NYOJ 255 C小加之随机数
C小加 之 随机数时间限制:3000 ms | 内存限制:65535 KB难度:1描述ACM队的“C小加”同学想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(0输入第一行输入整数T(1每组测试数据包括2行,第1行为1个正整数,表示所生成的随机数的个数:N(0第2行有N个用空格隔开原创 2016-08-01 15:03:15 · 321 阅读 · 0 评论 -
NYOJ 105 9的余数
#include #include int main(){ int t; char s[1000000]; scanf("%d",&t); while(t--) { scanf("%s",s); int size=strlen(s); int res=0; for(int i=0;i<size;i++) { res=(res*10+s[i]-'0')%9;原创 2016-07-26 20:37:48 · 306 阅读 · 0 评论 -
NYOJ 914 Yougth最大化(贪心+二分)
Yougth的最大化时间限制:1000 ms | 内存限制:65535 KB难度:4描述Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗?输入有多组测试数据每组测试数据第一行有两个数n和k,接下来一行有n个数Wi和Vi。(1输出输出使得单位价值的最大值。(保留两位小数)样原创 2016-12-10 16:31:54 · 365 阅读 · 0 评论 -
NYOJ 586 疯牛(贪心+二分)
疯牛时间限制:1000 ms | 内存限制:65535 KB难度:4描述农夫 John 建造了一座很长的畜栏,它包括N (2 但是,John的C (2 输入有多组测试数据,以EOF结束。第一行:空格分隔的两个整数N和C第二行——第N+1行:分别指出了xi的位置输出每组测试数据输出一个整数,满足题意的最大的最小值,注意换行。样例输入原创 2016-12-10 16:26:40 · 435 阅读 · 0 评论 -
HDU 1969 pie(贪心+二分)
PieTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10686 Accepted Submission(s): 3805Problem DescriptionMy birthday is coming原创 2016-12-10 16:23:21 · 310 阅读 · 0 评论 -
NYOJ 6 喷水装置(一)(贪心)
喷水装置(一)时间限制:3000 ms | 内存限制:65535 KB难度:3描述现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1<i<600)个,并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润。原创 2016-12-10 16:13:00 · 299 阅读 · 0 评论 -
HDU 1272 小希的迷宫
小希的迷宫Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 45749 Accepted Submission(s): 14222Problem Description上次Gardon的迷宫城堡小希玩了很原创 2016-12-05 19:50:40 · 275 阅读 · 0 评论 -
HDU 1213 How Many Tables(简单并查集)
裸并查集../* How Many TablesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25760 Accepted Submission(s): 12829Problem DescriptionTo原创 2016-12-05 15:45:03 · 240 阅读 · 0 评论 -
HDU 1232 畅通工程(简单并查集)
基本上是裸的并查集,除了最后合并以后查找根节点时找到的根节点数目要减1,因为n个节点之间只需n-1条道路。/* 畅通工程Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi原创 2016-12-05 15:41:21 · 281 阅读 · 0 评论 -
NYOJ 1100 WAJUEJI which home strong(BFS+优先队列)
WAJUEJI which home strong!时间限制:1000 ms | 内存限制:65535 KB难度:2描述在一个山沟里,姐弟俩同时考上了大学。但由于家里拮据,所以这并不是什么好消息。父亲对孩子说:我就是砸锅卖铁也要把你们姐俩供出来。 当时的姐姐已经决定放弃上学的机会。 没想到第二天天还没亮,弟弟就偷偷带著几件破衣服和几个乾巴馒头走了,在姐姐原创 2016-12-03 16:53:04 · 313 阅读 · 0 评论 -
CSUOJ 1336 Interesting Calculator(BFS+优先队列)
题目大意:输入两个数,总共有三大种可能到达的状态:1.第一个数后面添加一位数(0,1,2,3...9);2.第一个数+一个数(0,1,2,3...9);3.第一个数*一个数(0,1,2,3...9);下面3行10列分别对应到达每种状态的花费,求从第一个数变到第二个数的最小花费和最小变换次数。#include#include#includeusing namespace std;in原创 2016-11-28 20:03:02 · 248 阅读 · 0 评论 -
HDU 1242 Rescue(BFS+优先队列)
题目大意:给你一张n*m地图,“#”代表墙,不能走,“.”代表路,“a”代表终点,“r”代表起点并且起点可能不唯一,“x”代表士兵,每走一步花费1单元时间,杀死士兵额外花费1时间,问最短时间。思路:既然起点不唯一,那么就要把终点当做起点开始bfs,直到找到r结束,因此需要用到优先队列,优先选择花费时间少的。代码如下:#include#include#includeusing name原创 2016-11-28 19:36:46 · 381 阅读 · 0 评论 -
POJ 3278 Catch That Cow
简单BFS:数组模拟队列:#include#include#define MAX 100010int x,k;int vis[MAX];struct node{ int m,step; }now,next,que[MAX];int bfs(){ int head,tail; head=tail=0; que[tail].m=x; que[tail].st原创 2016-11-14 20:54:24 · 206 阅读 · 0 评论 -
NYOJ 1058 部分和问题(DFS)
部分和问题时间限制:1000 ms | 内存限制:65535 KB难度:2描述给定整数a1、a2、.......an,判断是否可以从中选出若干数,使它们的和恰好为K。输入首先,n和k,n表示数的个数,k表示数的和。接着一行n个数。(1输出如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”样例输入原创 2016-12-03 16:46:55 · 254 阅读 · 0 评论 -
NYOJ 499 迷宫(DFS)
迷宫时间限制:1000 ms | 内存限制:65535 KB难度:4描述一个由 n * m 个格子组成的迷宫,起点是(1, 1), 终点是(n, m),每次可以向上下左右四个方向任意走一步,并且有些格子是不能走动,求从起点到终点经过每个格子至多一次的走法数。输入第一行一个整数 T 表示有 T 组测试数据。(T 对于每组测试数据:第一行两个整数原创 2016-12-03 15:58:17 · 329 阅读 · 0 评论 -
NYOJ 722 数独(DFS)
数独时间限制:1000 ms | 内存限制:65535 KB难度:4描述 数独是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个3*3宫内的数字均含1-9,不重复。 每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。原创 2016-12-03 15:05:43 · 393 阅读 · 0 评论 -
HDU 2181 哈密顿绕行世界问题
哈密顿绕行世界问题Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3170 Accepted Submission(s): 1954Problem Description一个规则的实心十二面体,它的 2原创 2016-08-02 20:42:16 · 322 阅读 · 0 评论 -
POJ 2386 Lake Counting
/*POJ 2386:Lake Counting总时间限制: 1000ms 内存限制: 65536kB描述Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100;原创 2016-08-02 14:54:36 · 285 阅读 · 0 评论 -
NYOJ 58 最少步数
??????????????#include#includeint map[9][9]={{1,1,1,1,1,1,1,1,1},{1,0,0,1,0,0,1,0,1},{1,0,0,1,1,0,0,0,1},{1,0,1,0,1,1,0,1,1},{1,0,0,0,0,1,0,0,1},{1,1,0,1,0,1,0,0,1},{1,1,0,1,0,1,0,0,1},{1,1,0,1原创 2016-08-01 14:59:49 · 518 阅读 · 0 评论 -
NYOJ 205 求余数
求余数时间限制:1000ms | 内存限制:65535KB难度:3描述现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数除10003之后的余数输入第一行有一个整数m(1随后m行每行有一个自然数n。输出输出n整除10003之后的余数,每次输出占一行。样例输入345465456541样例输出4原创 2020-07-04 11:45:43 · 175 阅读 · 0 评论