编程算法
china1000
要做一个有信仰的人。
要做一个品行端正的人。
我爱计算机,我爱程序。
Judge one by his character,what he treats others and what he believes but not by who he is or what his condition is.
github: https://github.com/china1000
展开
-
Section 5.1 Fencing the Cows
/*ID: niepeng1PROG: fcLANG: C++*//*对那个text的讲解没有什么印象,就又参考了别人的程序。典型的凸包题目,就是选定一个定点(左下),然后从这个定点对所有的定点排序,逆时针添加定点,每次添加后如果最后三个点成的角度大于180°,就循环取出最后那个定点。最后凸包已经构成,直接计算就行了。此时方法要求没有任何限制,如果有定点个数或凸包形状,就......*/#incl原创 2010-03-12 16:41:00 · 441 阅读 · 0 评论 -
Section 4.4 Pollutant Control
/*ID: niepeng1PROG: milk6LANG: C++*//* 简单的网络流问题,但是增加了求关键路径。 就是从出发点开始flood fill,注意只flood fill 那些非关键路径的边,就是flow 大于0的边。 很巧。*/#include#includestruct stru{ int f; int t; int value; bool use;}side[1000]原创 2010-02-23 17:14:00 · 469 阅读 · 0 评论 -
Section 4.4 frameup
/*ID: niepeng1PROG: frameupLANG: C++*//* 类似拓扑排序问题,easy。 统计矩形的最左,最右,最上,最下。 并统计矩形的遮挡关系,记录下来。 (在该矩形的四个边上,如果有不同的字母 ,则记录为该矩形被字母矩形遮挡。) 然后每一次输出一个没有被其他矩形遮挡的矩形 ,取消已经输出的矩形对剩余矩形的遮挡,注意此 处需要逆向输出,于是把遮挡关系反着记录,于 是输出时原创 2010-02-23 17:13:00 · 490 阅读 · 0 评论 -
Section 4.4 shuttle
/*ID: niepeng1PROG: shuttleLANG: C++*//* 这个题目,看着简单,就是没有办法做。本来想广度搜索,可是太长了。 忍不住看了题解,原来是这样的呀。其实还是没有懂。 直到看了源程序才明白要这样编写。不过还是知道这样写,自己下次 绝对写着有问题,或者根本写不出来。这找规律也太复杂了。*/#include#include#includeint n;int main(原创 2010-02-21 12:21:00 · 483 阅读 · 0 评论 -
Section 4.3 Street Race
/*ID: niepeng1PROG: race3LANG: C++*//* 基本上就是模拟。 如果是不可绕过的节点,则通过去除该节点后,不会有路径通到最后一个节点(深搜)。 如果是可分割节点,则去除该节点后从开始节点遍历 和 从该节点直接开始遍历应该没有可以重复到达的节点(深搜)。*/#include#include#include#includeint a[51][100];int unav[原创 2010-02-21 12:21:00 · 436 阅读 · 0 评论 -
Section 4.3 prime
/*ID: niepeng1PROG: prime3LANG: C++*//* 无比复杂,无比复杂。 就是取出所有的纯奇数位组成的素数放到边界,然后 就是枚举了.*/#include#include#includestruct node{ char info[40];}ans[1000];bool notprime[100000],isprime[10][10][10][10][10],las原创 2010-02-21 12:25:00 · 447 阅读 · 0 评论 -
Section 4.2 stall4
/*ID: niepeng1PROG: stall4LANG: C++*//* 典型的最大匹配,事实上只要不停的搜索,只要找到y(农场),或者找到x(奶牛)已经占用农场的奶牛,就可以认定完成了一次匹配。 奶牛匹配成功的时候将奶牛的指向农场,农场指向奶牛。*/#include#include#include#define Max1 202#define MMax 0x7fffffffbool map原创 2010-02-12 17:33:00 · 689 阅读 · 0 评论 -
Section 4.2 ditch
/*ID: niepeng1PROG: ditchLANG: C++*/#include#include#define min1(a,b) aint flow[200][200],capa[200][200],pre[200],q[200];int i,m,n;bool Improvable(){ int s,e,i; memset(pre,-1,sizeof(pre));//标记所有节点未使用原创 2010-02-12 17:32:00 · 562 阅读 · 0 评论 -
Section 4.1 Fence Rails
/*ID: niepeng1PROG: fence8LANG: C++*/#include #include #include #include using namespace std;int board[51];int rail[1024];int reslen[51];int n,r;/*没有任何优化,又是没有想出来那个能截除的最多的板子长度肯定是最小的那几个。又狂倒了。 优化为去掉不原创 2010-02-12 17:32:00 · 548 阅读 · 0 评论 -
Section 3.4 Electric Fence
/*ID: niepeng1PROG: fence9LANG: C++*/#include #include #include /*天知道我的那个方法也是扫描直线,但是边界有一点问题,无语了,y了很多很多次。其实我还是认为我的方法正确。可是它在第7个数据就y掉了。其实是没有用up,down.而是统统用down,然后判断高的哪一个边是否有整数点,有的话减一,求和。为什么是错的呢,还没有弄明白?方法二原创 2010-02-12 17:30:00 · 816 阅读 · 0 评论 -
Section 4.2 jobs
/*ID: niepeng1PROG: jobLANG: C++*//*看了题解。 最短的时间就是将任务完成a步骤的时间排序(升),将b任务完成的步骤排序(降),然后对应相加即得到最小的任务完成时间为相加n项中的最大值。*/#include#include#include#include #includeusing namespace std;#define mmax(a,b) a>b?a:b#d原创 2010-02-08 18:34:00 · 455 阅读 · 0 评论 -
usaco Chapter 3 section 3.3 A game
/*A GameIOI96 - Day 1Consider the following two-player game played with a sequence of N positive integers (2 Write a program that implements the optimal strategy. The optimal strategy yields ma原创 2010-01-01 22:59:00 · 562 阅读 · 0 评论 -
Section 5.1 Musical Themes
/*ID: niepeng1PROG: themeLANG: C++*//*典型的动归题目,用双重循环,第一重循环theme的长度第二重循环起始点。如果两个之间相减相同就将当前长度加一,但是注意要小于d。最长的长度即为theme的长度。复杂度O(n^2)*/#include using namespace std;int a[5001];int main(){ freopen("theme.i原创 2010-03-12 21:42:00 · 472 阅读 · 0 评论 -
Section 5.2 Snail Trails
/*ID: niepeng1PROG: snailLANG: C++*//* 这个问题简单,只需要简单的深搜索就行了。 基本的深搜,可是我却花了好久。 问题就在,在一个点搜索的额时候没有记忆已 经搜索的方向,导致函数在一个点上左右上 下方向变换个不停,导致函数陷入死循环,囧。 后来又优化一下。挺简单的其实。*/#include#include#includeusing namespace std;原创 2010-04-14 09:12:00 · 473 阅读 · 0 评论 -
Section 5.3 window area
<br />/*<br />ID: niepeng1<br />PROG: window<br />LANG: C++<br />*/<br />/*矩形切割,要注意不能切割出被观察的矩形*/<br />#include <iostream><br />#include <functional><br />#include <algorithm><br />#include <string><br />#include <stdio.h><br />using namespace std;<br />#de原创 2010-07-27 11:57:00 · 559 阅读 · 0 评论 -
Section 5.3 Network of Schools
/*ID: niepeng1PROG: schlnetLANG: C++*//* 额,没有写出来,直接看例程。 这个对后继的判定存储很巧。其实我还是有点晕。*/#include #include struct node{ int st; int et;}sta[100],temp[100];int i,j,n,t,a[100][100],blo[100],res[100][2],innum,o原创 2010-05-24 13:15:00 · 436 阅读 · 0 评论 -
Section 5.3 Milk Measuring
/*ID: niepeng1PROG: milk4LANG: C++*//*解法很巧妙: 从牛奶桶数目较小到较大递归,然后通过从小到大选择牛奶桶来使第一个 产生的组合满足要求。 然后判断牛奶桶能组成目标牛奶数目的时候,通过取牛奶桶的最大公约数, 如果目标牛奶数是最大公约数的倍数,直接放弃。(不懂,待研究) 否则,就基本动归了,每次记录用某些牛奶同能达到所有牛奶数目。*/#include #incl原创 2010-05-06 23:13:00 · 551 阅读 · 0 评论 -
Section 5.2 Wisconsin Squares
/*ID: niepeng1PROG: wissquLANG: C++*/#include#includeusing namespace std;struct node{ int x; int y; char ch;}list[17];int left1[5]={3,3,3,4,3},i,j,ans;bool set[6][6],fi;char a[6][6];bool can(char ch,i原创 2010-04-23 13:21:00 · 473 阅读 · 0 评论 -
Section 5.3 Big Barn
/*ID: niepeng1PROG: bigbrnLANG: C++*//*这个动态规划,我又没有想出来,干记起来了其实,但是还是写了个O(n^3)的,奇垃圾无比,Shit.后来换了方法。方法就是F[i][j],对表示x 0~i y 0~j 内不为树的正方形数目F[i][j]=minn(F[i-1][j],F[i][j-1],F[i-1][j-1])+1;啊。*/#include usi原创 2010-04-24 01:33:00 · 505 阅读 · 0 评论 -
Section 5.2 Electric Fences
/*ID: niepeng1PROG: fence3LANG: C++*//* 由于在一定范围内肯定越靠近目标点,距离和越小。 于是枚举所有范围内的点。 每次枚举的点间距离减为上次的1/10,最后求出最短距离。 只是最后枚举边界,为什么要增大那么多??? 难道让我们多次后校正吗?*/#include#includeusing namespace std;const double INF=1e-7;原创 2010-04-10 09:37:00 · 895 阅读 · 0 评论 -
Section 5.1 Starry Night
/*ID: niepeng1PROG: starryLANG: C++*//*记录把每个矩形块记录,然后按照四个方向匹配,其实也不复杂奥,就是,难道是我想的太少了。其实细节方面处理也很麻烦的。只是为什么我写的用char的一直会错误。而用int的就会正确的呢?*/#include struct node{ int w; int h; int con[101][101];}model[40];in原创 2010-04-06 11:49:00 · 476 阅读 · 0 评论 -
一把区分开你是大牛还是小菜的问题,全是动态规划。
一把区分大牛与小菜的问题。 1、所有节点的度数小于m的n个节点的连通图有多少?【(?)】2、n个节点的二叉树(满)中距离大于m的节点对有少?【(?)】3、n个节点k深度的二叉树有多少?【(O(N^2))】4、n个节点的连通图有多少?【O(N^2)】5、求一个串中的最长重复字串。【O(N)大牛解法,未看,尚不懂,O(N^2)的倒是懂】原创 2010-04-06 11:50:00 · 525 阅读 · 0 评论 -
一个动态规划例子----n节点的连通图的个数有多少个?
问:n节点的连通图的个数有多少个?(节点不同) 大约1个月前,下到ltc的做男人不容易系列就看到了这个题目。但是讲解soso的简单,我说实在话也想不出来。 今天发现是pku1337的题目,又看到了别人的思路,才想通,这是一个很恨精辟的动态规划的例子。 先写出来解题思路吧,复杂度应该在O(n^2)。 n个结点,总共有可能的边数有 n*(n-1)个原创 2010-04-03 01:07:00 · 6211 阅读 · 1 评论 -
Section 4.3 lgame
/*ID: niepeng1PROG: lgameLANG: C++*//* 又是很无聊的字符串的操作。无聊到死。 就是拿一个串过来比,或拿两个串来比较。*/#include#include#include#include#include #include using namespace std;struct Node{ char s[10]; int poi;}dic[40000];stru原创 2010-02-08 18:33:00 · 499 阅读 · 0 评论 -
Section 4.1 Beef McNuggets
/*ID: niepeng1PROG: nuggetsLANG: C++*//*这题解法玄妙,用了M,N两个素数,那么他们不能组成的最大数是M*N-M-N。然后对小于它的数目全部判断能否构成。如果有点大于最大的不能构成数并且没有被构成,那么就说明永远不可能有不能构成的最大值了。总是感觉正确性有点问题,但是呵呵,我又偷懒了。没有用滑动窗口的方法。闲着可以再思考思考。*/#include #defin原创 2010-02-08 18:35:00 · 567 阅读 · 0 评论 -
Section 3.4 American Heritage
/*ID: niepeng1PROG: heritageLANG: C++*/#include #include using namespace std;#define Max1 30int n;FILE *in,*out;struct Node{ Node(){ right=NULL; left=NULL; } char c; Node *right; Node *left;};int Se原创 2010-01-30 11:47:00 · 411 阅读 · 0 评论 -
usaco Chapter 3 section 3.1 Stamps
/*StampsGiven a set of N stamp values (e.g., {1 cent, 3 cents}) and an upper limit K to the number of stamps that can fit on an envelope, calculate the largest unbroken list of postages from 1 cen原创 2009-11-27 09:29:00 · 487 阅读 · 0 评论 -
usaco Chapter 3 section 3.1 Contact
/*ContactIOI98The cows have developed a new interest in scanning the universe outside their farm with radiotelescopes. Recently, they noticed a very curious microwave pulsing emission sent right原创 2009-11-26 21:13:00 · 665 阅读 · 0 评论 -
usaco Chapter 3 section 3.1 Shaping Regions
/*N opaque rectangles (1 The coordinate system has its origin (0,0) at the sheets lower left corner with axes parallel to the sheets borders. 这个题目就是传说中的难题,我没有思路,看看网上的做法,也搞不懂。什么线段树,我还没有了解。什么原创 2009-11-26 15:36:00 · 462 阅读 · 0 评论 -
杂感
什么是动态规划:动态规划是用空间换时间的方法的一种抽象。 动态规划在背包问题,最长不减子串,还有字符串匹配上用着都很爽(非KMP,附加空间O(A)被匹配的长串的 长度)。 最小生成树: Prime是取点的算法,把所有的点分成两部分,一部分已经使用,另一部分没有使用,每次取距离已经使用的点最近的没有使用的点。 Krustral是取边的算法,把所有点分成很多划分,每次原创 2009-11-27 09:46:00 · 377 阅读 · 0 评论 -
usaco Chapter 3 section 3.1 Score Inflation
/*ID: niepeng1LANG: C++TASK:inflate此题堪称背包算法的绝题,解法的优化让人拍案叫绝*//*The more points students score in our contests, the happier we here at the USACO are. We try to design our contests so that people ca原创 2009-11-25 12:32:00 · 483 阅读 · 0 评论 -
usaco Chapter 3 section 3.1 Humble Numbers
/*ID: niepeng1LANG: C++TASK:humble*//*For a given set of K prime numbers S = {p1, p2, ..., pK}, consider the set of all numbers whose prime factors are a subset of S. This set contains, for example,原创 2009-11-25 12:25:00 · 413 阅读 · 0 评论 -
usaco Chapter 3 section 3.1 Agri-Net
/*ID: niepeng1LANG: C++TASK:agrinet*/#include #include #include #include using namespace std;#define Max1 101int map[Max1][Max1];struct Node{ int fro; int to; int val;};Node edge[Max1*Max1];int原创 2009-11-24 17:44:00 · 401 阅读 · 0 评论 -
我只有一句话可以说,他妈的比了。老子写的Dijkstra 竟然比 Floyd都慢,我可以去死了。他奶奶个熊。
我只有一句话可以说,他妈的比了。老子写的Dijkstra 竟然比 Floyd都慢,我可以去死了。他奶奶个熊。 还是Floyd好又快有简单。 /*ID: niepeng1LANG: C++TASK: comehome*/#include #include #include #include //#include #define Max1 53#define Maxe原创 2009-11-15 16:14:00 · 709 阅读 · 0 评论 -
Fuck,干
我的这个题目老是过不了,一直Y /*ID: niepeng1LANG: CTASK: cowtour*/#include"stdio.h"#include"math.h"double longlink[200][200];char g[200][200];double far[200]={0};double x[200],y[200];int n;FILE *fin,*fout;d原创 2009-11-12 20:41:00 · 1258 阅读 · 0 评论 -
chapter 2 section 2.4 The Tamworth Two
/*ID: niepeng1LANG: C++TASK: ttwo*/#include #include #include #include #include using namespace std;#define MAX2 12char map[MAX2][MAX2];//bool cond[MAX2][MAX2][MAX2][MAX2];FILE *in, *out;int farmer[原创 2009-10-29 21:29:00 · 1549 阅读 · 0 评论 -
usaco Chapter 3 section 3.2 Factorials
/*ID: niepeng1LANG: C++TASK:fact4*//* FactorialsThe factorial of an integer N, written N!, is the product of all the integers from 1 through N inclusive. The factorial quickly becomes very原创 2009-12-02 19:45:00 · 572 阅读 · 0 评论 -
Section 3.4 Raucous Rockers
/*Raucous RockersYou just inherited the rights to N (1 Since you are a classical music fan and have no way to judge the artistic merits of these songs, you decide on the following criteria for m原创 2010-01-30 12:01:00 · 432 阅读 · 0 评论 -
usaco Chapter 3 section 3.3 Shopping Offers
/*Shopping OffersIOI95In a certain shop, each kind of product has an integer price. For example, the price of a flower is 2 zorkmids (z) and the price of a vase is 5z. In order to attract more cu原创 2009-12-09 10:55:00 · 485 阅读 · 0 评论 -
usaco Chapter 3 section 3.3 Riding the Fences
/* Riding the FencesFarmer John owns a large number of fences that must be repaired annually. He traverses the fences by riding a horse along each and every one of them (and nowhere else)原创 2009-12-08 18:10:00 · 485 阅读 · 0 评论