自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 516

原创 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 425

原创 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 415

原创 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 531

原创 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 392

原创 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 463

原创 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 636

原创 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 573

原创 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 683

原创 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 501

原创 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 425

原创 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 642

原创 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 386

原创 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 352

原创 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 359

原创 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 694

原创 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 770

原创 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 436

原创 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 457

原创 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 425

原创 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 819 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 414

原创 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 381

原创 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 1201

原创 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 462

原创 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 469

原创 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 434

原创 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 340

原创 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 361

原创 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 531

原创 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 375

原创 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 377

原创 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 386

原创 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 344

原创 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 630

转载 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 432

转载 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 415

原创 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 337

原创 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 398

原创 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 394

创建学生信息管理系统

创建一个存储和显示学生信息的单文档应用程序。 功能如下:在编辑框中输入学生信息,单击“输入”按钮时,程序检测编号与以后学生信息是否重复,如果重复则跳出消息框提示“学号重复,请修改学生学号”,如果编号和姓名栏中是空的,系统提示“学生信息不全,请补全信息”,如果无上述情况,系统自动把输入内容存储到文档类中的一个学生信息类对象的数组中; 主菜单“编辑”中包含了“清空”子菜单,单击该子菜单或者点击工具栏上的红色“C”按钮时,删除所有学生的信息,并且清空界面上的“编号”和“姓名”编辑栏。

2010-12-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除