Summer school more than 2019 cattle off the fifth training camp

It should be the easiest of things happen.

Topic links: https://ac.nowcoder.com/acm/contest/885#question


A:

Obviously it outputs n n is the answer strung together.

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 int t;
21 
22 int main() {
23     scanf("%d", &t);
24     while (t--) {
25         int n; scanf("%d", &n);
26         for (int i = 1; i <= n; i++) printf("%d", n);
27         puts("");
28     }
29     return 0;
30 }
View Code

B:

Conventional quick power absolutely not, be very power (log10) level. Full power is very title of the template.

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 const int maxn = 1e6 + 10;
21 int x0, x1, a, b, mod;
22 char s[maxn];
23 
24 struct Matrix {
25     ll mem[2][2];
26     void init() {
27         memset(mem, 0, sizeof(mem));
28     }
29     Matrix operator*(const Matrix &rhs)const {
30         Matrix ret; ret.init();
31         for (int i = 0; i < 2; i++) {
32             for (int j = 0; j < 2; j++) {
33                 for (int k = 0; k < 2; k++)
34                     ret.mem[i][j] += mem[i][k] * rhs.mem[k][j];
35                 ret.mem[i][j] %= mod;
36             }
37         }
38         return ret;
39     }
40 } mAns, mBase;
41 
42 ll solve(char *s) {
43     int len = strlen(s);
44     for (int i = len - 1; i >= 0; i--) {
45         int curr = s[i] - '0';
46         while (curr--) mAns = mAns * mBase;
47         Matrix tmp = mBase * mBase;
48         mBase = tmp * tmp;
49         mBase = mBase * mBase * tmp;
50     }
51     return mAns.mem[0][1];
52 }
53 
54 int main() {
55     mAns.init(), mBase.init();
56     scanf("%d%d%d%d", &x0, &x1, &a, &b);
57     scanf("%s %lld"S, and mod);
58      mAns.mem [ 0 ] [ 0 ] = x1, mAns.mem [ 0 ] [ 1 ] = x0;
59      mBase.mem [ 0 ] [ 0 ] = a mBase.mem [ 0 ] [ 1 ] = 1 , mBase.mem [ 1 ] [ 0 ] = i;
60      'll ans = Loose (s);
61      printf ( " % lid \ n " , ans);
62      return  0 ;
63 }
View Code

G:

Consider dp.

For all length greater than the legal subsequence m was calculated by the number of combinations; subsequence m length equal legitimate, it is determined whether the most significant bit is greater than t s highest.

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 const int mod = 998244353, maxn = 3e3 + 10;
21 int inv[maxn], fac[maxn], fiv[maxn], dp[2][maxn];
22 
23 int add(int a, int b) {
24     return a + b < mod ? a + b : a + b - mod;
25 }
26 
27 int mul(int a, int b) {
28     return (ll)a * b % mod;
29 }
30 
31 int C(int n, int m) {
32     return n < m ? 0 : mul(fac[n], mul(fiv[m], fiv[n - m]));
33 }
34 
35 int main() {
36     inv[0] = inv[1] = fac[0] = fac[1] = fiv[0] = fiv[1] = 1;
37     for (int i = 2; i < maxn; i++) {
38         inv[i] = mul(inv[mod % i], mod - mod / i);
39         fac[i] = mul(fac[i - 1], i);
40         fiv[i] = mul(fiv[i - 1], inv[i]);
41     }
42     dp[0][0] = 1;
43     int t; scanf("%d", &t);
44     while (t--) {
45         int n, m; char s[maxn], t[maxn];
46         scanf("%d%d", &n, &m); cin >> s >> t;
47         int ans = 0;
48         for (int i = 0; i < n; i++)
49             if (s[i] != '0') {
50                 for (int j = m; i + j < n; j++)
51                     ans = add(ans, C(n - i - 1, j));
52             }
53         int *dp0 = dp[0], *dp1 = dp[1];
54         size_t size = (m + 1) << 2;
55         memset(dp0, 0, size);
56         for (int i = 1; i <= n; i++) {
57             memcpy(dp1, dp0, size);
58             for (int j = 1; j <= m; j++) {
59                 // 要拿当前位
60                 if (s[n - i] > t[m - j]) dp1[j] = add(dp1[j], C(i - 1, J - . 1 ));
 61 is                  // not take this bit 
62 is                  IF (S [n-- I] == T [m - J]) DP1 [J] = the Add (DP1 [J], DP0 [J - . 1 ] );
 63 is              }
 64              the swap (DP0, DP1);
 65          }
 66          the printf ( " % D \ n- " , the Add (ANS, DP0 [m]));
 67      }
 68      return  0 ;
 69 }
View Code

H:

 

I:

Might point to a fixed triangle at the origin, and have an edge close as possible to the y-axis, is divided into two cases: not completely fit and bonded.

At this time, the second point can be calculated and the third point of the bounding rectangle, the third test point is within the rectangle to.

Enumerate all cases, a total of six kinds. Note that the answer is fixed to the output sequence XYZ three points.

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-10
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 #define Point pair<double, double>
21 const double pi = acos(-1.0);
22 int w, h;
23 
24 int solve(int a, int b, int c, Point &x, Point &y) {
25     double alpha = 0;
26     if (a <= h) x.first = 0, x.second = (double)a;
27     else {
28         x.first = sqrt((double)a * a - (double)h * h), x.second = (double)h;
29         alpha = acos((double)h / (double)a);
30     }
31     double beta = acos((double)(a * a + b * b - c * c ) / (2.0 * a * b));
32     double gamma = pi / 2.0 - alpha - beta;
33     y.first = cos(gamma) * b, y.second = sin(gamma) * b;
34     if (y.first - w > eps || y.second - h > eps || y.first < -eps || y.second < -eps) return 0;
35     return 1;
36 }
37 
38 int main() {
39     int t; scanf("%d", &t);
40     while (t--) {
41         Point x, y, z;
42         int a, b, c;
43         scanf("%d%d%d%d%d", &w, &h, &a, &b, &c);
44         if (solve(b, c, a, x, y) || solve(c, b, a, y, x)) {
45             z.first = z.second = 0; goto mark;
46         }
47         if (solve(a, c, b, x, z) || solve(c, a, b, z, x)) {
48             y.first = y.second = 0; goto mark;
49         }
50         if (solve(a, b, c, y, z) || solve(b, a, c, z, y)) {
51             x.first = x.second = 0; goto mark;
52         }
53 mark:
54         printf("%.10f %.10f %.10f %.10f %.10f %.10f\n", x.first, x.second, y.first, y.second, z.first, z.second);
55     }
56     return 0;
57 }
View Code

 

Guess you like

Origin www.cnblogs.com/JHSeng/p/11286050.html