自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(24)
  • 收藏
  • 关注

原创 HDU 4472 DP

按图示方法,给出N个点,求一共有多少种组成方式DP打表#include "stdio.h"#include "string.h"int mod=1000000007;__int64 dp[1010][1010],sum[1010];int main(){ int i,j,k,Case,n; memset(dp,0,sizeof(dp)); me

2014-10-31 11:01:53 656

原创 HDU 1983 BFS&&DFS

最多只需要封锁4个区域即可,DFS封锁的区域,BFS是否可通过#include "stdio.h"#include "string.h"#include "queue"using namespace std;int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};int s_x,s_y,n,m,t;char str[11][11];struct

2014-10-31 10:07:30 1029

原创 ZOJ 1610 线段树区间染色

给长度8000米的板,对其中区间染色,问最后能看到的颜色,和该颜色一共出现了几段线段覆盖法数据比较水   也可以暴力水过线段树:#include "stdio.h"#include "string.h"struct node{ int l,r,c;}data[40010];int color[8011];void build(int l,int r,i

2014-10-30 19:45:45 835

原创 HDU 1199 && ZOJ 2301 线段树离散化

一段长度未知的线段,一种操作:a b c ,表示区间[a,b]涂为颜色C,w代表白色,b代表黑色,问最终的最长连续白色段,输出起始位置和终止位置离散化处理,和平常的离散化不同,需要把点化成线段,左闭右开,即对于一段区间[a,b],转化成区间[a,b+1)#include "stdio.h"#include "string.h"#include "algorithm"using n

2014-10-30 15:56:35 1058

原创 HDU 4474&&POJ 1465 BFS&&余数判重

两道题只是输入输出格式略有不同给出n,m,m个数要求生成一个数x,是n的倍数,并且只由这M个数构成(或不能含有这M个数中的任意一个),求最小的x,没有则输出-1(0);BFS找每一个满足n的倍数的数,用余数判重优化对于给定两个数A,B,如果A和B模N都相同,设为C,即:A=x*N+CB=y*N+C那么如果在A后面加上一个数字能够被N整除,则在B后面加上这个数

2014-10-29 18:50:41 725

原创 HDU 5071 模拟

考察英语的题 - -#按条件模拟,一遍就行了,每个聊天对象有其价值U,数组模拟队列过程即可,若存在Top标记,则和Top标记的人聊天,否则和队列的第一个人聊天mark记录队尾,top记录Top操作,data[i].p记录U,data[i].x记录chat数,data[i].y记录该人是否被删除Add U:在 队尾插入价值为U的人,需要特判U人已经存在Close U::在整个队列中查

2014-10-22 18:18:53 831

原创 BZOJ 1012 线段树||单调队列

很裸的线段树  ||单调队列:如果一个节点在队列中既没有时间优势(早点入队)也没有值优势(值更大),那么显然无论在怎样的情况下都不会被选为最大值。   既然它只在末尾选,那么自然可以满足以上的条件。线段树#include "stdio.h"#include "string.h" struct node{ int l,r,Max;}d

2014-10-22 10:32:24 756

原创 BZOJ 1207 DP

打一次鼹鼠必定是从以前的某一次打鼹鼠转移过来的 以打每个鼹鼠时的最优解为DP方程#include#include#include#define N 10005using namespace std;int n,m,ans;int f[N],t[N],x[N],y[N],mx[N];int main(){ scanf("%d%d",&n,&m); fo

2014-10-22 09:29:07 831

原创 BZOJ 1218 枚举水

a[i][j]记录以i,j为右下角的矩形内所有价值和,然后枚举每一个点位置的正方形所能取得的价值#include "stdio.h"#include "string.h"int a[5110][5110];int Max(int a,int b){ if (a<b) return b;else return a;}int main(){ int n,r

2014-10-21 20:35:33 925

原创 HDU 4451 水

题目给出 上衣,裤子,鞋子的各种类数,然后给出了不能匹配的关系,求解能匹配的种数。因为只给出cp组合和ps组合,所有对于每个p,开两个数组标记不能与之匹配的c和s#include "stdio.h"#include "string.h"int main(){ __int64 ans,x,y,n,m,k; int p,i,p1[1010],p2[1010];

2014-10-20 17:08:41 699

原创 HDU 4442 贪心

给出N个数,和每个数的a,b值贪心思想,按a/b排序放置即可;#include "stdio.h"#include "string.h"#include "algorithm"using namespace std;struct node{ int a,b; double c;}data[100010];__int64 inf=999999999

2014-10-20 16:35:59 679

原创 HDU 4445 几何枚举

给出两个坦克位置,N个炮弹,从(0,h)点以一定角度射出,问在某一角度下能够打到第一个坦克的炮弹最多个数,要求在该角度下所有炮弹都不会打到第二个坦克。可以暴力水过,枚举角度判断即可需要几个几何公式化简:x=v*sinθ*tv*cosθ*t+g*t*t/2=h  注意sin 和 cos 函数用多会超时#include "stdio.h"#includ

2014-10-20 16:10:34 962

原创 BZOJ 1087 状压DP

先预处理出每一行的可行状压值存入mark,并记录该值所含点数sum处理每相邻两行的状压值是否可行存入 disDP方程:dp[i][l][k+sum[l]]+=dp[i-1][j][k];  第i行l状态一共放了k+sum[l]+=上一行j状态放k个的方案数#include "stdio.h"#include "string.h"int b[21];int n,m

2014-10-17 11:12:45 735

原创 HDU 4462 DFS

2012 Asia Hangzhou Regional Contest给出N*N的矩阵,全部标记为0,其中有K个点标记为1,并且可以在该位置放置一个可以覆盖曼哈顿距离为r的草人,问最少放置几个草人,可以覆盖所有标记为0的点DFS即可,注意只需要覆盖标记为0的点#include "stdio.h"#include "string.h"int inf=0x3f3f3

2014-10-17 09:51:54 800

原创 HDU 4455 DP

2012 Asia Hangzhou Regional Contest给定一个整数串,有Q组询问,问这个串中长度为W的子串中不同的数字之和为多少。DP思路预处理出来所有长度的答案dp[i]=dp[i-1]-sum[n-i+2]+cnt;   长度为i的答案=长度为i-1的答案-末尾为最后一位的长度为i-1的子串的不同数字数+cnt为任意元素与上一个出现的位置

2014-10-17 09:33:08 2706

原创 BZOJ 1088 水模拟

BZOJ水一道~枚举前两个位置是否放雷,模拟向下推,可以则ans++#include "stdio.h"#include "string.h"int a[10010],b[10010],n;int judge(){ int i; for (i=3;i<=n;i++) { b[i]=a[i-1]-b[i-1]-b[i-2];

2014-10-14 15:43:21 843

原创 ZOJ 3829 模拟贪心

2014牡丹江现场赛水题给出波兰式,判断其是否合法,如果不合法有两种操作:1:任意位置加一个数字或者操作符2:任意两个位置的元素对调贪心模拟即可先判断数字数是否大于操作符数,若不大于 ans+=sum2-sum1+1;新加入的数字全部放到左端。然后从左到右遍历一遍,存储到当前位置为止,数字数和sum1,和操作数和sum2若sum2>=1sum1,优先与队

2014-10-14 14:46:37 1051

原创 HDU 3698 DP+线段树

给出N*M矩阵,每个点建立灯塔有花费,每个点的灯塔有连接范围,求每一行都建立一个灯塔的最小花费,要求每相邻两行的灯塔可以互相连接,满足 |j-k|≤f(i,j)+f(i+1,k)DP思路,dp[i][j]=在第i行的j位置放置灯塔的最小花费,dp[i][j]=Min(dp[i-1][k]+a[i][j]),同时更新当前点可以覆盖该行的所有位置的最小值要求上个区间的最小值,用线段树优化,否则

2014-10-14 14:01:10 1258

原创 HDU 3681 BFS&状压DP&二分

N*M矩阵,从F点出发,走完所有的Y点,每走一格花费1点电量,走到G点时,电量充满,D不可到达,问起始时的最小满电量可以走完所有Y,Y和G一共最多15个先BFS出所有的F,Y,G之间的最短距离。然后二分起始电量,对每个电量,做状压DP判断是否可行#include "stdio.h"#include "string.h"#include "queue"using names

2014-10-11 12:01:38 724

原创 HDU 3682 水模拟

n*n*n的图形,m条线,每条线上的方格被删除,问一共删除了多少个方格ans=m*n ,然后判断一下直线相交的交点,去重即可#include "stdio.h"#include "string.h"int xy[1010][1010],xz[1010][1010],yz[1010][1010],hash[1010];struct node{ int x,y,z;} ma

2014-10-11 10:52:28 1112

原创 HDU 3683 模拟&搜索

给出五子棋残局,判断三步内是否能分出胜负,玩家为当前该走旗子的颜色,下一步为白棋或黑棋不定。按照顺序判断即可:1:判断棋盘是否合法,并确定玩家颜色2:判断当前玩家颜色是否有一个必胜点,有玩家则在第一步胜3:判断另一方在当前是否有两个必胜点,若有,则玩家在第二步失败4:BFS出玩家是否存在此方案:任意放置一个位置的前提下,另一方没有必胜点,且玩家有两个必胜点,则玩家在第三步胜

2014-10-10 16:17:03 793

原创 HDU 3687 暴力

在N*M的矩阵里,分布了,N*N个人,每行N个,且只能左右移动,求把所有人合并成N*N正方形所需的最小代价。因为每个人只能在本行移动,所以预处理出来每行的每种合并方式,再判断列的#include "stdio.h"#include "string.h"#include "iostream"#include "algorithm"using namespace std;

2014-10-10 14:01:49 882

原创 HDU 3008 DP

基础DP题打BOSS  BOSS和自己都有100点血,玩家先手每回合可以选择施放技能攻击(耗蓝,共n种)或者普通攻击(不耗蓝,伤害为1),BOSS每回合会攻击自己q点血,每回合自己会恢复t点法力方程:  dp[i][j-a[k]+t]=Max(dp[i][j-a[k]+t],dp[i-1][j]+b[k]);  #include "stdio.h"#include "st

2014-10-09 12:16:00 851

原创 HDU 3001 三进制状压DP

N个城市,M条道路,每条道路有其经过的代价,每个城市最多可以到达两次,求走完所有城市最小代价,起点任意。三进制状压,存储每个状态下每个城市经过的次数。转移方程: dp[i+b[k]][k]=Min(dp[i+b[k]][k],dp[i][j]+dis[j][k]);#include "stdio.h"#include "string.h"const int i

2014-10-02 20:38:42 782

空空如也

空空如也

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

TA关注的人

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