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



