A. Floor Number
题意思路: 位置n, 一层楼x个房间,问再第几层
代码:
#include<iostream>
#include<queue>
#include<stack>
#include<cstring>
#include<stdlib.h>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<map>
#include<stdio.h>
#include<string>
#define LL long long
using namespace std;
#define MAXN 1011
#define inf 100000001
#define sd1(i) scanf("%d", &i)
#define sd2(i, j) scanf("%d%d", &i, &j)
#define sl2(i, j) scanf("%lld%lld", &i, &j)
#define sd3(i, j, k) scanf("%d%d%d", &i, &j, &k)
int T;
int a[MAXN];
int sum;
int n ,x;
void solve(){
sd2(n, x);
int ans;
if(n <= 2)
ans = 1;
else {
if((n - 2) % x == 0)
ans = (n - 2) / x + 1;
else
ans = (n - 2) / x + 2;
}
cout << ans << endl;
}
int main(){
sd1(T);
while(T--){
solve();
}
//system("pause");
return 0;
}
B. Symmetric Matrix
题意 : 给出多个22的矩阵 可以重复使用 问能不能组成mm的对称矩阵
思路: 2*2矩阵中有一个是对称即可
代码:
#include<iostream>
#include<queue>
#include<stack>
#include<cstring>
#include<stdlib.h>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<map>
#include<stdio.h>
#include<string>
#define LL long long
using namespace std;
#define MAXN 1011
#define inf 100000001
#define sd1(i) scanf("%d", &i)
#define sd2(i, j) scanf("%d%d", &i, &j)
#define sl2(i, j) scanf("%lld%lld", &i, &j)
#define sd3(i, j, k) scanf("%d%d%d", &i, &j, &k)
int T;
struct node{
int a, b, c, d;
}a[MAXN];
int sum;
int n ,m;
void solve(){
sd2(n, m);
int flag = 0;
for(int i = 0; i < n; i++){
sd3(a[i].a , a[i].b, a[i].c);
sd1(a[i].d);
if(a[i].b == a[i].c) flag = 1;
}
if(m % 2 != 0) flag = 0;
if(flag == 0) cout << "NO" << endl;
else cout << "YES" << endl;
}
int main(){
sd1(T);
while(T--){
solve();
}
system("pause");
return 0;
}
C. Increase and Copy
题意 : 可以对一个数组{1}进行如下操作
1.任意元素加一 2.数组尾巴插入前面任意元素的值
求使数组元素的和等于n的最小操作数
思路: 将操作数分为聊部分,前一部分使第一个值加一, 后一部分将这个值加到后面,精确分两半使可以得此操作的最大值, 求解时只需开平方,处理一下奇数的情况即可
代码:
#include<iostream>
#include<queue>
#include<stack>
#include<cstring>
#include<stdlib.h>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<map>
#include<stdio.h>
#include<string>
#include<cmath>
#define LL long long
using namespace std;
#define MAXN 1011
#define inf 100000001
#define sd1(i) scanf("%d", &i)
#define sd2(i, j) scanf("%d%d", &i, &j)
#define sl2(i, j) scanf("%lld%lld", &i, &j)
#define sd3(i, j, k) scanf("%d%d%d", &i, &j, &k)
int sum;
int n ,m;
map<int , int> mp;
int T;
void solve(){
sd1(n);
int ans = 0;
if(n == 1) ans = 0;
else if(n == 2) ans = 1;
else{
int nn = 0;
double mm = sqrt(n);
if((int)mm == mm) nn = (int)mm - 1;
else nn = (int)mm;
if(nn * (nn + 1) >= n) ans = nn * 2 - 1;
else ans = nn * 2;
}
cout << ans << endl;
}
int main(){
sd1(T);
while(T--){
solve();
}
//system("pause");
return 0;
}