We all love recursion! Don't we? Consider a three-parameter recursive function w(a, b, c): if a
这道题是一道关于强连通分量的题目,不过这道题给出的图比较特殊,所以在求强连通分量时,可以采用广搜来做。
先看我Java代码,用BigINteger类很多东西都不需要考虑,比如前导0什么的,很方便。不过java效率低点,平均用时600ms,C/C++可以0ms过。
题目链接 http://poj.org/problem?id=1007 C++代码实现 #include<string> #include<iostream> using namespace std
题 给定字典,再询问。 字典与询问之间有一个空行。 cin.peek()是一个指针指向当前字符。 #include<iostream> #include<string> #include<map> using namespace std; map<string, string>dic; string s, t; int f; int main() { ios::sync_with_stdio(false); while(cin >> s) if(cin.peek() == '
Logically, they are N lines of N space-separated integers. Physically, they are limited in length to 80 characters, so some lines continue onto others.
大家好,又见面了,我是全栈君。 题目地址: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show
题意是有s个通信工具,p个点,然后给出p个点的坐标,需要把每个点都连起来使其连通,通信工具的作用是使任意两个点的权值为0,问使整个图连通需要最少花费多少。
这道题是用并查集来解。并查集可以高效的查找某个元素是否属于一个集合。 敲代码过程中一次遇到了如下问题: new 的使用问题 想开辟一块放100个整形变量的空间,我这样写的: int *father = new int(100); 给这个int数组赋值的时候一直报错,觉得自己一定是开辟空间的时候搞错了。 果然,new A(100)的写法是说,把变量的值初始化成100。 想要开辟100个A类型的变量空间,应该这么写: int *father=new int[100]; 按照《挑战程序设计竞赛》思路写出
两个木条装雨水能装多少。 两线段相交,且不遮盖的情况下才可能装到水。 求出交点,再取两线段的较高端点的较小值h,(h-交点的y)为三角形的高。 三角形的宽即为(h带入两条线段所在直线得到的横坐标的差值)。 三角形的面积即为雨水的量。 坑点:如果用G++提交,ans要加上eps才能过,c++提交则没问题。 #include <iostream> #include <cmath> #include <cstdio> #define MAX 1<<31 #define dd double using namesp
上一篇我们做了一道棋子摆放的题目,采用的是DFS算法,本篇是一篇BFS算法,在刚开始学习搜索算法的时候,会觉得DFS和BFS算法非常相似,因为都是搜索然后得到结果。
背包问题是DP里面变化比较多的问题,可以参考网上的《背包9讲》,另外还是阅读《算竞入门》和《算竞进阶》,讲的最全的肯定是背包9讲,基本上把所有变形都讲了一遍,但是把问题讲的最清楚应该还是算竞进阶,特别是本篇的0-1背包。
抄袭自https://www.cnblogs.com/Paul-Guderian/p/7624039.html
意甲冠军:给定一个有向图有m单向边缘。免费推断是否两点起来(a可以b要么b可以a或最多彼此),该请求
Bessie is playing a card game with her N-1 (2 ≤ N ≤ 100) cow friends using a deck with K (N ≤ K ≤ 100,000; K is a multiple of N) cards. The deck contains M = K/N "good" cards and K-M "bad" cards. Bessie is the dealer and, naturally, wants to deal herself all of the "good" cards. She loves winning.
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1986 这是一道并查集+树的题,采用Tarjan离线算法 首先BS一下出题的人,也太懒了吧,还要我
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=3513 题目大意是输入树状的家庭关系,问怎么买票(买家庭票还是个人票)最省钱并且票的数量最少 这道
题目链接:http://poj.org/problem?id=2488 A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Tota
Common Subsequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 34477 Accepted: 13631 Description A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2
http://poj.org/problem?id=3664 进行两轮选举,第一轮选前n进入第二轮,第二轮选最高 #include<algorithm> #include<cstdio> using
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C
In 2100, ACM chocolate will be one of the favorite foods in the world.
题目连接 http://poj.org/problem?id=1330 就是构建一棵树,然后问你两个节点之间最近的公共父节点是谁? 代码: 1 /*Source Code 2 Problem:
1.题目主要就是给定你两个四位数的质数a,b,让你计算从a变到b共最小需要多少步。要求每次只能变1位,并且变1位后仍然为质数。
Description 在每天挤奶的时候,农民约翰的N头牛(1≤n≤50000)总是排成一列。有一天,约翰决定与他的牛们一起玩一个极限飞盘游戏。为了简单起见,他将从奶牛队列里面选一定范围内的奶牛来玩这个游戏。然而所有的牛对这个游戏都很感兴趣。农民约翰列出了Q份名单(1≤Q≤200000)和每个奶牛的高度(1≤高度≤1000000)。对于每一份名单,他想你帮助他确定在每份名单中高度最高的奶牛与高度最低的奶牛的高度差是多少。 Input 第一行为N(1≤N≤50000)和Q(1≤Q≤200000);从第2行到
http://poj.org/problem?id=1088 #include<cstring> #include<iostream> using namespace std; int aa[105]
1.这道题问的是给你两个体积分别为A和B的容器,你对它们有三种操作,一种是装满其中一个瓶子,另一种是把其中一个瓶子的水都倒掉,还有一种就是把其中一个瓶子的水导入另一个瓶子中(可能会有剩余)。最后让你输出在能够得出体积为C的水的情况下操作的最小次数并且把过程输出。如果无法得出体积为C的水,则输出“impossible”。
比较水的题,数据量暴力可破,但是你以为这样就结束了吗? 如果数据量大一点呢?不得不说,平时做题还是应该深入一点。 我是在写二维线段树找手感的时候做到这题的,顺势就写了,虽然烦了一点,但是加深了对二维线段树的理解。 不会四分树,只会树套树,洋洋洒洒3500B的代码 /**************************************************** file name: 1656.cpp author: huangjipeng creat time: 2014年09
//终于做出来第一题扫描线了,纠结了好久,纪念一下 //关键在于画图理解 #include<iostream> #include<algorithm> using namespace std; struct node { int left,right; int num,len; }tree[50005*4]; struct line { int x1,x2,flag,y; }lines[2020]; bool cmp(const struct line &a,const struc
因为最近准备模板,所以把不太常用的算法又熟悉了一边,发现果然不练不行。 二维线段树,树套树 #include<iostream> #include<cstdio> #include<cstdlib> #include<string.h> #include<math.h> #include<algorithm> #include<vector> #include<queue> #include<map> using namespace std; int n,m; struct nodey { int
Description You’ve finally got mad at “the world’s most stupid” employees of yours and decided to do
Problem Description Zombies love to eat brains. Yum.
Oulipo Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 40168 Accepted: 16135 Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e'. He was a member of the Oulipo group. A
题意:找出10000以内所有的不能由n+n的各位数字和组成的数字 #include<stdio.h> #include<string.h> int main() { int i=1; int a[100100];//数组开小了,错 memset(a,0,sizeof(a)); for (i=1;i<10000;i++) { a[i+i%10+(i/10)%10+(i/100)%10+i/1000]=1; } for (i=1;i<10000;i++) if(a[i]==0) prin
The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how many quadruplet (a, b, c, d ) ∈ A x B x C x D are such that a + b + c + d = 0 . In the following, we assume that all lists have the same size n .
题目大意是一条大街上住着n个乒乓球爱好者,他们的水平高低用一个数值表示,他们经常举办比赛,比赛要三个人,一人当裁判。对裁判是有一定要求的,裁判的水平必须介于两选手之间且必须住他们中间,计算可以举办多少场比赛
n个卡片可以支撑住的长度是1/2+1/3+1/4+..+1/(n+1)个卡片长度。现在给出需要达到总长度,求最小的n。
Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways: q By an integer sequence P = p1 p2...pn where pi is the number of left parentheses before the ith right parenthesis in S (P-sequence). q By an integer sequence W = w1 w2...wn where for each right parenthesis, say a in S, we associate an integer which is the number of right parentheses counting from the matched left parenthesis of a up to a. (W-sequence). Following is an example of the above encodings:
Pyramids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3448 Accepted: 1122 Special Judge Description
Description 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括
Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 53812 Accepted: 18299 Description A factory produces products packed in square packets of the same height h and of the sizes 1*1, 2*2, 3*3, 4*4, 5*5, 6*6. These products are a
第一个不依靠模板拍出来的字典树,题目比较水,开始空间没开对WA了无数次,纠结了一个多小时 #include<iostream> #include<cstdio> #include<cstring> using namespace std; char dic[10000][25];//这里一开始开了20,死活不对 typedef struct node { int count; struct node *next[26]; }node; node *root=new node(); void
Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 53686 Accepted: 18250 Description A factory produces products packed in square packets of the same height h and of the sizes 1*1, 2*2, 3*3, 4*4, 5*5, 6*6. These products are a
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。 我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。
每个单词,如果字典里存在,输出”该单词 is correct“;如果字典里不存在,但是可以通过删除、添加、替换一个字母得到字典里存在的单词,那就输出 “该单词:修正的单词”,并按字典里的顺序输出;如果都不存在,那就输出“单词:”就好。。。
C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15282 Accepted: 3893 Description A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != B; variable += C) statement; I.e.
Pollution Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4049 Accepted: 1076 Description The managers of a chemical plant, which is notorious for its high pollution, plan to adopt a newly developed device in order to reduce the a
当两个点距离小于直径时,由它们为弦确定的一个单位圆(虽然有两个圆,但是想一想知道只算一个就可以)来计算覆盖多少点。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116617.html原文链接:https://javaforall.cn
这道题目的题意就纠结了很久,刚开始没有读懂,用Kruskal给过了,后来查解题报告可以用Dijkstra,于是就打算用这个算法写一写,松弛那里一直不知道怎么下手,后来搜了无数份解题报告还是看不懂松弛那里怎么实现的,最后和wjx讨论后才理清了思路,原来一直纠结错了地方,虽然算法用对了但是松弛那里却还紧握着最短路径 分析:首先, a frog's jump range obviously must be at least as long as the longest jump occuring in the s
领取专属 10元无门槛券
手把手带您无忧上云