a、度度熊與數字
直接暴力列舉v的因子
找到答案之後對答案排一下序輸出即可;
#include #define ll long long
using namespace std;
const int maxn = 1005;
int arr[1000] = ;
int arrr[1000] = ;
int factor(int n)
}if (n == (num*num)) arr[count1++] = num;
arr[count1++] = n;
return count1;
}int main()
int ans = 1;
sort(arr, arr + cnt);
cnt = unique(arr, arr + cnt) - arr;
for(int i = 1; i < cnt; i++)
}printf("%d\n",ans);
for(int i = 0; i < ans - 1; i++)
printf("%d\n", arrr[ans - 1]);
}return 0;
}
b、度度熊與排列
從1-m列舉p,找到滿足第乙個字串的位置p,然後列舉剩下的所有串,判斷是否滿足這個p,如果滿足,由於是從小到大列舉,那麼一定是字典序最小的,p[i] 就是這個值,否則往後繼續找
#include #define ll long long
using namespace std;
const int maxn = 1e5 +10;
char a[30][55],b[30][55];
int p[55], vis[55];
int t, n, m, f;
int solve()
}if(flag) }}
if(!flag) return -1;
}return 1;
}int main()
memset(vis, 0, sizeof(vis));
int flag = solve();
if(flag == 1)
}else
puts("-1");
}return 0;
}
c、度度熊與表示式 1
判斷最終結果的每一位是否能夠被構造出來,能構造出來的話,就讓他構造一次,如果構造多次,按位異或可能會讓這一位變成0,由於數字1按位異或只會影響最後一位,所以我們不管最後一位,先把前面的位構造出來,剩下偶數個1異或 就是0,奇數個就是1
#include #define ll long long
using namespace std;
const int maxn = 3e6 +10;
char s[maxn];
int vis[30], t;
int main()
}cnt = 1;
}else cnt++;
}for(int j = 21; j > 0; j--)
}int ans = 0;
for(int i = 21; i > 0; i--)
ans += (len + 1 - ans) % 2;
printf("%d\n", ans);
}return 0;
}
百度之星 初賽第二場 B題
怎麼說呢,只能說自己還不夠熟練,能力還不夠,細心成都還不夠吧。這樣的二分題目在poj的訓練計畫裡面有類似的題目,自己也是都刷了,可是在調這道題目的時候廢了老大的盡了,比賽結束後聽polla的一句思路 找出最大的t,如果按t分類,可分出1組,按0分類分出n組,二分列舉t然後利用並查集判斷分出多少種類。...
百度之星 初賽第二場 B題
怎麼說呢,只能說自己還不夠熟練,能力還不夠,細心成都還不夠吧。這樣的二分題目在poj的訓練計畫裡面有類似的題目,自己也是都刷了,可是在調這道題目的時候廢了老大的盡了,比賽結束後聽polla的一句思路 找出最大的t,如果按t分類,可分出1組,按0分類分出n組,二分列舉t然後利用並查集判斷分出多少種類。...
2019百度之星初賽第二場 度度熊與排列
problem description 度熊有乙個機器,這個機器有乙個 1 m 的排列 p 1.m 當作引數,若丟進乙個長度為 m 的字串,此機器會將此字串重新排列後再輸出,重新排列的方式為 原本第 iii 個位置的字元會變到第 p i 個位置。舉例來說,當 m 3 p 1 3,p 2 1,p 3 ...