BestCoder Round #47 ($) (hdu 5280 , hdu 5281 , hdu 5282 , hdu 5283)
来源:互联网 发布:足彩虚拟关注软件 编辑:程序博客网 时间:2024/06/01 17:45
1001 Senior’s Array
这题暴力枚举替换哪一个,然后dp就行。。O(n^2)的复杂度
这题一开始看错了,一直用线段树WA了好多发,好伤。
//author: CHC//First Edit Time: 2015-07-11 20:00#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <set>#include <vector>#include <map>#include <queue>#include <set>#include <algorithm>#include <limits>using namespace std;typedef long long LL;const int MAXN=1e+4;const int MAXM=1e+5;const int INF = numeric_limits<int>::max();const LL LL_INF= numeric_limits<LL>::max();LL A[MAXN]; LL B[MAXN]; LL dp[MAXN];int n,p,t;int main(){ scanf("%d",&t); while(t--){ scanf("%d%d",&n,&p); for(int i=1;i<=n;i++){ scanf("%I64d",&A[i]); B[i]=A[i]; } LL ans=p; for(int i=1;i<=n;i++){ B[i]=(LL)p; dp[0]=0; for(int j=1;j<=n;j++){ dp[j]=max(B[j],dp[j-1]+B[j]); ans=max(ans,dp[j]); } B[i]=A[i]; } printf("%I64d\n",ans); } return 0;}
1002 Senior’s Gun
这题排序,然后攻击力最大的打防御力最小的,一个O(n)就可以了。
这题我数组范围开小了导致最后Judge大数据的时候WA了。
//author: CHC//First Edit Time: 2015-07-11 20:17#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <set>#include <vector>#include <map>#include <queue>#include <set>#include <algorithm>#include <limits>using namespace std;typedef long long LL;const int MAXN=100000+10;const int MAXM=1e+5;const int INF = numeric_limits<int>::max();const LL LL_INF= numeric_limits<LL>::max();LL A[MAXN],B[MAXN];int n,m;int main(){ int t; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); for(int i=0;i<n;i++)scanf("%I64d",&A[i]); for(int i=0;i<m;i++)scanf("%I64d",&B[i]); sort(A,A+n); sort(B,B+m); LL sum=0; for(int i=n-1,j=0;i>=0&&j<m;i--,j++){ if(A[i]>=B[j])sum+=A[i]-B[j]; else break; } printf("%I64d\n",sum); } return 0;}
1003 Senior’s String
这题当时我没有做出,其实题解写的很清楚了。
//author: CHC//First Edit Time: 2015-07-14 00:06#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <set>#include <vector>#include <map>#include <queue>#include <set>#include <algorithm>#include <limits>using namespace std;typedef long long LL;const int MAXN=1010;const int INF = numeric_limits<int>::max();const LL LL_INF= numeric_limits<LL>::max();const int mod=1e+9 + 7;char str1[MAXN],str2[MAXN];int dp[MAXN][MAXN],P[MAXN][MAXN],dp2[MAXN][MAXN];int main(){ int t; scanf("%d",&t); while(t--){ scanf(" %s %s",str1+1,str2+1); int lenx=strlen(str1+1); int leny=strlen(str2+1); memset(dp,0,sizeof(dp)); for(int i=1;i<=lenx;i++) for(int j=1;j<=leny;j++){ if(str1[i]==str2[j])dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } memset(P,0,sizeof(P)); for(int i=1;i<=lenx;i++) for(int j=1;j<=leny;j++) if(str1[i]==str2[j])P[i][j]=j; else P[i][j]=P[i][j-1]; memset(dp2,0,sizeof(dp2)); for(int i=1;i<=lenx;i++) for(int j=1;j<=leny;j++){ if(dp[i][j]==0){ dp2[i][j]=1; continue; } if(dp[i][j]==dp[i-1][j])dp2[i][j]+=dp2[i-1][j]; dp2[i][j]%=mod; if(P[i][j]&&dp[i][j]==dp[i-1][P[i][j]-1]+1){ if(dp2[i-1][P[i][j]-1]==0) dp2[i][j]+=dp2[i-1][P[i][j]-1]+1; else dp2[i][j]+=dp2[i-1][P[i][j]-1]; } dp2[i][j]%=mod; //printf("%d %d %d %d\n",i,j,dp2[i][j],dp[i][j]==dp[i-1][j]); } printf("%d\n",dp2[lenx][leny]); } return 0;}
1004 Senior’s Fish
这题当时我也没做出来,后来看题解的时候第一感觉就是复杂度很高。后来才反应过来。。。过了的时候那种极度不科学的感觉那种冲击。。
//author: CHC//First Edit Time: 2015-07-14 13:41#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <set>#include <vector>#include <map>#include <queue>#include <set>#include <algorithm>#include <limits>using namespace std;typedef long long LL;const int MAXN=100000+100;const LL LL_INF=numeric_limits<LL>::max();#define lson L,mid,rt<<1#define rson mid+1,R,rt<<1|1long long X[4],Y[4];long long tx[MAXN],ty[MAXN];struct Tree { long long maX[4],maY[4],addx,addy,sum[4];}tr[MAXN<<2];void pushup(int rt){ for(int i=0;i<4;i++){ tr[rt].maX[i]=max(tr[rt<<1].maX[i],tr[rt<<1|1].maX[i]); tr[rt].maY[i]=max(tr[rt<<1].maY[i],tr[rt<<1|1].maY[i]); tr[rt].sum[i]=tr[rt<<1].sum[i]+tr[rt<<1|1].sum[i]; }}void pushdown(int rt){ if(tr[rt].addx){ tr[rt<<1].addx+=tr[rt].addx; tr[rt<<1|1].addx+=tr[rt].addx; for(int i=0;i<4;i++){ tr[rt<<1].maX[i]+=tr[rt].addx; tr[rt<<1|1].maX[i]+=tr[rt].addx; } tr[rt].addx=0; } if(tr[rt].addy){ tr[rt<<1].addy+=tr[rt].addy; tr[rt<<1|1].addy+=tr[rt].addy; for(int i=0;i<4;i++){ tr[rt<<1].maY[i]+=tr[rt].addy; tr[rt<<1|1].maY[i]+=tr[rt].addy; } tr[rt].addy=0; }}void build(int L,int R,int rt){ tr[rt].addy=tr[rt].addx=0; if(L==R){ for(int i=0;i<4;i++){ tr[rt].maX[i]=tx[L]; tr[rt].maY[i]=ty[L]; tr[rt].sum[i]=1; } return ; } int mid=(L+R)>>1; build(lson); build(rson); pushup(rt);}void update(int L,int R,int rt,int l,int r,long long v,int flag){ if(l<=L&&R<=r){ if(flag==0){ for(int i=0;i<4;i++) tr[rt].maX[i]+=v; tr[rt].addx+=v; } else { for(int i=0;i<4;i++) tr[rt].maY[i]+=v; tr[rt].addy+=v; } return ; } pushdown(rt); int mid=(L+R)>>1; if(l<=mid)update(lson,l,r,v,flag); if(r>mid)update(rson,l,r,v,flag); pushup(rt);}void adjust(int L,int R,int rt){ int mid=(L+R)>>1; for(int i=0;i<4;i++){ if(tr[rt].maX[i]>X[i]||tr[rt].maY[i]>Y[i]){ if(L==R){ tr[rt].maX[i]=LL_INF+1; tr[rt].maY[i]=LL_INF+1; tr[rt].sum[i]=0; continue; } pushdown(rt); adjust(lson);adjust(rson); pushup(rt); } }}LL query(int L,int R,int rt,int l,int r,int f){ if(l<=L&&R<=r)return tr[rt].sum[f]; int mid=(L+R)>>1; LL ans=0; if(l<=mid)ans+=query(lson,l,r,f); if(r>mid)ans+=query(rson,l,r,f); return ans;}int main(){ int n,m,t; int xx1,xx2,yy1,yy2; scanf("%d",&t); while(t--){ scanf("%d",&n); scanf("%d%d%d%d",&xx1,&yy1,&xx2,&yy2); X[0]=xx2;Y[0]=yy2; X[1]=xx1-1;Y[1]=yy2; X[2]=xx2;Y[2]=yy1-1; X[3]=xx1-1;Y[3]=yy1-1; for(int i=1;i<=n;i++){ scanf("%I64d%I64d",&tx[i],&ty[i]); } build(1,n,1); int type,d,tl,tr; scanf("%d",&m); while(m--){ scanf("%d",&type); if(type==1){ scanf("%d%d%d",&tl,&tr,&d); update(1,n,1,tl,tr,(LL)d,0); } if(type==2){ scanf("%d%d%d",&tl,&tr,&d); update(1,n,1,tl,tr,(LL)d,1); } if(type==3){ adjust(1,n,1); scanf("%d%d",&tl,&tr); LL ans=query(1,n,1,tl,tr,0)-query(1,n,1,tl,tr,1)-query(1,n,1,tl,tr,2)+query(1,n,1,tl,tr,3); printf("%I64d\n",ans); } } } return 0;}
0 0
- BestCoder Round #47 ($) (hdu 5280 , hdu 5281 , hdu 5282 , hdu 5283)
- HDU 5281 BestCoder Round #47 1002
- HDU 5280 BestCoder Round#47 1001
- BestCoder Round #48 ($) (hdu 5284、hdu 5285)
- HDU BestCoder Round #48 1001
- hdu 5641 BestCoder Round #75
- hdu 5643 BestCoder Round #75
- BestCoder Round #83(HDU 5680)
- HDU 5281 BestCoder Round #47 1002:Senior's Gun
- HDU 5280 BestCoder Round #47 1001:Senior's Array
- HDU 5280 BestCoder Round#47 1001 ---枚举+dp
- BestCoder Round #47 ($) HDU 5280 Senior\'s Array
- HDU BestCoder Round #1 1002 项目管理
- BestCoder round#3 1001 && Hdu 4907
- HDU 4907 Task schedule(BestCoder Round #3 )
- hdu 4989 Summary(BestCoder Round #8 1001)
- 【HDU】BestCoder Round #11 (Div. 2)
- Help him (BestCoder Round #12) HDU 5059
- 使用windeployqt令.exe在别的电脑里都能正常运行
- OpenLayers开发:WFS过滤
- 【leetcode】Populating Next Right Pointers in Each Node II
- netconsole简单配置
- Microsoft Dynamics CRM 2013 自定义代码验证工具
- BestCoder Round #47 ($) (hdu 5280 , hdu 5281 , hdu 5282 , hdu 5283)
- 时钟
- 可穿戴设备(CC2541)上微信(6)
- Ubuntu-安装-Python包
- 谷歌技术"三宝"之BigTable
- Informatica
- Check if a linked list is palindrome
- WebService系列博客{十}[CXF简单案例实现]
- java的基本成员默认值