博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019 2 18 总结
阅读量:4974 次
发布时间:2019-06-12

本文共 3786 字,大约阅读时间需要 12 分钟。

又是水题大赛和失误的一天

T1边界出错,二分打错

T4初始值赋错

没什么好讲的

T1上升子序列

T2spfa

T3单调队列

T4背包dp

题意

T1原序列将卡片拿出再放回几次才能有序?

T2走迷宫,有些地块需要更多体力问最少体力消耗

T3给定序列,求该点前m个数中的最小值

T4给定f,s值选取任意个物品使总和最大且f值和与s值和都不小于0

#include
using namespace std;inline int read(){ int num=0,fs=1; char ch; while((ch<'0'||ch>'9')&&ch!='-') ch=getchar(); if(ch=='-') fs=-1,ch=getchar(); while(ch>='0'&&ch<='9') num=num*10+ch-'0',ch=getchar(); return num*fs;}int q[500009],lenq;int n; int find(int l,int r,int k){ int mid,re=0; while(l<=r) { //cout<
<<" "<
<<" "<
<<" 233"<
>1; if(q[mid]<=k) re=mid,l=mid+1; else r=mid-1; } return re;}int main (){ //freopen("card.in","r",stdin); //freopen("card.out","w",stdout); n=read(); for(int i=1,x;i<=n;i++) { q[0]=-2000000000; x=read(); if(x>=q[lenq]) q[++lenq]=x; else { q[find(0,lenq,x)+1]=x; } } printf("%d",n-lenq); return 0; }
A
#include
using namespace std;inline int read(){ int num=0,fs=1; char ch; while((ch<'0'||ch>'9')&&ch!='-') ch=getchar(); if(ch=='-') fs=-1,ch=getchar(); while(ch>='0'&&ch<='9') num=num*10+ch-'0',ch=getchar(); return num*fs;}struct gzw{ int x,y;};int T,n,m;int mp[509][509];bool mark[509][509];int dis[509][509];int stx,sty,edx,edy;int ans=-1;int tot[509][509];queue
q;inline int true_calc(int x,int y){ return abs(edx-x)+abs(edy-y); }int main (){ T=read(); n=read(),m=read(); for(int i=1;i<=n;i++) { mark[0][i]=1; mark[i][0]=1; mark[i][m+1]=1; mark[n+1][i]=1; for(int j=1;j<=m;j++) { dis[i][j]=2000000000; mp[i][j]=read(); if(mp[i][j]==5) stx=i,sty=j; else if(mp[i][j]==9) edx=i,edy=j; } } q.push((gzw){stx,sty}); mark[stx][sty]=1; dis[stx][sty]=0; while(!q.empty()) { gzw now=q.front(); q.pop(); int x=now.x,y=now.y; if(dis[x][y]+(mp[x+1][y]==1?5:1)
0?(T-dis[edx][edy]):-1); return 0; }
B
#include
using namespace std;inline int read(){ int num=0,fs=1; char ch; while((ch<'0'||ch>'9')&&ch!='-') ch=getchar(); if(ch=='-') fs=-1,ch=getchar(); while(ch>='0'&&ch<='9') num=num*10+ch-'0',ch=getchar(); return num*fs;}struct gzw{ int val,pos; }q[1000009];int head=1,tail;int n,m;int main (){ //freopen("min.in","r",stdin); //freopen("min.out","w",stdout); n=read(),m=read(); for(int i=1,x;i<=n;i++) { while(head<=tail&&q[head].pos+m
C
#include
using namespace std;inline int read(){ int num=0,fs=1; char ch; while((ch<'0'||ch>'9')&&ch!='-') ch=getchar(); if(ch=='-') fs=-1,ch=getchar(); while(ch>='0'&&ch<='9') num=num*10+ch-'0',ch=getchar(); return num*fs;}int f[109][200009]; int n;int ans=0;int s[109],ff[109]; int main (){ //freopen("smrtfun.in","r",stdin); //freopen("smrtfun.out","w",stdout); for(int i=0;i<=100;i++) { for(int j=0;j<=200000;j++) { f[i][j]=-200000000; } } n=read(); for(int i=1;i<=n;i++) { s[i]=read(),ff[i]=read(); } f[0][100000]=0; for(int i=1;i<=n;i++) { for(int j=200000;j>=0;j--) { if(f[i-1][j]!=f[0][0]) { if(f[i-1][j]+ff[i]>f[i][j+s[i]]) {f[i][j+s[i]]=f[i-1][j]+ff[i];if(j+s[i]>=100000&&f[i][j+s[i]]>=0) ans=max(ans,j+s[i]-100000+f[i][j+s[i]]);} f[i][j]=max(f[i][j],f[i-1][j]); } } } printf("%d ",ans); return 0; }
D

 

转载于:https://www.cnblogs.com/wenjing233/p/10395755.html

你可能感兴趣的文章
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>
如何设置输入框达到只读效果
查看>>
RT3070 USB WIFI 在连接socket编程过程中问题总结
查看>>
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
20120227_CET6
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
leetcode【67】-Bulb Switcher
查看>>
JS验证图片格式和大小并预览
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>
设计类图
查看>>