怎么做国内网站吗,企业推广方案范例,泰安市做网站的公司,属于自己的网站Codeforces Round #739 (Div. 3) A. Dislike of Threes 
找到第kkk个既不是333的倍数#xff0c;个位数上也不是333的数#xff0c;也已预处理然后O(1)O(1)O(1)输出#xff0c;也可直接forforfor循环暴力。 
#include bits/stdc.husing namespace std;int main() {/…Codeforces Round #739 (Div. 3) A. Dislike of Threes 
找到第kkk个既不是333的倍数个位数上也不是333的数也已预处理然后O(1)O(1)O(1)输出也可直接forforfor循环暴力。 
#include bits/stdc.husing namespace std;int main() {// freopen(in.txt, r, stdin);// freopen(out.txt, w, stdout);vectorint a;for (int i  1; i  2000; i) {if (i % 3  0 || i % 10  3) {continue;}a.push_back(i);}int T, n;cin  T;while (T--) {cin  n;cout  a[n - 1]  \n;}return 0;
}B. Who’s Opposite? 
由2×n2 \times n2×n个数按照顺序构成一圈iii的对立是ini  nin给定两个对立的a,ba, ba,b求ccc的对立是谁。 
容易发现abs(a−b)nabs(a - b)  nabs(a−b)n所以只要判断a,b,ca, b, ca,b,c是否合法≤2×n\le 2 \times n≤2×n然后判断ccc在前半圈还是后半圈即可。 
#include bits/stdc.husing namespace std;int main() {// freopen(in.txt, r, stdin);// freopen(out.txt, w, stdout);int T;cin  T;while (T--) {int a, b, c;cin  a  b  c;if (a  b) {swap(a, b);}int haf  b - a;if (c  haf * 2 || a  haf * 2 || b  haf * 2) {puts(-1);}else {if (c  haf) {printf(%d\n, c - haf);}else {printf(%d\n, c  haf);}}}return 0;
}C. Infinity Table 
可以得到第iii次书写有2×i−12 \times i - 12×i−1个数字所以直接模拟即可复杂度TkT \sqrt kTk当然也可以预处理一下然后二分O(kTlogk)O(\sqrt k  T \log k)O(kTlogk)。 
#include bits/stdc.husing namespace std;int main() {// freopen(in.txt, r, stdin);// freopen(out.txt, w, stdout);int T;cin  T;while (T--) {int n;cin  n;for (int i  1; ; i) {int cur  2 * i - 1;if (n  cur) {n - cur;}else {if (n  i) {printf(%d %d\n, n, i);}else {n - i;printf(%d %d\n, i, i - n);}break;}}}return 0;
}D. Make a Power of Two 
给定一个数字字符串可以移走其中任意数字或者在末尾添加任意数字要求在最少的步骤将其变为222的幂次。 
考虑得到2602 ^{60}260以内所有222的幂次数字的字符串让给定字符串在上面按照顺序匹配 
找到能匹配上的一个最大子序列然后计算操作次数不断取最小值即可整体复杂度O(60×10×T)O(60 \times 10 \times T)O(60×10×T)。 
#include bits/stdc.husing namespace std;string a[60];void init() {for (int i  0; i  60; i) {long long cur  1ll  i;while (cur) {a[i]  char(cur % 10  0);cur / 10;}reverse(a[i].begin(), a[i].end());}
}int f(string str) {int ans  0x3f3f3f3f;for (int i  0; i  60; i) {int sum  0, p1  0, p2  0, n  str.size(), m  a[i].size();while (p1  n  p2  m) {if (str[p1]  a[i][p2]) {p1, p2, sum;}else {p1;}}ans  min(ans, n - sum  m - p2);}return ans;
}int main() {// freopen(in.txt, r, stdin);// freopen(out.txt, w, stdout);init();int T;cin  T;while (T--) {string str;cin  str;cout  min(f(str), (int)str.size()  1)  \n;}return 0;
}E. Polycarp and String Transformation 
考虑对串从后往前开始做不难得到删除字母的顺序我们再对字母的个数统计一下加入字母ccc是在第kkk次删除总共出现了xxx次 
那么我们可以得出字母ccc在原串中出现的次数就是xk\frac{x}{k}kx次通过这个我们可以统计出原串的长度 
然后再对原串O(不同字母个数×lenth)O(不同字母个数 \times lenth)O(不同字母个数×lenth)统计模拟一下即可得到一个新的串然后与给定串对比一下是否一样即可。 
#include bits/stdc.husing namespace std;const int N  5e5  10;int num[30], vis[N], len, cnt, n;char str[N];bool judge(int len) {string s;for (int i  1; i  len; i) {s  str[i];}string ans  s;for (int i  1; i  cnt; i) {string cur  ;for (auto it : s) {if (vis[i]  it - a) {continue;}cur  it;}ans  cur;s  cur;}if (n ! ans.size()) {return false;}for (int i  1; i  n; i) {if (str[i] ! ans[i - 1]) {return false;}}return true;
}int main() {// freopen(in.txt, r, stdin);// freopen(out.txt, w, stdout);int T;scanf(%d, T);while (T--) {scanf(%s, str  1);n  strlen(str  1);for (int i  n; i  1; i--) {num[str[i] - a];if (num[str[i] - a]  1) {vis[cnt]  str[i] - a;}}len  0;reverse(vis  1, vis  1  cnt);for (int i  1; i  cnt; i) {len  num[vis[i]] / i;}if (judge(len)) {for (int i  1; i  len; i) {putchar(str[i]);}putchar( );for (int i  1; i  cnt; i) {putchar(char(vis[i]  a));}puts();}else {puts(-1);}for (int i  0; i  26; i) {num[i]  0;}cnt  0;}return 0;
}F. Nearest Beautiful Number  
easyhardeasy\ hardeasy hard的做法都是一样的考虑数位dpdpdp 
我们定义f[i][j][k]f[i][j][k]f[i][j][k]表示第iii位前已用数字的状态是jjj后面还剩下kkk位不同的数字可用jjj是一个最大值为210−12 ^{10} - 1210−1的二进制数。 
通过定义可以发现这个状态对于不同的给定的KKK都是没有影响的所以可以不用每次做都去memsetmemsetmemset直接dpdpdp即可。 
或者我们可以考虑定义f[i][j][k]f[i][j][k]f[i][j][k]表示第iii位前医用数字的状态是jjj总的可用的不同数位是kkk然后根据不同的KKK去转移也可。 
最后对于给定的n,Kn, Kn,K我们先数位dpdpdp得到x≤n−1x \le n - 1x≤n−1且最多有KKK位不同的数字有多少个然后二分数位dpdpdp去检验答案。 
整体复杂度O(T×10×logn10×1024×10)O(T \times 10 \times \log n  10 \times 1024 \times 10)O(T×10×logn10×1024×10)。 
#include bits/stdc.husing namespace std;int f[15][1050][15], p[15], tot, n, k;int dfs(int pos, int cur, int last, int flag, int lim) {if (last  0) {return 0;}if (!pos) {return !lim;}if (!flag  !lim  f[pos][cur][last] ! -1) {return f[pos][cur][last];}int ans  0, nex  flag ? p[pos] : 9;for (int i  0; i  nex; i) {if (lim) {if (i  0) {ans  dfs(pos - 1, cur, last, 0, 1);}else {int mins  cur  i  1 ? 0 : 1;ans  dfs(pos - 1, cur | (1  i), last - mins, flag  i  nex, 0);}}else {int mins  cur  i  1 ? 0 : 1;ans  dfs(pos - 1, cur | (1  i), last - mins, flag  i  nex, 0);}}if (!flag  !lim) {f[pos][cur][last]  ans;}return ans;
}int calc(int x) {tot  0;while (x) {p[tot]  x % 10;x / 10;}return dfs(tot, 0, k, 1, 1);
}int main() {// freopen(in.txt, r, stdin);// freopen(out.txt, w, stdout);memset(f, -1, sizeof f);int T;scanf(%d, T);while (T--) {scanf(%d %d, n, k);int cur  calc(n - 1);int l  n, r  2000000000;while (l  r) {int mid  1ll * l  r  1;if (calc(mid)  cur) {r  mid;}else {l  mid  1;}}printf(%d\n, l);}return 0;
}