- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 zoj3365——Integer Numbers
<br />题意:给定一串数字,求改变最少的次数,使得其为连贯的递增序列。<br />思路:由于要的是d=1的递增序列,则任意a[i]-i=d,寻找出现最多那个d的个数num。求得需更换的次数为n-num。同时,自己推一下,就可以将序列输出。<br />#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define maxn 50005int a[max
2011-03-31 18:54:00 528
原创 poj2112——Optimal Milking
最初的想法是二分搜索+二分匹配。wa了之后,才知道正解应该是:最短路径+二分搜索+多重匹配。对二分匹配的理解又加深一步。#include#include#includeusing namespace std;#define maxn 250#define maxcost 1e8int g[maxn][maxn];int map[maxn][maxn],maxlen;int k,c,m;bool vis[35];int my[35][35];void init()
2011-03-31 17:10:00 435
原创 poj1654——Area
<br />注意点:用double会出错,精度问题。<br />因为只会出现正数或者n.5,所以,用__int64处理。<br />#include<iostream>#include<cstdio>#include<cstring>using namespace std;double dir[][2]={{0,0},{-1,1},{0,1},{1,1},{-1,0},{0,0},{1,0},{-1,-1},{0,-1},{1,-1}};class point {public:
2011-03-30 21:44:00 430
原创 zoj1010——Area
<br />题意:求判断能否组成多边行,如果可以,求其面积。<br />思路:<br />利用排斥和跨立判断是否线段相交;<br />求面积的话,用到测量师公式。<br />http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_1/page6.html<br />#include<iostream>#include<cstring>#include<cstdio>using namespace std;class point {publ
2011-03-30 20:50:00 537
原创 poj1007——DNA Sorting
<br />发现喜欢用上了sort!操作简单、方便。<br />#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;class str{public: char a[60]; int cout; str() { cout=0; }};str g[110];bool cmp(str &a,str &b){ if
2011-03-29 22:28:00 406
原创 zoj2107——Quoit Design
最近点对。不过,数据比较强,需对Y排序。不断WA,直到重敲一遍代码才A!#include#include#include#includeusing namespace std;#define maxcost 1e100#define maxn 100005class point{public: double x,y;};point p[maxn];bool cmp(point a,point b){ if(a.x
2011-03-28 19:01:00 476
原创 poj3714——Raid
<br />题意:给定两组坐标,求两组之间的最小距离。<br />思路:即最近点对。<br />参考算法导论,<br />http://blog.csdn.net/jw72jw/archive/2011/01/22/6158679.aspx<br />http://blog.csdn.net/smsmn/archive/2010/10/25/5963487.aspx<br />#include<iostream>#include<cstdio>#include<cstring>#include<
2011-03-27 21:04:00 650
原创 poj2356——Find a multiple
<br />应用抽屉原理,可以判断其必定有解,且求出来的解一定是连续的(当然,还有其他非连续解)。<br />关键理解:sum[]数组求出来的范围为0~N-1。那么当抽屉为N的时候,N+1个余数中,肯定至少有两个是相同的。<br />#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define maxn 10005int date[maxn],sum[maxn],vis[maxn];int
2011-03-27 16:52:00 580
原创 poj3370——Halloween treats
抽屉原理.还不是很理解。详见:http://www.cppblog.com/pcfeng502/archive/2009/10/18/98902.aspx#include#include#includeusing namespace std;#define maxn 100005int num[maxn],vis[maxn],sum[maxn];int main(){ int n,c,i; while(cin>>c>>n&&n&&c) { int mod=0,k
2011-03-27 16:11:00 704
原创 poj1379——Run Away
模拟退火算法。其中 delta 取 (max(矩行边长))/sqrt(m).算法的正确性与L N的取值有关系。来源于《浅谈随机化思想在几何问题中的应用》 By顾研参考:http://boatswain.info/lovers/wordpress/?p=117#include#include#include#includeusing namespace std;#define N 30#define L 30#define esp 1e-2//即1/100 与所求精度有关
2011-03-26 15:57:00 514
原创 poj3233——Matrix Power Series
<br />矩阵乘法。<br />S = A + A2 + A3 + … + Ak,把问题转化以加速,令<br />B = A I<br /> 0 I<br />则B^(k + 1) = A^(k + 1) I + A + A2 + A3 + … + Ak<br /> 0 I<br />用二分法求B^(k + 1)<br />来源:http://archive.
2011-03-26 11:12:00 432
原创 hdu1753----大明A+B
<br />java应用!大数处理.<br />import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;public class Main{ /** * @param args */ public static void main(String[] args) { Scanner cin=new Scanner(System.in ); Strin
2011-03-25 12:04:00 651
原创 poj3253——Fence Repair
<br />哈夫曼树应用。<br />思路:优先队列模拟。注意数据范围!<br />#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;int main(){ priority_queue<long long ,vector<long long >,greater<long long > >tree; int n; long long a,b,sumab
2011-03-24 21:04:00 397
原创 poj1017——Packets
<br />装包问题。<br />题意:某公司生产的产品有6种,而只有6*6的箱子可以装。求使用最少的箱子,将产品包装。<br />思路:按大到小的顺序装,尽量使每个箱子装满!<br />#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[8];int main(){ int all,i,time,square; while(1) { all=0; for(i
2011-03-24 18:17:00 362
原创 poj2479——Maxnum sum
<br />做两次dp.<br />对于数组dp[i],表示下标从1到i的最大连续和。<br />#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define maxn 50005#define maxcost 9999999int dp[maxn],num[maxn];int main(){ int t,i,n,max,sum; cin>>t; while(t--)
2011-03-24 08:22:00 363
原创 poj3071——Football
概率+dp.每轮比赛都与上一轮的比赛有关系,所以考虑用dp[i][j]记录编号为j到达i论的概率。这道题真无语,调试时候 ,发现数据会突变,到现在还是不解为何这样!#include#include#includeusing namespace std;double date[130][130];int n;bool vis[130];int main(){ int i,j,k,m; while(cin>>n) { if(n==-1) break; m=
2011-03-23 08:40:00 698
原创 poj3255——Roadblocks
<br />求次短路,直接套的模板。<br />#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define maxcost 99999999int n,r;class node{public: int v,len,next;};node g[110006*2];int head[5005];int cnt;void add(int a,int b,int
2011-03-22 15:41:00 774
原创 poj1014——Dividing
<br />多重背包问题。 <br />转化为01背包问题。不过 需优化,否则会TLE。<br />优化部分程序中标出。<br />#include<iostream>#include<cstdio>#include<cstring>using namespace std;int f[60005];int a[7];int cnt;int b[60005],c[60005];int main(){ int i,sum,ca=0;
2011-03-20 12:00:00 451
原创 hdu1175——连连看
<br />纠结于dfs没过,经剪枝了下,过了。<br />不过 时间达到了令人恐怖的9625ms。<br />#include<iostream>#include<cstring>#include<cstdio>using namespace std;int dir[][2]={{0,-1},{-1,0},{0,1},{1,0}};int map[1001][1001];bool vis[1001][1001],reach;int n,m;void dfs(int x1,i
2011-03-19 21:44:00 463
原创 hdu1175——连连看
<br />bfs思路。<br />加一个mark数组,用来判断是否入队。其初始化为3。<br />注意一点:如果想用取余来判断转向的话,很容易错,会把反方向当做不变。<br />#include<iostream>#include<cstring>#include<cstdio>using namespace std;int g[1005][1005];int dir[][2]={{0,-1},{-1,0},{0,1},{1,0}};int n,m;class node{
2011-03-19 21:23:00 430
原创 poj3273——Monthly Expense
<br />二分搜索。-----------实验室的师兄给力啊!<br />题意:给N个数,划分为M堆(连续的)。求M堆中最大值的最小值。<br />事实说明要真正写好一个二分不是那么容易的!<br />#include<iostream>#include<cstring>#include<cstdio>using namespace std;int n,m;int date[100005];void solve(int left,int right,int n){ in
2011-03-19 14:05:00 826 1
原创 poj1013——Counterfeit Dollar
<br />思路:逐一判断每个金币是否为真。<br />1,当天平为oven 时,里面的金币都为真;<br />2,天平不是oven时,假的金币在天平了,不在里面的都为真(没想到这点~~看报告所得!),同时将天平里的金币标记。分为轻和重。<br />3,当一个金币既是轻,又是重时,是真的。<br />输出为假的金币。<br />#include<iostream>#include<cstdio>#include<cstring>using namespace std;bool vis[14]
2011-03-19 12:33:00 424
原创 poj1012——Joseph
<br />约瑟夫环问题。<br />其中的注释部分为暴力方法,这明显会tle。<br />so 参考:http://hi.baidu.com/autogerk/blog/item/3ec31065699e6df9f636546e.html<br />这篇也很有意思:http://www.9php.com/FAQ/cxsjl/c/2007/03/403506277877.html<br />#include<cstring>#include<cstdio>#include<iostream>us
2011-03-18 20:16:00 389
原创 poj1006——生理周期
<br />中国同余定理的应用。<br />看一个例子 你就明白:<br />例1:一个数被3除余1,被4除余2,被5除余4,这个数最小是几?<br />题中3、4、5三个数两两互质。<br />则〔4,5〕=20;〔3,5〕=15;〔3,4〕=12;〔3,4,5〕=60。<br />为了使20被3除余1,用20×2=40;<br />使15被4除余1,用15×3=45;<br />使12被5除余1,用12×3=36。<br />然后,40×1+45×2+36×4=274,<br />因为,274>60,
2011-03-18 16:55:00 1211
原创 poj1463——Strategic game
<br />注意一点:用链表存储树。<br />差点就悲剧了 限时2000ms 我的程序跑了1700+ 险!<br />#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define maxn 1505 bool vis[maxn],son[maxn];int min(int a,int b){return a<b?a:b;}int n;int dproot[maxn],all[ma
2011-03-16 23:01:00 475
原创 poj3342——Party at Hali-Bula
树状dp。必要条件:子树之间不可以相互干扰。思路来源于ppt.#include#include#includeusing namespace std;int head[210];char name1[110],name2[110];char name[210][110];int cnt,len;class node {public: int v,yes,no; bool yessole,nosole; bool tt; bool vis; int
2011-03-16 09:21:00 482
原创 poj1442——Black Box
<br />题目很难理解:向一个容器中不断的添加n个数,然后有一系列查询,每次查询第i小的数并进行输出.<br />刚开始就一个最小堆,果断超时了。<br />后来,搜了报告,原来,是用最大与最小堆之间动态维护。保证前i小个数一定留在max堆里。<br />话说,stl是好东西,代码简洁。但比手动的慢。优缺点同样明显。<br />http://archive.cnblogs.com/a/1900652/-------->手动维护堆!<br />#include<iostream>#include<cst
2011-03-14 09:26:00 444
原创 priority_queue的用法!
#include#includeusing namespace std;/*/////////////////////////////////////////////////////////////less 这是按值大的优先 greater这是按值小的优先int main(){ priority_queuett;//默认情况下,较大值有较高的优先权 for(int i=0;i tt.push (rand()%10); while(
2011-03-13 20:56:00 347
原创 poj1579——Function Run Fun
记忆化搜索!#include#include#includeusing namespace std;int dp[21][21][21];int w(int a,int b,int c){ if(a
2011-03-10 20:00:00 369
原创 poj2978——Colored stones
<br />dp的解法总是那么给力,而我却仍不给力!!!为什么?<br />......<br />不多说,继续dp!<br />#include<iostream>#include<cstdio>using namespace std;const int pow[6]={1,2,4,8,16,32};int m,k,x[105];int dp[105][35][5];int main(){ int s,i,c; while(cin>>m>>k&&m!=0&&k!=0)
2011-03-10 19:23:00 546
原创 poj1887——Testing the CATCHER
跟上面一样!#include#include#define maxn 33000int g[maxn],stack[maxn],ans;int research(int l,int r,int p){ if(l==r )return r; int mid=(l+r)>>1; if(p
2011-03-09 21:26:00 389
原创 poj2533——Longest Ordered Subsequence
<br />和poj1631一样的思路。连代码都99%相似了...<br />#include<iostream>#include<cstdio>using namespace std;#define maxn 1005int stack[maxn],ans;int research(int l,int r,int p){ if(r==l )return r; int mid=(l+r)>>1; if(p<stack[mid]) return research(l,
2011-03-09 20:46:00 391
原创 poj1631——Bridging signals
<br />参考:http://hi.baidu.com/%8E%E1%D0%B3/blog/item/2ddd6eca3357701a7f3e6f9d.html<br />用栈模拟求最长上升子序列!<br />#include<iostream>#include<cstdio>using namespace std;#define maxn 40005int stack[maxn],ans;int research(int l,int r,int p){ if(r==l) re
2011-03-09 20:37:00 394
原创 poj1840——Eqs
<br />#include<stdio.h>#include<string.h>#define max 37500001char g[max];int a[6];void solve(){ int i,j,k,sum; memset(g,0,sizeof(g)); for(i=-50;i<=50;i++) for(j=-50;j<=50;j++) for(k=-50;k<=50;k++) { if(i!=0&&j!=0&&k!=0)
2011-03-09 15:24:00 348
原创 poj3463——Sightseeing
<br />最短路拓展。<br />详见:<br />http://blog.csdn.net/leeeyupeng/archive/2010/08/06/5790928.aspx<br />#include<iostream>#include<cstring>#include<cstring >using namespace std;#define maxcost 100000009int head[1005];int len;int sum,ans;class nod
2011-03-08 17:14:00 644
转载 poj2309——BST
<br />此题,运用树状数组的特性(discuss里谈的)。<br />对此表示不理解。等研究了树状数组再谈!<br />#include <iostream>using namespace std;int main(){ int t; cin >> t; while (t--) { int n; cin >> n; int tmp = n & -n; int ans1 = n-tmp + 1; int ans2 = n+tmp - 1;
2011-03-06 12:52:00 443
转载 qsort应用!
七种qsort排序方法 一、对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num
2011-03-05 20:08:00 425
原创 poj2516——Minimum Cost
最小权值匹配!关键在于建图:将每个店所要求的货物N,拆成N个点,同时supply的地方,所提供的货物n,也拆成n个点。--->套用最小权值匹配。ps:对此题,最小权值匹配ms比最小费用最大流快!#include#include#include#define maxn 55using namespace std;int n,m,k;int order[maxn][maxn],supply[maxn][maxn],cost[maxn][maxn];int lx[maxn*3],l
2011-03-05 17:34:00 350
原创 poj2516——Minimum Cost
<br />最小费用最大流!我想杀了我自己!!!BS!<br />漏了一句话,折磨自己两三个小时!!!<br />#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define maxn 55#define maxcost 9999999int order[maxn][maxn],supply[maxn][maxn];int cost[maxn*2][maxn*2],g[maxn*2][
2011-03-04 22:01:00 404
原创 poj1027——The Same Game
<br />模拟题。<br />#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=20;char g[maxn][maxn];bool vis[maxn][maxn],flag[maxn][maxn];int dir[][4]={{-1,0},{1,0},{0,-1},{0,1}};class ball{public: int max,x,y;
2011-03-02 13:31:00 402
创建学生信息管理系统
2010-12-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人