![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
poj
文章平均质量分 67
freshXD
爱是势均力敌
展开
-
字符串小汇总
[汇总]字符串题目推荐及解题报告POJ 1002 - 487-3279(基础)http://acm.pku.edu.cn/JudgeOnline/problem?id=1002题意:略解法:二叉查找数,map,快排...POJ 1200 - Crazy Search(基础)http://acm.pku.edu.cn/JudgeOnline/pro转载 2013-09-12 14:56:13 · 743 阅读 · 0 评论 -
dsa 拓扑排序
/*思路比较简单,主要是没有数据规模,所以用了new 一片新空间的方法, 但是忘了怎么动态申请二维数组...以及最开始时直接把g初始化了....*/#include#include#include#include#includeusing namespace std;int v,a,s,e;int **g;int *rec,*visit;int main(){ in原创 2013-12-19 21:42:20 · 471 阅读 · 0 评论 -
poj Gone Fishing
#include#include#include#include#includeusing namespace std;const int maxn = 30;int hour,lakenum;int f[maxn],t[maxn],d[maxn];int ans,curBest[maxn],copyf[maxn],finalans[maxn]; //curBest记录在当前原创 2014-01-22 08:28:34 · 770 阅读 · 0 评论 -
poj Wooden sticks
#include#include#include#include#include#includeusing namespace std;const int maxn = 5010;class stick{public: int length; int weight; bool operator < (const stick & item) const { if(we原创 2014-01-22 09:23:08 · 566 阅读 · 0 评论 -
poj Game Prediction
题目大意:m个玩家,每个人n张牌,(2 样例:2 51 7 2 10 96 1162 63 54 66 65 61 57 56 50 53 480 0分析:以第一组样例为例:牌点数为1-10,这样10和9一定能赢,而7则不一定(因为8在别人手里)同理对于第二组样例:66,65一定能赢,但63不一定(因为64在别人手里)但63,62,61里原创 2014-01-22 09:59:55 · 650 阅读 · 0 评论 -
poj Radar Installation
题目大意:给定x轴上方n个点的坐标和一个半径,求出x轴上的最少点的个数,使得以这些点为圆心的圆覆盖住x轴上方所有的点解法:首先,如果存在y>d的点,那就没有solution由点的纵坐标和半径可以确定出覆盖住每个点的圆心的横坐标范围将这些范围按起点优先排序,为了尽可能的少用x轴上的点,就要使得每个点尽可能的向右即对于范围的左端点在最左端的点,要取其右端点作为圆心位置若原创 2014-01-22 15:57:28 · 619 阅读 · 0 评论 -
poj 1655 树状dp
#include#include#include#include#include#includeusing namespace std;const int maxn = 20010;const int inf = 0x1fffffff;typedef struct EDGE{ int node,Next;}Edge;Edge edge[maxn<<1];int bal原创 2014-01-23 21:07:14 · 538 阅读 · 0 评论 -
poj 1015 dp
题目大意:给定两组数,每组n个,p1...pn,d1..dn,其中pi,di对应于同一个人,要选出m个人,这m个人的Σp - Σd的绝对值最小,当有多组数据符合条件时,选择Σp+Σd的绝对值最大的一组数从小到大print选择的m个人的编号思路分析:这道题的难点在于确定状态转移方程的参量含义,参考了一下网上的解法,dp[i][j]表示已经选了i个人且 Σp - Σd =原创 2014-02-23 15:40:51 · 543 阅读 · 0 评论 -
poj 2787
#include #include using namespace std;const int NUM = 4;const int TARGET = 24;const double ZERO = 1e-6;bool flag = false;double number[NUM];bool Deal(int);int main(){ while(cin >> number转载 2014-02-13 16:20:02 · 842 阅读 · 0 评论 -
poj 2709 Painter
题目大意:一套颜色里有3-12瓶,每瓶50ml,等量(xml)三种不同的颜色混合可以得到xml grey(3 * x xml颜色混合后体积不会变大), 给定一套颜色里的瓶数N和需要这N中颜色及灰色的数量,求最少需要多少套颜色?思路:写到这才发现这是个求最优解问题首先,N种不能通过混合得到的颜色只能直接取得,记这N种需要数量最多的为max ml,若max % 50 == 0,则从ma原创 2014-02-17 21:41:44 · 665 阅读 · 0 评论 -
poj 2586 greedy
#include#includeusing namespace std;int main(){ //貌似代码里默认0元是surplus int s,d,surplus; while(scanf("%d%d",&s,&d)!=EOF){ bool flag = false; if(s >= 4 * d){ flag原创 2014-02-17 22:17:13 · 612 阅读 · 0 评论 -
poj 2325
#include#include#include#include#include#includeusing namespace std;/*如果这个数有>7的质因子,那么there is no possible answer*//*一位的质数*/const int maxlength = 1005;char digit[maxlength];char divisio原创 2014-02-19 14:04:41 · 654 阅读 · 0 评论 -
poj 3258
这道题的解法比较巧妙(一开始没有想到)用了二分搜索来确定解一开始我的想法是找到一个距离最小的间隔,如果在边上(间隔起点为0 Or 间隔终点为N+1),那么就和唯一相邻的合并,否则的话向两边找,如果左边的比右边的长,就和右边的合并(提高最小间隔的数值),如果右边的长,相同道理和左边合并;两边一样长时,继续向两侧找;如果一直试到边上两边都一样长,那么随便选一个;如果在一侧碰到边以前两边原创 2014-02-20 10:26:43 · 581 阅读 · 0 评论 -
双数组找中位数
#include#include#includeusing namespace std;const int maxn = 100010;int A[maxn],B[maxn],C[maxn];int main(){ int n,i,total; while(scanf("%d",&n)!=EOF) { for(i = 0; i < n;原创 2014-03-10 13:36:20 · 1045 阅读 · 0 评论 -
poj 1961 Period
#include#include#include#includeusing namespace std;char str[1000010];int *Next;int n;void findNext(char *p){ if(Next != NULL){ delete[]Next; } Next = new int [n+1]; int i = 3, k; Next原创 2013-09-04 21:22:38 · 629 阅读 · 0 评论 -
dsa 位查询
#include#includeusing namespace std;const int MAXN = 100000;const int MAXM = 200000;unsigned short digit[MAXN];int m,n,para;char order;int main(){ //freopen("1.txt","r",stdin); scanf("%d%d",原创 2013-09-04 21:45:03 · 788 阅读 · 0 评论 -
poj 1723Soldiers 带全中位数
#include#includeusing namespace std;int N,x[10000],y[10000],rx,ry,t,sum;int main(){ cin>>N; for(int i=0;i<N;i++){ cin>>x[i]>>y[i]; } sort(y,y+N); ry=y[N/2]; sort(x,x+N); for(int i=0;i<转载 2013-07-21 14:36:02 · 640 阅读 · 0 评论 -
poj 1061青蛙的约会(扩展欧几里得)
#include #include #include using namespace std;int common;int ex_gcd(int a,int b, int &x ,int &y){ if(b == 0){ x = 1; y = 0; return a; } int d = ex_gcd(b,a % b,x,y); int temp = x; x =原创 2013-06-10 11:59:39 · 669 阅读 · 0 评论 -
poj divisibility
// 背包问题 #include #include int dp[10001][101];int n, m;int a[10001];int main(){int i, j, k, tmp;while (scanf ("%d%d", &n, &m) != EOF){for (i = 1; i <= n; i++){scanf ("%d", &a[i]转载 2013-06-07 12:58:02 · 601 阅读 · 0 评论 -
poj3709 2进制转化为3进制
#include #include #include #include using namespace std;unsigned long long base = 1;int main(){ //freopen("1.txt","r",stdin); int n,length; unsigned long long digit = 0; char str[100]; char原创 2013-06-21 18:09:10 · 931 阅读 · 3 评论 -
poj 跳格问题
#include #include#include#include#includeusing namespace std;/*棋子在起点时,可向前移动一个格子到第二个方格内;棋子在其他方格内时,可根据方格内的数字Ni进行移动。如果Ni大于零,就向前移动Ni个格子;如果Ni小于零,就向后移动-Ni个格子;如果Ni等于零,则此次原地不动一次,在下一步移动时可向前移动一步到下一个格子。显原创 2013-06-24 15:27:54 · 690 阅读 · 0 评论 -
poj 木棒
#include#include#include#include#include#includeusing namespace std;int total, mx,sum;int sticks[100];bool used[100];bool dfs(int tobuild, int localleft, int totalleft,int tr){ //tobuild表示尝原创 2013-06-24 15:29:26 · 843 阅读 · 0 评论 -
poj 1828 Monkey's Pride
#include#include#include#includeusing namespace std;int n;struct a{ int x,y;};bool operator < (const a & c,const a& b){ if(c.x == b.x) return c.y < b.y; return c.x < b.x; }a monkey[5原创 2013-06-25 21:50:53 · 723 阅读 · 0 评论 -
poj 1742 多重背包、数组标记法
#include #include #include using namespace std; #define CLR(arr,val) memset(arr,val,sizeof(arr)) const int N = 100010; int num[110]; bool flag[N]; int cnt[N]; int main(){转载 2013-06-25 21:59:27 · 658 阅读 · 0 评论 -
poj 1042Gone Fishing
//Memory 256kB Time 0ms 代码长度:1955B #include#include#include#include#includeusing namespace std;int n,h;struct lake{ int f; int d;};int t[27];lake l[27];lake ll[27];int tt[27];int be原创 2013-07-11 15:48:20 · 618 阅读 · 0 评论 -
poj 2250 Compromise(动归)
#include#include#include#include#include#include#includeusing namespace std;vector p1, p2;vector p[105][105];char sample[35];string word;int numOfMark = 1;void deal();int main(){ freop原创 2013-07-11 16:40:24 · 664 阅读 · 0 评论 -
poj 2745显示器(模拟)
#include#include#include#include#include#includeusing namespace std;int s, n,len;int number[10];void trans(int num){ if(num == 0){ number[1] = 0; len = 1; return ; } len = log10((do原创 2013-06-26 21:43:56 · 1107 阅读 · 0 评论 -
poj 1384 piggy-bank
#include#include#include#include#includeusing namespace std;const int MAX = 0x6fffffff;int t,e,f,n,net, m;struct coin{ int p; int w;};int c[10010];int main(){// freopen("1.txt","r",stdi原创 2013-06-26 11:57:19 · 664 阅读 · 0 评论 -
poj 1054Annoying frog(枚举)
#include#include#include#include#includeusing namespace std;int r,c,n;struct plant{ int x; int y;};bool operator<(const plant& a,const plant&b){ if(a.x == b.x) return a.y < b.y; return原创 2013-06-27 10:02:53 · 581 阅读 · 0 评论 -
poj 1694 An old stone game
#include#include#include#include#include#includeusing namespace std;class node{public: int mx; //到达此节点所调动的最少石子数 //int cur; //到达此节点时实际占用的节点数 int num; //子节点的数目 int*child; //子节点编号};node原创 2013-07-19 08:11:30 · 703 阅读 · 0 评论 -
POJ 1151
#include <iostream>#include <vector>#include <cmath>#include <algorithm>using namespace std;const double eps = 1e-8;const int maxn = 310;struct node{ double len; int cover;}tree[8*maxn];s原创 2016-07-31 12:51:28 · 439 阅读 · 0 评论