自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 poj2362——Square

<br />题意:给出N个数据,求是否能组成正方形。<br />思路:dfs+剪枝。<br />剪枝思路:<br />      1,数的总和能否被4整除;<br />      2,最大边是否超过平均数;<br />      3,如果某个数作为边的第一个数(在数已经降序排列的情况下),不能满足,则返回上一层。因为它做为第一个数走不下去,那么在后面的其他边也会有同样的情况(即又会出现在第一数的位置),因为每次循环要么从0开始,要么从star开始。在略过这根之后,想要完整拼完这个正方形,意味着要从0开始,这

2010-12-31 16:52:00 522

原创 poj2352——Stars

题意:给你一些按y轴优先排列的坐标点,求这个点的左下方的数有多少个。输出的时候,再转换下即可。思路:因为的按y轴优先排序的,所以用线段树解决,每次查询(0,x)之间的数,即为这个坐标的左下方的数。并将(x,y)插入线段树。#include#include#includeusing namespace std;struct node{ int left,right,step;}tree[97000];int level[15008];int n;int find(int

2010-12-29 13:35:00 404

原创 poj2386——Lake Counting

题意:求给定的图中有几堆的"W"。思路:深搜或广搜,随君便。#include#include#includeusing namespace std;char map[105][105];int dir[][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};bool vis[105][105];int n,m;void dfs(int x,int y){ vis[x][y]=false; for(i

2010-12-27 17:42:00 436

原创 poj1657——Distance on Chessboard

没多想,直接敲的BFS,看了discuss,表示很惭愧,居然没动脑,敲了NC的BFS,这得多敲多少代码呀...#include#include#includeusing namespace std;bool vis[10][10];char star[3],end[3];struct go_to{ int x,y,step;}tt[3],queue[1000];int dir[][2]={{0,-1},{0,1},{-1,0},{1,0},{-1,-1},{-1,1}

2010-12-25 10:52:00 385

原创 复习笔记

考完了c++,上传一点笔记,以便寒假的时候,继续复习!1.#includeusing namespace std; //静态成员的初始化,虽然有可能成为全局变量,但因为是static,所以仍是安全的//int x=100;//class Ws//{// static int x;// static int y;//public :// void print () const // {// cout class Array{ en

2010-12-23 17:22:00 401

原创 poj1218——THE DRUNK JAILER

<br />题意:一共n个监狱,监护员喝n次酒,开始时全部是关闭的,每一次喝酒后都绕一圈,每一次,如果那个监狱房是关着的则将其打开,如果是开着的,他就关上,求最后开着的监狱房的个数。<br />如果想用数学方法的,看:http://hi.baidu.com/lewutian/blog/item/a47b28382720f9c9d56225b6.html<br />#include<cstdio>#include<iostream>using namespace std;bool g[105];

2010-12-14 21:49:00 589

原创 poj1258——Agri-Net

<br />题意:给定一个N及N*N的矩阵,求最小生成树。<br />#include<cstdio>#include<iostream>using namespace std;#define maxcost 10000000int g[105][105];int n;int vis[105],dist[105];void prim(int v){ int i,j,min,dis,ans=0; memset(vis,true,sizeof(vis)); for(i

2010-12-14 15:46:00 360

原创 poj1207——The 3n + 1 problem

<br />水,还能说什么呢?<br />#include<cstdio>#include<iostream>using namespace std;int n,m;int f(int t){ int k=1; while(t!=1) { k++; if(t%2!=0) t=t*3+1; else t=t/2; } return k;}void solve(int m,int n){ int tempx,tempy,i,ma

2010-12-14 15:30:00 351

原创 poj1753——Flip Game

题意:给你一张有黑白棋子的图,要求通过最少的步骤将棋盘上的棋子翻成同一颜色。思路:用二进制表示黑白棋子,然后根据sum=g[0][0]*2^0+g[0][1]*2^1+g[0][2]*2^2......+g[3][3]*2^15,如此来记录状态,然后开始广搜工作:每次取出队列里的一个sum,求sum的二进制数,还原成一张图,然后一个个改变状态,看是否满足入队要求!#include#includeusing namespace std;char g[5][5];bool vis[70000];

2010-12-14 14:55:00 393

原创 hdu2602——Bone Collector

1.现在的f[v-c[i]]就相当于原来的f[i-1][v-c[i]];2.f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值.#include#includeint a[1005],b[1005];int f[1005];int main(){ int t,i,j,n,v; scanf("%d",&t); while(t--) { memset(f,0,sizeof(f)); scanf("

2010-12-08 18:24:00 648

原创 poj3414——Pots

绝对的BFS好题!在实验室师兄的启发下,1A!代码有点长...#include#includestruct node{ int u1,u2,step;}tt[10000];bool vis[105][105];int a,b,c,front=0,rear=0;int pre[10000];void pri(int front){ int i,top=1,s,x,y; struct node kk[1000]; kk[top]=tt[front]; s=

2010-12-07 12:20:00 420

原创 poj1702——Eva's Balance

<br />先转三进制,再转对称三进制!http://dictionnaire.sensagent.com/%E4%B8%89%E8%BF%9B%E5%88%B6/zh-zh/<br />转-><br />将n用-1,0,1表示,如20=1*3^3+(-1)*3^2+1*3^1+(-1)*3^0所以20+3^0+3^2=3^1+3^3 即1,9 3,27 平衡三进制具体转化方法先转化为用0,1,2表示的3进制,然后通过“借位”转换若对应的系数为2,则变为-1,下一位+1若对应的系

2010-12-04 14:49:00 664

原创 poj3984——迷宫问题

水!#include#includeint dir[][2]={{-1,0},{1,0},{0,-1},{0,1}};int g[10][10];bool vis[10][10];struct node{ int x,y;}queue[1000];int pre[11][11];void pri(int x,int y){ int i,j,top=0; int tempx,tempy,p=pre[x][y]; tempx=x-dir[p][0];tem

2010-12-04 11:28:00 781

原创 poj1426——Find The Multiple

擦,有点纸老虎的味道!滚动数组实现:#include#include__int64 queue[10000000],n;void solve(){ int i,front=0,rear=0; queue[++rear]=1; __int64 t; while(front!=rear) { front=(front+1)%10000000; t=queue[front]; if(t%n==0) { printf("%I64d/n",t);

2010-12-04 11:27:00 441

原创 hdu1269——迷宫城堡

以前用tarjan算法做过一次,不过,对于新学的Kosaraju算法,又再练一次!杯具又发生,今天第二次数组开小了  真是自己,活该贡献一次re!#include#includeint n,m,k,cnt;struct node{ int v,next;}g1[100005],g2[100005];int head1[10005],head2[10005],index1,index2,f[10005];bool vis[10005];void add(int u,int

2010-12-03 20:42:00 518

原创 nkoj1851——Get Tools from Doraemon's Pocket

<br />拓扑排序+BFS.<br />#include<stdio.h>#include<string.h>int n,m,edge;#define max 10005struct node{ int u,v;}tt[max*100];int marry[max],queue[max],vis[max],v[max],dgree[max];int find(int t){ int i,front=0,rear=0,sum=1; queue[++rear]=

2010-12-03 18:14:00 365

原创 poj1094——Sorting It All Out

<br />拓扑排序!具体方法见:http://www.cnblogs.com/xiaosuo/archive/2010/03/26/1690302.html<br />#include<stdio.h>#include<string.h>struct node{ int u,v;}tt[1000];int n,m,k,dgree[27],queue[1000],rear,front;bool flag,flag1,edge[27][27],vis[27];void NP

2010-12-02 16:16:00 386

创建学生信息管理系统

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

2010-12-06

空空如也

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

TA关注的人

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