自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 POJ位操作联系

从这个题发现,在我的计算机上,unsigned short也是占4个字节的,所以左移时要取模。#include<bits/stdc++.h>using namespace std;int n;int a,b;int main(){ scanf("%d",&n); while(n--){ scanf("%d%d",&a,&b); bool...

2020-04-22 11:16:52 80

原创 POJ大盗阿福

#include<bits/stdc++.h>using namespace std;int dp[100001];//dp[i]表示在前i家店中,能获得的最大值//在每家店都有两种选择,如果不偷这家店,则所能获得的最大值显然和前i-1家一样。 //如果偷这家店,则第i-1家一定不能偷,因此所能获得的最大值是前i-2家店的最大值//加上这家店可以偷的。 int N,K,n...

2020-04-22 09:34:46 135

原创 POJ登山

求以A[i]为结尾的最长上升子序列和以A[i]为开头的最长下降子序列即可。#include<bits/stdc++.h>using namespace std;int N,num[1001],dp1[1001],dp2[1001],ans;int main(){ cin>>N; for(int i=1;i<=N;i++) cin>>num[...

2020-04-20 21:59:51 183

原创 POJ最低通行费

一开始只看到了可以朝上下左右四个方向走,以为不能用递推了,其实加上时间限制之后就相当于只能朝右和下走了。懒得改,就索性递归了。#include<bits/stdc++.h>using namespace std;int dp[100][100];int x[2][2]= {{-1,0},{0,-1}};int N,m[100][100],v[100][100];int...

2020-04-20 21:30:38 153

原创 POJ装箱问题

把dp的维数写反了,看了半天我吐了。#include<bits/stdc++.h>using namespace std;int dp[31][20001],num[31];//dp[i][j]=1表示前i个物品放入可以产生剩余空间jint v,n,ans;int main() { cin>>v>>n; for(int i=1; i<=n...

2020-04-20 18:16:01 110

原创 POJ奶牛散步

本来我们是想求走N步有多少条路径,我们可以把所有路径归类为3种,第i步向上走,向左走,向右走。也就是dp[i]=l[i]+r[i]+u[i]。而所有第i步向上走的路径,又可以由第i-1步向左,右,上的路径得到。第i步向左走向右走的路径同理。于是我们就得到了递推公式。本来是应该用dp[1001][3]来递推的,但经过数学运算发现可以优化。类似之前的可除性之类的问题,把子问题的结果分类来存储。#i...

2020-04-20 17:05:44 412

原创 POJ滑雪

记忆化搜索的题目,没法用递推。#include<bits/stdc++.h>using namespace std;//dp[i][j]表示以(i,j)为终点的最长上升子序列的长度 int H,L,ans,dp[110][110],m[110][110];int x[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int f(int h,int l)...

2020-04-19 12:50:43 122

原创 POJ糖果

#include<bits/stdc++.h>using namespace std;int dp[110][110];//dp[i][j]是(前i个数的某种和)modk=j的最大值int N,K,num[110];int f(int w,int k,int j){ for(int i=0;i<k;i++) if((i+w)%k==j) return i;} ...

2020-04-18 16:50:32 156

原创 POJ计算字符串距离

类似求最长公共子序列。#include<bits/stdc++.h>using namespace std;int dp[1010][1010];//dp[i][j]表示A[i]和B[j]的最小编辑距离 int n;char s1[1010],s2[1010];int main(){ scanf("%d",&n); while(n--){ memset(d...

2020-04-18 12:17:11 126

原创 POJ数字组合

类似背包问题,注意这个题在题干中没有说清,比如 N=3,T=42 2 2 时,答案为三种。#include<bits/stdc++.h>using namespace std;//题意为n个数可以组合出多少个Tint dp[30][1010];//dp[i][j]表示前i个数最多可以组合出多少个j int n,t,num[30],ans;int main() { ci...

2020-04-17 15:57:32 236

原创 POJ采药

背包问题。下面来总结一下几种写法。#include<bits/stdc++.h>using namespace std;int dp[110][1010],dp1[1010];//dp[i][j]表示前i件物品装入容量为j的背包,所获得的总价值最大是多少 int w[110],v[110]; int T,M;//index是当前待选择的物品的索引,capacity是选择...

2020-04-16 21:49:11 130

原创 POJ最大子矩阵

#include<bits/stdc++.h>using namespace std;//按列压缩成一位数组,枚举所有的情况((N*(N+1)/2种),然后当成最大连续子序列来求int sum[110][110],dp[110];//sum[i]是前i行被压缩成的数组,节省计算时间//(类似要求A[i]到A[j]的和,用S[i]表示A[0]到A[i]的和,这样A[i]到A[...

2020-04-16 17:14:54 129

原创 POJ特殊密码锁

每个按钮只有两种状态,凹或者凸,一旦第一个按钮的状态确定,后面的按钮状态也随之确定,就类似于蝴蝶效应,所以一共只有两种情况,只需判别这两种情况是否成立,然后取其最小的次数。如果从第三位,第四位等等开始看也一样。每一个按钮都是靠后一个按钮来确定状态的,如果符合密码,则后一个按钮不动,若不符合,则后一个按钮翻转。我们所需做的就是让当前按钮之前的按钮都符合目的密码,当运行到最后一个按钮时,如果最后一...

2020-04-16 15:42:51 236

原创 POJ Divisibility

#include<bits/stdc++.h>using namespace std;//所有的可能为2^(n-1),但实际上,前i个数能否整除k,只和前i-1个数整除k//的余数有关。也就是说,不需要计算前i-1个数有多少种和,只需要判断能//产生多少种余数即可。并在此基础上,计算前n个数可以产生多少种余数,//于是时间复杂度为 O(nk)//子问题可以产生多个结果,...

2020-04-16 11:44:53 134

原创 POJ二维数组回型遍历

#include<bits/stdc++.h>using namespace std;int m[100][100];int H,L;//转一圈为一个周期,每个周期共四步,每步走完都判断是否到达终点 int main() { cin>>H>>L; for(int i=0; i<H; i++) { for(int j=0; j<L...

2020-04-16 10:18:12 153

原创 POJ PKU2506Tiling

注意n=0算1种,一直按0算的,我吐了。#include<bits/stdc++.h>using namespace std;int dp[300][1000],n;void sum(int *a,int *b,int *c) { //a+2*b放到c中 for(int i=0; i<990; i++) { c[i]+=a[i]+2*b[i]; if(c[i...

2020-04-15 23:51:59 174

原创 POJ Yogurt factory

模拟题。#include<bits/stdc++.h>using namespace std;typedef long long ll;int N,S;int cost[10001],demand[10001],produce[10001];long long ans;int main(){ cin>>N>>S; for(int i=0;i...

2020-04-15 11:11:11 85

原创 POJ公共子序列

#include<bits/stdc++.h>using namespace std;#define maxn 200/*dp[i][j]表示字符串A的i号位和字符串B的j号位之前的LCS的长度(i,j从1开始) 如果A[i]=B[j],那么显然dp[i][j]=dp[i-1][j-1]+1。如果不等,dp[i][j]=max(dp[i-1][j],dp[i][j-1])边...

2020-04-14 23:15:25 90

原创 POJ最长上升子序列

#include<bits/stdc++.h>using namespace std;int N,seq[1010],ans;int dp[1010];//dp[i]表示以seq[i]为结尾的最长上升子序列的长度 //dp[i]等于dp[k](k=1~i-1)中,满足seq[k]<seq[i]的里面,最大的再加1 int main(){ scanf("%d",&a...

2020-04-14 22:27:42 124

原创 POJ数字三角形

#include<bits/stdc++.h>using namespace std;#define maxn 100int n;int dp[maxn][maxn],f[maxn][maxn];int main(){ cin>>n; for(int i=0;i<n;i++){ for(int j=0;j<=i;j++){ cin&gt...

2020-04-14 21:13:47 162

原创 POJ错误检测

#include<bits/stdc++.h>using namespace std;int n,jh,jl;int m[100][100];int h[100],l[100];pair<int,int> res;//记录有多少个奇数行,奇数列。如果均为0,则OK;如果均为1,则可以改变;//如果至少有一个大于1,则没办法。int main() { sc...

2020-04-14 18:32:04 189

原创 POJ Aggressive cows

这个题在确定距离求可以放多少头牛时,我假设了第一个摊位必放牛。感觉许多二分的题都可以类似这道题,做出一些“贪心”的假设。#include<bits/stdc++.h>using namespace std;int N,C;int stall[100001];int f(int d){ int now=0,next=1,ans=1; while(next<N){...

2020-04-14 15:56:04 94

原创 素因子分解

#include<bits/stdc++.h>using namespace std;int prime[100],pNum=0,res[100],k=0;bool num[100];void find_prime() { for(int i=2; i<100; i++) { if(num[i]==false) prime[pNum++]=i; for(in...

2020-04-14 10:44:16 368

原创 POJ Rails

判断出栈顺序是否合法的题。#include<bits/stdc++.h>using namespace std;int n,ru[1001],chu[1001];int main(){ while(scanf("%d",&n),n){ for(int i=1;i<=n;i++) ru[i]=i; while(scanf("%d",&chu[1...

2020-04-14 10:02:03 108

原创 POJ潜伏者

#include<bits/stdc++.h>using namespace std;char jm[110],yuan[110],yi[110],ch[26]={0},chuse[26];//对的情况很简单,关键就是什么时候failed//由于最后的目的是翻译加密字符,所以我们不妨找加密字符和原字符的对应//会出现两种错误:1.原信息中的多个字符对应了加密信息中的一个字符...

2020-04-13 23:41:03 98

原创 POJ蜜蜂

#include<bits/stdc++.h>using namespace std;long long dp[100];int main(){ int n,a,b; cin>>n; while(n--){ memset(dp,0,sizeof(dp)); cin>>a>>b; dp[a+1]=1; dp[a+2]=2...

2020-04-13 22:26:11 117

原创 POJ The Die Is Cast

#include<bits/stdc++.h>using namespace std;int H,L,ans;char m[60][60];int x[4][2]= {{0,1},{0,-1},{1,0},{-1,0}};void dfsx(int h,int l) { for(int i=0; i<4; i++) { int hh=h+x[i][0],ll=...

2020-04-13 21:54:13 146

原创 POJ safecracker

题意是说有一种密码规则,将用五个字母表示一个数字,一个字符串VWXYZ,表示字母targetv - w2 + x3 - y4 + z5 = targetV、W、X、Y、Z分别表是五个字符,则字符的值为其在字母表中的编号(A=1,B=2,C=3…)。现在将给你一个目标数字,以及一个5到12位的字符串,用这5到12个字符中的其中5个字符组成字符串VWXYZ,表示出这个数字,求其字符顺序最大的结果...

2020-04-13 20:39:18 148

原创 POJ回文素数

这里由于多次判断一个大整数是否是素数,先打表会快很多。#include<bits/stdc++.h>using namespace std;int n,ans=0,pp[10000000],prime[100000],pNum;bool num[100000];void find_prime(int x){ for(int i=2;i<x;i++){ if(nu...

2020-04-13 19:10:48 127

原创 POJ河中跳房子

#include<bits/stdc++.h>using namespace std;int L,N,M;//总长为L,N个石头,移走M块int rock[50010];//证明一下为什么求的是上界:比如当最短距离是4时,需要移走2块,//当最短距离是5时,需要移走3块,但此时实际上的最短距离已经是6了//也就是移走3块时真正的最短距离。如果再增加到7,就需要移走4块了。...

2020-04-13 10:08:36 463 1

原创 POJ月度开销

#include<bits/stdc++.h>using namespace std;//N个数,分成M组(只能将相邻的数分成一组),使和最大的那个组,和尽可能的小 //把月数视为月度开销的函数 int N,M,spend[100100];int f(int cost){ int sum=0,fajo=1;//因为每次要等一个月不够放了,才算作一个月,所以最后一个...

2020-04-12 21:51:23 265

原创 POJ派

这题我吐了,思路和网线主管完全一样,调精度调了一年。#include<bits/stdc++.h>using namespace std;#define pi 3.141592653589793238462643383279502884197169399375typedef long long ll;int N,F,R;//N个派,F个朋友 double pai[1001...

2020-04-12 16:44:07 237

原创 POJ网线主管

一般的二分查找是在一个排好序的数组中,确定一个比较规则来查找。而这个题如果要把数组求出来显然会超时(10^12),我觉得这个题可以理解为“函数二分查找”,就是只给一个单调的函数f,在其中找y=f(x)对应的x。在这个题中,x就是要求的网线长度,最小是1,最大是最长的那根网线的长度,也就是我们在这个范围内查找。f(x)就是可以切成的网线段数。显然函数是单调递减的,我们要求的是f(x)=k的元素中...

2020-04-12 15:00:32 378

原创 POJ矩阵分割

#include<bits/stdc++.h>using namespace std;//先lower_bound,再上溯int L,T,W,H,R,N;int a[1000010];//a[i]表示i到i-1之间的矩形面积 long long size[1000010],sum,half;//size[k]表示k之前的矩形面积 int lower(long long*...

2020-04-12 10:46:40 183

原创 二分查找

int lower_bound(int *array,int first,int last,int value){ while(first<last){ int mid=first+(last-first)/2; if(array[mid]<value) first=mid+1; else last=mid; } return first;}

2020-04-11 10:45:35 109

原创 POJ二分法求函数的零点

#include<bits/stdc++.h>using namespace std;//f(x) = x5 - 15 * x4+ 85 * x3- 225 * x2+ 274 * x - 121double f(double x){ return pow(x,5)-15*pow(x,4)+85*pow(x,3)-225*pow(x,2)+274*x-121;} //二分...

2020-04-09 20:34:30 212

原创 POJ查找最接近的元素

#include<bits/stdc++.h>using namespace std;int n,m;int num[100100];int main() { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&num[i]); scanf("%d",&m); while(m--){ ...

2020-04-09 20:18:02 197

原创 POJ Falling Leaves

#include<bits/stdc++.h>using namespace std;int n;char d[1000],temp;struct node{ int lson,rson; char data;}tree[1000];void build(int i,char ch){//i是应该插入的位置 if(tree[i].data==0){ tre...

2020-04-08 23:09:43 115

原创 POJ上楼梯

每次能跳k级,则第n级楼梯只能从第n-1到第n-k级楼梯跳上来。dp[n]=dp[n-1]到dp[n-k]的和。如果n<k,则可以从第0级到第n-1级中任意一级跳上来。dp[n]=dp[n-1]到dp[0]的和。其中,dp[0]=1,dp[1]=1。#include<bits/stdc++.h>using namespace std;const int maxn = 6...

2020-04-08 20:48:02 189

原创 POJ打印月历

#include<bits/stdc++.h>using namespace std;bool run(int y) { if(y%4!=0) return false; else if(y%100==0&&y%400!=0) return false; else return true;}int m1[12]= {31,28,31,30,31,30,3...

2020-04-08 18:43:56 174

空空如也

空空如也

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

TA关注的人

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