- 博客(22)
- 收藏
- 关注
原创 南阳oj 题目16 矩形嵌套
AC情况:代码:#include <iostream>#include <cstdio>using namespace std;int rect[1005][2];int db[1005];int n;int sc(int x){ int num=0; for(int i=0;i<n;i++){ if(rect[i][1]<rect[x...
2018-02-16 21:01:00 198
原创 南阳oj 题目10 skiing
大年初一,开始练习动态规划。题目:个人感觉主要思路就是还递归,只不过递归的同时记录结果节省时间,代码还可以进一步优化写成递推公式的形式代码:#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int h[105][105];int db[105][10...
2018-02-16 16:29:28 246
原创 poj 3069 Saruman's Army
题目: 贪心算法,先对x[i]从小到大排序,然后从x[0]开始遍历,找到x[0]+R能覆盖的最远的点i,找到x[i]+R能覆盖的最远的点l。再以l为起点循环上述过程 AC情况: 代码:#include<iostream>#include<algorithm>using namespace std;int x[1005];int main() { int R, N,cnt;
2017-09-23 10:28:35 173
原创 poj 2456 Aggressive cows
题目: 首先把牛棚的位置x[i]按从小到大排序。牛棚数量N,牛数量为C,则每两只牛间可能的最大距离r=(x[N - 1] - x[0]) / (C - 1)。用二分法搜索0~r,判断mid满不满足条件。AC情况: 代码:#include<iostream>#include<algorithm>using namespace std;int x[100005];int N, C;in
2017-09-22 15:56:59 216
原创 NYOJ 单词拼接
AC情况: 有点气 理解:代码搬的别的大佬的,有的地方还不太理解,得继续研究。。把单词的开头和结尾两个字母看作结点,单词是线,按这个规则构建图,先根据有多少个字母落单,判断能不能直接输出,不能的话就用深度优先搜索遍历,边排序边遍历,存到栈里,如果不能遍历全部,还是输出(比如aab,baa,ccc),否则输出栈。#include<iostream>#include<cstdlib>#inc
2017-09-13 23:33:13 269
原创 poj 2240 Arbitrage
题目: 思路: 定义个map#include<iostream>#include<map>#include<string>using namespace std;map<string, int> curr;double dis[31][31];double d[31];int n,i;bool bellman() { for (i = 0; i < n; i++) {
2017-09-07 21:03:20 160
原创 POJ 3268 sliver cow party
题目: 奶牛们分别从n个农场前往x地开派对,有m条路线把n个农场相连,路是单向的。 奶牛们从所在的地方用最短路径走到x,再用最短的路径走回来。求出路径最长的奶牛要花费多长时间。 第一行输入n,m,x。随后的m+1行输入a,b,t。从a地到b地花费时间t。 思路: 确定了x点,单源最短路问题。首先用dijkstra算法,把x点到其他所有点的最短距离存储在数组中。然后把所有的路反转一下,再用d
2017-09-05 17:24:10 281
原创 poj Ugly Numbers
未完待续 晚上再写。。题目: AC情况: 代码:#include<iostream>#include<algorithm>using namespace std;int s[1501] = {0,1};int main() { int x2 = 1, x3 = 1, x5 = 1; for (int i = 2; i < 1501; i++) { s[
2017-08-27 16:46:17 231
原创 poj 1308 Is It A Tree?
题目: AC情况: 思路: 判断是不是树,主要两种情况:1.树根不止有一个。2.树根到某个结点的路径不唯一。 主要算法是并查集。 代码:#include<iostream>using namespace std;int parent[101];int flag[101];void init() { for (int x = 0; x < 101; x++) {
2017-08-13 21:05:22 161
原创 poj Six Degrees of Cowvin Bacon
题目: AC情况: #include<iostream>#include<algorithm>using namespace std;int d[301][301];int x[301];int N;void varshall_floyd() { for (int k = 0; k < N; k++) for (int i = 0; i < N; i++)
2017-08-07 23:02:12 224
原创 文章标题
题目: AC情况: 思路:树状数组#include<iostream>#include<string>#include<bits/stdc++.h>using namespace std;int a[1000002];int d[1000002] = {0};int N, M;int lowbit(int x) { return x&(-x);}void updat
2017-08-05 21:55:36 134
原创 POJ 2431 Expedition
题目: AC情况: 主要思路: 这题用到了贪心算法和优先队列。油箱里一开始有P单位油,一直往前跑,把途径的加油站放入优先队列中。在到达某个加油站之前没油了,就从优先队列中,弹出能加油最多的那个站,加油,再往前跑,直到跑到终点。如果没跑到,队列里也没有加油站了,就算失败。#include<iostream>#include<algorithm>#include<queue>usin
2017-08-02 15:01:31 153
原创 poj 1258 Agri-Net
题目: 主要思路: 这题没什么,就是最小生成树。但是我一开始用的是Kruskal算法,就是先把路径从小到大排序,然后根据路径遍历,如果路径的两头有一头是尚未被连接的,就把这条路加上,然后标记路的两端的城市均已被连接,直到连接所有城市。就是一直WA不知道为什么,然后换成prim算法。从一个城市开始,然后看与它最近的是谁,然后再看与那个城市最近的是谁,以此类推······ac情况: #incl
2017-07-31 20:37:29 265
原创 心急的C小加
题目: ac情况: 思路:贪心算法+递增子序列。用sort函数对pair数组进行排序,它会自动按照pair.first从大到小,first一样时second从大到小的顺序进行排序。然后统计pair.second的递增序列有几个即可。#include <iostream>#include <algorithm>#include <queue>#include <bits/stdc++
2017-07-29 22:02:27 185
原创 poj Sunscreen
AC情况: 贪心算法关键还是要自己根据题意找出最优的算法,这题主要是根据防晒霜按从小到大排,然后根据防晒霜找牛,如果找到某牛的最低SPF标准比防晒霜的低,且他的最高SPF是目前牛里最小的,就优先给他用。 把牛和防晒霜排序,用到了sort()函数。之后再把用防晒霜 spf[i] 筛选出来的牛放进优先队列q中,q按照牛的最大SPF 从大到小排序。#include<iostream>#inclu
2017-07-26 14:55:24 352
原创 poj Wireless Network
AC情况: 大致思路:这题看到就往并查集上靠了,就是判断距离那块感觉有点费时间,不过AC了,之前WA一次,查了半天发现是FAIL输成了FALL,,难受。。。#include<iostream>using namespace std;int x[1001];int y[1001];int r[1001] = {0};int par[1001];int ran[1001];void in
2017-07-23 11:05:05 310
原创 poj 食物链
AC情况:思路:种类并查集。 这个题目只需要输入一组,可以写的简单一点,但是第一次做这种题目,我想加深点印象所以把函数都完整的写了一下,以后回顾也方便。 因为一共有3种动物,且是循环的吃的关系,一般情况下不能确定谁是第一种谁是第二种第三种,所以把每个动物i都分成3个元素:i-A、i-B、i-C。如果输入说法1 x y,则说明x-A=y-A、x-B=y-B、x-C=y-C。如果输入说法2...
2017-07-21 16:45:30 335
原创 poj Subsequence
思路:用户输入的数列a[n],再定义个sum[n]存储a[n]的前n项和。一开始写的代码老是超时,后来看了一下尺取法可以将时间复杂度优化到o(n),大致思想就是定义起点 l 和终点 f ,f的初始值是满足sum[i]>s的i的最小值。然后l++循环,直到sum[f]-sum[l]#include <iostream>using namespace std;int a[100000];long
2017-07-17 15:29:28 207
原创 poj Apple Catching
#include <iostream>using namespace std;int a[1001][31]; //a[i][j],第i次,移动j次时捡到最多的苹果数量int max(int a, int b) { //判断大小的函数 return a > b ? a : b;}int main() { int t,w,i,j
2017-07-15 16:10:12 204
原创 划分数
刚好前几天在课件上看到了这种例题,简直一摸一样,而且印象挺深的基本思路都记得,所以这次作业没动脑子就写完了哈哈。具体思路: #include <iostream>using namespace std;int s;void Func(int n,int m) { if (m == 1 || n == 1) s++; else { if (m == n) {
2017-07-13 08:27:55 177
原创 Excuses, Excuses!
AC#include <iostream>#include<string>using namespace std;int main() { int k, e, c = 0, l, kl, i, j, p, maxn; //k,e代表keyword与excuse的个数,c是最后输出的excuse的id,l,kl用来存储excuse与key的长度 string ew;
2017-07-12 18:25:07 208
原创 Sumsets
Sumsets Description Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer power of 2. Here are the pos
2017-07-09 15:41:42 525
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人