A题,超级大水题,根据有没有1输出-1和1就行了。我沙茶,把%d写成了%n。
B题,也水,两个矩形的长和宽分别加一下,剩下的两个取大的那个,看看是否框得下。
C题,其实也很简单,题目保证了小三角形是正三角形,一个正三角的面积=l*l*(1/2)*cos(30),由于只要算三角形个数,把六边形扩成一个大三角,剪掉三个小三角,除一下系数就没了。就变成了平方相减。
D题,根据定义递归。然后注意奇数就行了。我沙茶,没加第一种判断dfs(a+len,len,b+len) && dfs(a,len,b)。
E题,有思路,没写代码,就是个DP,设当前走到r,c且不经过黑点的方案数为dp[r][c],转移的时候用C(r+c-2,r-1)可以算出从(0,0)点走到(r,c)的方案数,然后减去从之前的黑点走到(r,c)的方案数。
总结,好好读题,仔细敲代码
A题
#define HDU #ifndef HDU #include<bits/stdc++.h> #else #include<cstdio> #include<cmath> #include<vector> #include<map> #include<set> #include<algorithm> #include<cstring> #endif // HDU using namespace std; //const int maxn = 1009; //int n; //int a[maxn]; int main() { #ifdef local freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); #endif // local int t; int n; while(~scanf("%d",&n)){ bool flag = 0; for(int i = 0; i < n; i++){ scanf("%d",&t); if(t == 1) flag = 1; } if(flag) printf("-1"); else printf("1"); } return 0; } /* // for(int i = 0; i < n; i++){ //} scanf("%d",a+i); sort(a,a+n); if(a[0] == 1 ){ }else */
B题
#define HDU #ifndef HDU #include<bits/stdc++.h> #else #include<cstdio> #include<cmath> #include<vector> #include<map> #include<set> #include<algorithm> //#include<iostream> #endif // HDU using namespace std; //#define local #define PY { puts("YES"); return 0; } #define PN { puts("NO"); return 0; } int main() { #ifdef local freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); #endif // local int a0,b0; scanf("%d%d",&a0,&b0); int a1,b1,a2,b2; scanf("%d%d%d%d",&a1,&b1,&a2,&b2); int t = (a1+a2),t2 = max(b1,b2); if((t<=a0 && t2<= b0)|| (t<=b0 && t2<=a0) ) PY; t = (a1+b2); t2 = max(b1,a2); if((t<=a0 && t2<= b0)|| (t<=b0 && t2<=a0) ) PY; t = (b1+a2); t2 = max(a1,b2); if((t<=a0 && t2<= b0)|| (t<=b0 && t2<=a0) ) PY; t = (b1+b2); t2 = max(a1,a2); if((t<=a0 && t2<= b0)|| (t<=b0 && t2<=a0) ) PY; PN; return 0; }
C题
#define HDU #ifndef HDU #include<bits/stdc++.h> #else #include<cstdio> #include<cmath> #include<vector> #include<map> #include<set> #include<algorithm> //#include<iostream> #endif // HDU using namespace std; //#define local int main() { #ifdef local freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); #endif // local int a,b,c,d,e,f,g; scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g); int l = a+b+c; int ans = l*l - a*a - c*c - e*e; printf("%d",ans); return 0; }
D题
#define HDU #ifndef HDU #include<bits/stdc++.h> #else #include<cstdio> #include<cmath> #include<vector> #include<map> #include<set> #include<algorithm> #include<cstring> #endif // HDU using namespace std; //#define local bool dfs(char *a,int len,char *b) { if(len == 1) { return (*a) == (*b); } if(memcmp(a,b,len) == 0) return true; if(len&1) return false; len >>= 1; return (dfs(a,len,b+len) && dfs(a+len,len,b))||(dfs(a+len,len,b+len) && dfs(a,len,b)); } const int maxn = 200000+5; char a[maxn],b[maxn]; int main() { #ifdef local freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); #endif // local scanf("%s%s",a,b); int len = strlen(a); printf("%s ",dfs(a,len,b)?"YES":"NO"); return 0; }