现在一看这A-C真的太水了,本来真不用写的,奈何我被骗的跟个*一样,写出来当个教训吧…
上来直接暴力枚举A题,超时了两次我又蹦到C去了,结果C题做了一小时我也不知道哪里错的(读错题了),折回了A推了下公式几分钟就做出来了(不知道我刚开始为啥要暴力…),然后去做B,我压根没注意到题里说方块还可以分割,最后的二十分钟也就这么没了…这一场被英文耍的团团转,分也掉了一大波。
A. Mathematical Addition
所给公式为(x/u)+(y/v)=(x+y)/(u+v),只要把这个公式化简就可以直接做出来了。
#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007
typedef long long ll ;
int main()
{
ll n,i,j,t,l,r,u,v,x,y;
cin>>t;
while(t--)
{
cin>>u>>v;
x=-u*u;
y=v*v;
cout<<x<<" "<<y<<endl;
}
}
B. Coloring Rectangles
这题真的有毒,我本来以为是给一个矩阵,要往里面涂色,求使相邻颜色不同所需要涂的最少方块。结果它其实还可以剪,就随便剪。写一写就知道全剪成1 * 3的矩阵是最少的情况,如果还有剩余就用1*2去剪。
#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007
typedef long long ll ;
int main()
{
int t,m,n,ans,i;
cin>>t;
while(t--)
{ ans=0;
cin>>n>>m;
if((n*m)%3==0) ans=(n*m)/3;
else ans=(n*m)/3+1;
cout<<ans<<endl;
}
}
C. Two Arrays
千万注意两句话:1.Choose k distinct array indices 1≤i1<i2<…<ik≤n.
2.Add 1 to each of ai1,ai2,…,aik, 注意数组a的下标是i1–ik不是1–k,将数组a和数组b排序,只要对应位置数组b和数组a元素的大小差的不是0或1,那都不能转化(如果相差0可以不变,如果相差1就加1,题目中只有不变和加一这两种转变方法)。
#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007
typedef long long ll ;
int a[101];
int b[101];
int main()
{
int t,m,n,ans,i;
cin>>t;
while(t--)
{ m=1;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<n;i++)
{
cin>>b[i];
}
sort(a,a+n);
sort(b,b+n);
for(i=0;i<n;i++)
{
if(b[i]-a[i]==1||b[i]-a[i]==0) {m=1;}
else {m=0;break;}
}
if(m==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
英语差,还不好好读题,笑话我吧…