题目大意:给定u,v,求x,y。要满足x/u + y/v =( x+y) / (u+v)
input
4 1 1 2 3 3 5 6 9output
-1 1 -4 9 -18 50 -4 9
u*u *y=-x *v*v so y=-x*v*v/u*u 开longlong即可
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
long long int u,v;
cin>>u>>v;
if(u==v) cout<<"-1 1"<<endl;
else
{
long long int x=u*u;
long long int y=-v*v;
cout<<x<<" "<<y<<endl;
}
}
return 0;
}
题目大意:n*m的红色矩形,除1*1外可任意裁剪。为了让相邻的任意一对单元格(来自同一片断)具有不同的颜色。
问至少要画多少个单元格?
input
4 1 3 2 2 2 5 3 5output
1 2 4 5
切入点就是3格划分为最小,划完3格的,余下2格的再划一格
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
int a,b;
cin>>a>>b;
int flag;
if(a>b) { flag=a; a=b; b=flag; }
if(a%3==0) cout<<b*(a/3)<<endl;
else if(b%3==0) cout<<a*(b/3)<<endl;
else cout<<a/3*b+(a%3==1?b/3+(b%3>0?1:0):b/3*2+b%3)<<endl;
}
return 0;
}
题目大意:a数组能否经历+1或不动变为b数组。可以为“YES”,反之“NO”。
input
3 3 -1 1 0 0 0 2 1 0 2 5 1 2 3 4 5 1 2 3 4 5output
YES NO YES
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int a[200200],b[200200];
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
cin>>b[i];
sort(a+1,a+1+n);
sort(b+1,b+1+n);
bool flag=true;
for(int i=1;i<=n;i++)
if(b[i]-a[i]==1||b[i]==a[i]) continue;
else { flag=false; break; }
if(flag==false) cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}
嘎嘎冲!