一直想打CF 但是一直没什么时间。。
不过这次模拟赛被JL的众神犇虐了之后,考虑到提高比赛能力的重要性 拉上TZG和YJZ去打了CF(DIV1 2333
当然结果是TZG排名全球70 rating暴涨 我只A了一道题==
原因是这样的:
A题:脑筋急转弯?给出几种面值的钞票,可以无限使用。求最小的不能凑成的面值,无解输出-1
最小的肯定是1啦!简直脑筋急转弯
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int s=0x3f3f3f3f; int n; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { int a; scanf("%d",&a);s=min(s,a); } if(s==1)puts("-1"); else puts("1"); return 0; }
B题 给出一个画框 往画框里放两幅画,画可以旋转,不过不能斜着放。求是否能放下。。
直接枚举怎么旋转 可是我中途打错了变量名== 于是QAQ。。。
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int a[5],b[5]; int main() { scanf("%d%d%d%d%d%d",&a[1],&b[1],&a[2],&b[2],&a[3],&b[3]); if(a[1]>b[1])swap(a[1],b[1]); if(a[2]>b[2])swap(a[2],b[2]); if(a[3]>b[3])swap(a[3],b[3]); if(a[1]*b[1]<a[2]*b[2]+a[3]*b[3]){puts("NO");return 0;} if(a[1]>=a[2]+b[3]&&b[1]>=b[2]+a[3]){puts("YES");return 0;} if(a[1]>=a[2]+a[3]&&b[1]>=b[2]+b[3]){puts("YES");return 0;} if(a[1]>=b[2]+b[3]&&b[1]>=a[2]+a[3]){puts("YES");return 0;} if(a[1]>=b[2]+a[3]&&b[1]>=a[2]+b[3]){puts("YES");return 0;} if(a[1]>=a[2]+b[3]&&b[1]>=b[2]&&b[1]>=a[3]){puts("YES");return 0;}//b[2] a[3] if(a[1]>=a[2]+a[3]&&b[1]>=b[2]&&b[1]>=b[3]){puts("YES");return 0;} if(a[1]>=b[2]+b[3]&&b[1]>=a[2]&&b[1]>=a[3]){puts("YES");return 0;} if(a[1]>=b[2]+a[3]&&b[1]>=a[2]&&b[1]>=b[3]){puts("YES");return 0;} if(b[1]>=a[2]+b[3]&&a[1]>=b[2]&&a[1]>=a[3]){puts("YES");return 0;}//b[2] a[3] if(b[1]>=a[2]+a[3]&&a[1]>=b[2]&&a[1]>=b[3]){puts("YES");return 0;} if(b[1]>=b[2]+b[3]&&a[1]>=a[2]&&a[1]>=a[3]){puts("YES");return 0;} if(b[1]>=b[2]+a[3]&&a[1]>=a[2]&&a[1]>=b[3]){puts("YES");return 0;} puts("NO"); }
C题 给出一个六边形 求这个六边形中有多少个边长为1的正三角形
如图:
QAQ我在这里卡题了,一直在想六边形的每条边与三角形的关系。。。然后想了一个半小时 挂在这里了。。。
事实上只需要随便求出六边形面积(也可以叉积),然后除以每个三角形的面积就行了。。。
也可以推出面积公式。。。。六边形看成大三角形减去几个角来做。。
真是智商捉急啊!!(TZG 5min作出此题)
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int a[10]; double s=sqrt(3)/4; int main() { for(int i=1;i<=6;i++)scanf("%d",&a[i]); cout<<(a[1]+a[2]+a[3])*(a[1]+a[2]+a[3])-a[1]*a[1]-a[3]*a[3]-a[5]*a[5]<<endl; }
D题 给出两个字符串 两个字符串相等的条件是:
1他们字符相同
或者
2从中间把他们分成两半 两两相等
特别的 字符串长度为奇数时只能用1条件
这个条件是递归定义的。。。
于是TM递归下去就好啦!!!不用回溯直接NLOGN啊!!!!
TM这题比C题简单。。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; char s1[900005],s2[900005]; bool force(int l1,int r1,int l2,int r2) { for(int i=l1,j=l2;i<=r1;i++,j++) if(s1[i]!=s2[j])return 0; return 1; } bool dfs(int l1,int r1,int l2,int r2) { if((r1-l1+1)%2)return force(l1,r1,l2,r2); if(force(l1,r1,l2,r2))return 1; int m1=(l1+r1)/2,m2=(l2+r2)/2; if(dfs(l1,m1,l2,m2)&&dfs(m1+1,r1,m2+1,r2))return 1; if(dfs(l1,m1,m2+1,r2)&&dfs(m1+1,r1,l2,m2))return 1; return 0; } int main() { scanf("%s%s",s1+1,s2+1); int len1=strlen(s1+1); if(dfs(1,len1,1,len1))puts("YES"); else puts("NO"); }
E题?没太看懂题。。好像是个经典问题
给出一个矩阵,上面有坏点 求不经过坏点从0,0到n,n的方案数?
反正也没写==写的话用组合数取MOD lucas 什么的乱搞就行
于是就这样-80rating
自己还是太弱。。。
下次再来吧。。
别人太强,自己也要变强啊!!!
来来来,打CF,用火麒麟上=w=(2333
Appredciation to my father wwho told me abot this website, this
blog is actually awesome.
Alternating side to side, tighten the bolts and nuts
(using the screwdriver and adjustable wrench) until the gaskets look
like they’re seated.
2333这个人叫 dick