首页 > 代码库 > 多校第七场 DP+map模拟
多校第七场 DP+map模拟
HDU 4939 Stupid Tower Defense
DP 推一下。
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<map> #include<queue> #include<stack> #include<vector> #include<ctype.h> #include<algorithm> #include<string> typedef long long LL; using namespace std; LL dp[1505][1505]; int main() { int T; scanf("%d",&T); for(int ii=1; ii<=T; ii++) { LL n, x, y, z, t; scanf("%I64d%I64d%I64d%I64d%I64d",&n,&x,&y,&z,&t); printf("Case #%d: ",ii); LL ans=0; memset(dp,0,sizeof(dp)); if(x*n*t>ans) ans=x*n*t; for(LL i=1; i<=n; i++) { dp[i][0]=0LL; if(dp[i][0]+(t+i*z)*(n-i)*x>ans) ans=dp[i][0]+(t+i*z)*(n-i)*x; for(LL j=1; j<i; j++) //j绿塔 { dp[i][j]=max(dp[i-1][j-1]+(t+(i-j)*z)*(j-1LL)*y,dp[i-1][j]+(t+(i-1LL-j)*z)*j*y); if(dp[i][j]+(t+(i-j)*z)*(n-i)*(j*y+x)>ans) ans=dp[i][j]+(t+(i-j)*z)*(n-i)*(j*y+x); } dp[i][i]=dp[i-1][i-1]+t*(i-1LL)*y; if(dp[i][i]+t*(n-i)*(i*y+x)>ans) ans=dp[i][i]+t*(n-i)*(i*y+x); } printf("%I64d\n",ans); } return 0; }
HDU 4941 Magical Forest
比赛的时候没想到好方法,然后宝哥想到了A的。
现在重新回来做了一下。
比赛的时候可能脑子堵了吧。转换一下,变换一下很容易就搞定了的事就是想不出来。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<queue> #include<set> #include<cmath> #include<bitset> #define mem(a,b) memset(a,b,sizeof(a)) #define lson i<<1,l,mid #define rson i<<1|1,mid+1,r #define llson j<<1,l,mid #define rrson j<<1|1,mid+1,r #define INF 0x7fffffff #define maxn 100010 using namespace std; typedef long long ll; typedef unsigned long long ull; map<int,int>h,s,f,mm[maxn]; int main() { //freopen("1.txt","r",stdin); int t,ii=1; cin>>t; while(t--) { int a,b,c,i,n,m,k,q; scanf("%d%d%d",&n,&m,&k); h.clear(),s.clear(),f.clear(); for(i=0;i<=k;i++) mm[i].clear(); for(i=0;i<k;i++) { scanf("%d%d%d",&a,&b,&c); b++,a++; h[a]=a,s[b]=b; if(!f[a]) f[a]=i; mm[f[a]][s[b]]=c; } scanf("%d",&q); printf("Case #%d:\n",ii++); while(q--) { scanf("%d%d%d",&c,&a,&b);a++;b++; if(c==1&&h[a]&&h[b]) swap(h[a],h[b]); else if(c==2&&s[a]&&s[b]) swap(s[a],s[b]); else { if(h[a]&&s[b]) printf("%d\n",mm[f[h[a]]][s[b]]); else puts("0"); } } } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。