- #include<stdio.h>
- #include<string.h>
- #define LL long long
- LL dp[210][210],num[210][210],n;
- LL max(LL a,LL b)
- {
- if(a>b) return a;
- return b;
- }
- LL call(LL a,LL b)
- {
- if(num[a][b]==0) return 0;
- if(dp[a][b]!=-1) return dp[a][b];
- LL ret=num[a][b];
- if(a<=n)
- ret+=max(call(a-1,b),call(a-1,b-1));
- else
- ret+=max(call(a-1,b),call(a-1,b+1));
- return dp[a][b]=ret;
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- for(int i=1;i<=t;i++)
- {
- scanf("%lld",&n);
- for(int j=0;j<=200;j++)
- for(int k=0;k<=200;k++)
- {
- num[j][k]=0;
- dp[j][k]=-1;
- }
- for(int j=1;j<n;j++)
- for(int k=1;k<=j;k++)
- scanf("%lld",&num[j][k]);
- for(int j=n;j<2*n;j++)
- for(int k=1;k<=2*n-j;k++)
- scanf("%lld",&num[j][k]);
- LL ans=num[2*n-1][1];
- ans+=max(call(2*n-2,1),call(2*n-2,2));
- printf("Case %d: %lld\n",i,ans);
- }
- return 0;
- }
programming for ever
শুক্রবার, ৯ নভেম্বর, ২০১২
light oj---1004 - Monkey Banana Problem
বৃহস্পতিবার, ৮ নভেম্বর, ২০১২
ligjt oj---1003 - Drunk
- #include <algorithm>
- #include <cassert>
- #include <cctype>
- #include <cfloat>
- #include <climits>
- #include <cmath>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <iostream>
- #include <limits>
- #include <map>
- #include <queue>
- #include <set>
- #include <sstream>
- #include <stack>
- #include <string>
- #include <utility>
- #include <vector>
- #define G getchar()
- #define FOR(i,t) for(i=1;i<=t;i++)
- #define FORO(j,n) for(j=0;j<n;j++)
- #define EPS DBL_EPSILON
- #define abs(x) (((x)<0)?-(x):(x))
- #define ZERO(x) (abs(x) < EPS)
- #define EQ(a,b) (ZERO((a)-(b)))
- #define max(a,b) (a)>(b)?(a):(b)
- #define min(a,b) (a)<(b)?(a):(b)
- #define memo(a,v) memset(a,v,sizeof(a))
- #define PI 2*acos(0.0)
- #define all(a) a.begin(),a.end()
- #define EPS 1e-8
- #define INF -1U >> 1
- #define LL int int
- #define NL puts("")
- #define MAX 30001
- using namespace std;
- map<string ,int >m;
- vector<int >v[20010];
- //string st1,st2;
- char in[20010];
- int j=0;
- void fix(int i)
- {
- int k;
- in[i]=-1;
- FORO(k,v[i].size())
- {
- in[v[i][k]]--;
- }
- }
- bool comp(int a,int b)
- {
- if(a>b) return true;
- return false;
- }
- int main()
- {
- int i,t;
- scanf("%d",&t);
- FOR(i,t)
- {
- m.clear();
- memo(in,0);
- int a,k;
- j=0;
- scanf("%d",&a);
- while(a--)
- {
- G;
- char st1[100],st2[100];
- scanf("%s %s",&st1,&st2);
- if(!(m.count(st1)>0))
- m[st1]=j++;
- if(!(m.count(st2)>0))
- m[st2]=j++;
- v[m[st1]].push_back(m[st2]);
- in[m[st2]]++;
- }
- int fin;
- fin = 0;
- while(fin<j)
- {
- FORO(k,j)
- if(in[k]==0)
- fix(k);
- fin++;
- }
- //FORO(k,j) printf("%d ",in[k]);
- //NL;
- sort(in,in+j,comp);
- if(in[1]>0)
- printf("Case %d: No\n",i);
- else printf("Case %d: Yes\n",i);
- FORO(k,j)
- v[k].clear();
- }
- return 0;
- }
এতে সদস্যতা:
পোস্টগুলি (Atom)