Problem A
题目描述:
第一层2个房间,以后每一层x个房间,求第n个房间在第几层
题目解析:
略略略
#pragma GCC diagnostic error "-std=c++11"
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define ll long long
#define Pair pair<int,int>
#define re return
#define getLen(name,index) name[index].size()
#define mem(a,b) memset(a,b,sizeof(a))
#define Make(a,b) make_pair(a,b)
#define Push(num) push_back(num)
#define rep(index,star,finish) for(register int index=star;index<finish;index++)
#define drep(index,finish,star) for(register int index=finish;index>=star;index--)
using namespace std;
template<class T> void _deb(const char *name,T val){
cout<<name<<val<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin>>t;
while(t--){
int n,x;
cin>>n>>x;
int ans = 1;
if(n<=2){
;
}else{
n --; //否则每一层最后一个房间会被算到下一层
ans += (n-2)/x + 1;
}
cout<<ans<<endl;
}
re 0;
}
Problem B
题目描述:
现有n个2X2的矩阵,要求拼出一个mXm关于主对角线对称的矩阵。
题目解析:
举例分析可知,只需要 ( 0 , 1 ) (0,1) (0,1)和 ( 1 , 0 ) (1,0) (1,0)位置上的元素相同就一定能拼成一个对称矩阵。
此外,m要求为偶数,否则必定不能组成对称矩阵。
只要满足上述两个条件,输出YES
#pragma GCC diagnostic error "-std=c++11"
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define ll long long
#define Pair pair<int,int>
#define re return
#define getLen(name,index) name[index].size()
#define mem(a,b) memset(a,b,sizeof(a))
#define Make(a,b) make_pair(a,b)
#define Push(num) push_back(num)
#define rep(index,star,finish) for(register int index=star;index<finish;index++)
#define drep(index,finish,star) for(register int index=finish;index>=star;index--)
using namespace std;
template<class T> void _deb(const char *name,T val){
cout<<name<<val<<endl;
}
int t;
int n,m;
int store[2][2];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin>>t;
while(t--){
cin>>n>>m;
bool isMake = false;
rep(i,0,n){
rep(kagome,0,2)
rep(inu,0,2)
cin>>store[kagome][inu];
isMake = isMake || (store[0][1]==store[1][0]);
}
isMake = isMake && (m%2==0);
if(isMake)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
re 0;
}
Problem C
题目描述:
给一个初始集合,集合 { a n } \{a_n\} {
an}中只有一个元素 { 1 } \{1\} {
1}。每次只能执行一个操作:
- Increase:选择集合中任意一个元素自增
- Copy:选择集合中任意一个元素复制并加入到集合末尾
求最少几次操作使得集合元素的和不小于n
题目解析:
定义元素全部相同的集合为类型1,如 { b , b , ⋯ } \{b,b,\cdots\} {
b,b,⋯};其余称为类型2,如 { 1 , 2 , 3 , 4 ⋯ } \{1,2,3,4\cdots\} {
1,2,3,4⋯}
首先给出结论,答案形式必然是类型1。由于先Increase后Copy 的结果大于 先Copy后Increase ,所以不