目录
G Icon Design
题目大意:根据要求打印不同图案.
思路:注意到n范围比较小,直接打表.
#include<bits/stdc++.h>
using namespace std;
template <typename tn>void read(tn &n){
tn f=1,t=0;char ch=getchar();
while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
while (isdigit(ch)) t=t*10+ch-'0',ch=getchar();
n=f*t;
}
inline void out(int x){
if(x>9)out(x/10);
putchar(x%10+'0');
}
int n;
int main(){
read(n);
if(n==1){
cout<<"********************************"<<endl;
cout<<"*..............................*"<<endl;
cout<<"*..@...@..@@@@@..@......@@@@@..*"<<endl;
cout<<"*..@@..@..@......@......@......*"<<endl;
cout<<"*..@.@.@..@@@@@..@......@@@@@..*"<<endl;
cout<<"*..@..@@..@......@..........@..*"<<endl;
cout<<"*..@...@..@......@@@@@..@@@@@..*"<<endl;
cout<<"*..............................*"<<endl;
cout<<"********************************"<<endl;
}
if(n==2){
cout<<"*********************************************"<<endl;
cout<<"*...........................................*"<<endl;
cout<<"*...........................................*"<<endl;
cout<<"*...@.....@...@@@@@@@...@.........@@@@@@@...*"<<endl;
cout<<"*...@@....@...@.........@.........@.........*"<<endl;
cout<<"*...@.@...@...@.........@.........@.........*"<<endl;
cout<<"*...@..@..@...@@@@@@@...@.........@@@@@@@...*"<<endl;
cout<<"*...@...@.@...@.........@...............@...*"<<endl;
cout<<"*...@....@@...@.........@...............@...*"<<endl;
cout<<"*...@.....@...@.........@@@@@@@...@@@@@@@...*"<<endl;
cout<<"*...........................................*"<<endl;
cout<<"*...........................................*"<<endl;
cout<<"*********************************************"<<endl;
}
if(n==3){
cout<<"**********************************************************"<<endl;
cout<<"*........................................................*"<<endl;
cout<<"*........................................................*"<<endl;
cout<<"*........................................................*"<<endl;
cout<<"*....@.......@....@@@@@@@@@....@............@@@@@@@@@....*"<<endl;
cout<<"*....@@......@....@............@............@............*"<<endl;
cout<<"*....@.@.....@....@............@............@............*"<<endl;
cout<<"*....@..@....@....@............@............@............*"<<endl;
cout<<"*....@...@...@....@@@@@@@@@....@............@@@@@@@@@....*"<<endl;
cout<<"*....@....@..@....@............@....................@....*"<<endl;
cout<<"*....@.....@.@....@............@....................@....*"<<endl;
cout<<"*....@......@@....@............@....................@....*"<<endl;
cout<<"*....@.......@....@............@@@@@@@@@....@@@@@@@@@....*"<<endl;
cout<<"*........................................................*"<<endl;
cout<<"*........................................................*"<<endl;
cout<<"*........................................................*"<<endl;
cout<<"**********************************************************"<<endl;
}
if(n==4){
cout<<"***********************************************************************\n";
cout<<"*.....................................................................*\n";
cout<<"*.....................................................................*\n";
cout<<"*.....................................................................*\n";
cout<<"*.....................................................................*\n";
cout<<"*.....@.........@.....@@@@@@@@@@@.....@...............@@@@@@@@@@@.....*\n";
cout<<"*.....@@........@.....@...............@...............@...............*\n";
cout<<"*.....@.@.......@.....@...............@...............@...............*\n";
cout<<"*.....@..@......@.....@...............@...............@...............*\n";
cout<<"*.....@...@.....@.....@...............@...............@...............*\n";
cout<<"*.....@....@....@.....@@@@@@@@@@@.....@...............@@@@@@@@@@@.....*\n";
cout<<"*.....@.....@...@.....@...............@.........................@.....*\n";
cout<<"*.....@......@..@.....@...............@.........................@.....*\n";
cout<<"*.....@.......@.@.....@...............@.........................@.....*\n";
cout<<"*.....@........@@.....@...............@.........................@.....*\n";
cout<<"*.....@.........@.....@...............@@@@@@@@@@@.....@@@@@@@@@@@.....*\n";
cout<<"*.....................................................................*\n";
cout<<"*.....................................................................*\n";
cout<<"*.....................................................................*\n";
cout<<"*.....................................................................*\n";
cout<<"***********************************************************************\n";
}
if(n==5){
cout << "************************************************************************************\n";
cout << "*..................................................................................*\n";
cout << "*..................................................................................*\n";
cout << "*..................................................................................*\n";
cout << "*..................................................................................*\n";
cout << "*..................................................................................*\n";
cout << "*......@...........@......@@@@@@@@@@@@@......@..................@@@@@@@@@@@@@......*\n";
cout << "*......@@..........@......@..................@..................@..................*\n";
cout << "*......@.@.........@......@..................@..................@..................*\n";
cout << "*......@..@........@......@..................@..................@..................*\n";
cout << "*......@...@.......@......@..................@..................@..................*\n";
cout << "*......@....@......@......@..................@..................@..................*\n";
cout << "*......@.....@.....@......@@@@@@@@@@@@@......@..................@@@@@@@@@@@@@......*\n";
cout << "*......@......@....@......@..................@..............................@......*\n";
cout << "*......@.......@...@......@..................@..............................@......*\n";
cout << "*......@........@..@......@..................@..............................@......*\n";
cout << "*......@.........@.@......@..................@..............................@......*\n";
cout << "*......@..........@@......@..................@..............................@......*\n";
cout << "*......@...........@......@..................@@@@@@@@@@@@@......@@@@@@@@@@@@@......*\n";
cout << "*..................................................................................*\n";
cout << "*..................................................................................*\n";
cout << "*..................................................................................*\n";
cout << "*..................................................................................*\n";
cout << "*..................................................................................*\n";
cout << "************************************************************************************\n";
}
return 0;
}
J Number Game
题目大意:给定A,B,C三个数,存在两种操作,1)把B变为A-B.2)把c变为B-C.问是否可以将C变为x.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
const int N=4e4+10,M=5e5+5;
int n,m,k;
ll a,b,c,x;
int main(){
//freopen("data.in","r",stdin);
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int T; cin>>T;
while(T--) {
cin>>a>>b>>c>>x;
ll b1=b,b2=a-b;
ll t=abs(b1-b2);
if(b1==b2) {
if(c==x||b-c==x) {
cout<<"Yes\n";
} else {
cout<<"No\n";
}
continue;
}
if((x-c)%t==0) {
cout<<"Yes\n"; continue;
}
if((x-(b2-c))%t==0) {
//printf("%lld %lld\n",(x-(b2-c)),t);
cout<<"Yes\n"; continue;
}
if((x-(b1-c))%t==0) {
cout<<"Yes\n"; continue;
}
cout<<"No\n";
}
return 0;
}
B Eezie and Pie
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
const int N=2e6+10,M=1e6+5;
int n,m,k;
int h[N],ne[N<<1],ver[N<<1],tot=0;
int dep[N],fa[N][22]; //fa[i][k]表示节点i的上2^k层的祖先是哪个点
int ans[N];
void add(int x,int y) {
ver[++tot]=y; ne[tot]=h[x]; h[x]=tot;
}
void dfs(int x,int pre) {
dep[x]=dep[pre]+1;
fa[x][0]=pre;
for(int i=1;i<=21;i++)
fa[x][i]=fa[fa[x][i-1]][i-1];
for(int i=h[x];i;i=ne[i]) {
int y=ver[i];
if(y==pre) continue;
dfs(y,x);
}
}
int ask(int x,int k) {
for(int i=0;i<=22;i++) {
if((k>>i)&1) x=fa[x][i];
}
return x;
}
void query(int x,int fa) {
for(int i=h[x];i;i=ne[i]) {
int y=ver[i];
if(y==fa) continue;
query(y,x);
ans[x]+=ans[y];
}
}
void solve() {
cin>>n;
int x,y,d;
for(int i=2;i<=n;i++) {
cin>>x>>y;
add(x,y); add(y,x);
}
dfs(1,0);
for(int i=1;i<=n;i++) {
cin>>d; y=ask(i,d+1);
ans[i]++; ans[y]--;
}
query(1,0);
for(int i=1;i<=n;i++) {
if(i==1) cout<<ans[i];
else cout<<" "<<ans[i];
}
}
int main(){
//freopen("data.in","r",stdin);
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int T=1; //cin>>T;
while(T--) {
//init();
solve();
}
return 0;
}