A了三题半……最后一道图论完全不会(看不懂题目)只好提前交卷,有一道贪心策略选不对,还有道大数幂+大数加减(或者DP),太复杂了没调试起来只有一半,整体来说智商题静下心来想一想还是不难的,360每年都考大数,这个特别蛋疼。
目录
1.画板
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int T;
cin>>T;
while(T--){
int n;
cin>>n;
int sum = 0;
for(int i=0;i<n;i++){
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
sum+=((abs(y2-y1)+1)*(abs(x2-x1)+1));
}
cout<<sum<<endl;
}
return 0;
}
2.交易
智力题,一开始不知道要干嘛,纸上写一写想一想就明白了
没啥好说的....能被5整除就是YES,否则为NO,特殊情况是: 都为0的时候是NO
#include <iostream>
using namespace std;
int main(){
int T;
cin>>T;
while(T--){
int b[5];
int sum = 0;
bool flag = true;
for(int i=0;i<5;i++){
cin>>b[i];
if(b[i]!=0)
flag = false;
sum+=b[i];
}
int aver = sum/5;
if(flag)//特殊处理全零的情况
cout<<-1<<endl;
else if((aver*5-sum)!=0)
cout<<-1<<endl;
else
cout<<aver<<endl;
}
return 0;
}
3.派对
这题我贪心策略选的有问题,我是从最小的气球开始考虑,先把最小的气球用光
正确应该是从最大的气球开始考虑,2:1搭配,先把最大的气球用光
qq表示各色气球的数量的列表,对qq进行排序,
因为要最大化搭配数,所以先从数量最多的气球qq[2]入手,
第一次搭配:最多颜色的气球2个搭配次多颜色的气球1个,总个数减去3个;
...
第i次搭配:最多颜色的气球2个搭配次多颜色的气球1个,总个数减去3*i个;
...
第n次:次多颜色的气球数量变成0后,搭配结束,此时总个数减去3*n个,一共有n种搭配。
但是结束的时候颜色最多的气球数量可能还有很多,所以此时考虑两种情况:
1)颜色最多的气球数量s == 0,1,2时,s//3==0,所以n=sum(qq)//3;
1)颜色最多的气球数量s > 3时,n=颜色最少的气球数量+颜色次少的气球数量;
贴一个dalao能AC的代码:
#include <iostream>
using namespace std;
void sort(long *arr){
for(long t=1;t<3;t++){
for(long i=0;i<3-t;i++){
if(arr[i] > arr[i+1]) swap(arr[i], arr[i+1]);
}
}
}
int main(){
intT;
cin>>T;
long result;
long arr[3];
for(inti=0;i<T;i++){
cin>>arr[0]>>arr[1]>>arr[2];
sort(arr);
if(arr[2] >= 2*(arr[1]+arr[0])) {
result = arr[1] + arr[0];
} else{
result = (arr[0] + arr[1] + arr[2])/3;
}
cout<<result<<endl;
}
return0;
}
4.赛马
个人觉得这题最简单
排下序,第一组最差的马比第二组最强的马强就是YES,否则NO
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
int T;
cin>>T;
while(T--){
int n;
int temp;
vector<int> v;
cin>>n;
for(int i=0;i<2*n;i++){
cin>>temp;
v.push_back(temp);
}
sort(v.begin(),v.end());
if(v[n]>v[n-1])
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
v.clear();
}
}
5.玫瑰花
大数DP,不会,只能暴力来对15%
#include <iostream>
#include <cmath>
using namespace std;
typedef unsigned long long int l;
const long long mod = 772235;
int main(){
double N,K;
cin>>N>>K;
double ans = (pow(K,N)-K);
cout<<ans<<endl;
return 0;
}
6.奇异长度
图论+DP,完全不会gg
出这么难的题是不是不缺人啊……