第一次这么顺手。。。都是1A。。。。D想了1个小时,想了一个假算法。。。最后20分开E,我叼,简单DP???不负众望的10分钟A掉。。。

 

A. Yet Another Dividing into Teams 只会有两个队

 B1.B2. Books Exchange直接DFS找环,环内的传递时间是一样的。标记一下,线性复杂度。

 C1. Good Numbers (easy version) 其实就是3进制表示形式不能有2,那么简单版本直接预处理1-1000然后找第一个大于n的数即可。

#include<bits/stdc++.h>
#define LL long long
using namespace std;
vector<int>ans;
bool check(int x){
   int flag=0;
   while(x){
     if (x%3==2){
        flag=1;
        break;
     }
     x=x/3;
   }
   if (flag==1)return 0;
   else return 1;
}
void init(){
  for (int i=1;i<=19683;i++){
     if(check(i)){
        ans.push_back(i);
     }
  }
}
int main(){
  int t,n;
  scanf("%d",&t);
  init();
  while(t--){
     scanf("%d",&n);
     int pos=lower_bound(ans.begin(),ans.end(),n)-ans.begin();
     printf("%d\n",ans[pos]);
  }
  return 0;
}
View Code

相关文章: