Codeforces Round #589 (Div. 2)

Links: https://codeforces.com/contest/1228

A: attendance problems, violence found in the past from L to R.

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 bool check(int x)
 4 {
 5     int vis[10] = {0};
 6     while(x){
 7         if(vis[x % 10]) return false;
 8         vis[x % 10]++;
 9         x /= 10;
10     }
11     return true;
12 }
13 int main()
14 {
15     std::ios::sync_with_stdio(false);
16     int l, r;
17     cin >> l >> r;
18     for(int i = l;i <= r;i++){
19         if(check(i)){
20             cout << i << endl;
21             return 0;
22         }
23     }
24     cout << -1 << endl;
25     return 0;
26 }
View Code

B: color position may be determined per row r [i] +1 and c [i] + 1, and outputs 0 if the conflict, otherwise the output block number 2 ^ uncertain color.

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn = 1e3 + 50;
 4 const int mod = 1000000007;
 5 typedef long long ll;
 6 int r, c;
 7 int mp[maxn][maxn];
 8 ll pow_mod(ll x, ll n){
 9     ll res = 1;
10     while(n){
11         if(n & 1) res = res * x % mod;
12         x = x * x % mod;
13         n >>= 1;
14     }
15     return res;
16 }
17 int main()
18 {
19     std::ios::sync_with_stdio(false);
20     int n, m;
21     cin >> n >> m;
22     int ans = 0;
23     bool flag = false;
24     for(int i = 0;i < n;i++){
25         cin >> r;
26         for(int j = 0;j < r;j++)
27             mp[i][j] = 1;
28         mp[i][r] = 2;
29     }
30     for(int i = 0;i < m;i++)
31     {
32         cin >> c;
33         for(int j = 0;j < c;j++){
34             if(mp[j][i] && mp[j][i] != 1)flag = true;
35             else mp[j][i] = 1;
36         }
37         if(mp[c][i] && mp[c][i] != 2) flag = true;
38         else mp[c][i] = 2;
39     }
40     if(flag){
41         cout << 0 << endl;
42         return 0;
43     }
44     for(int i = 0;i < n;i++)
45         for(int j = 0;j < m;j++)
46         if(!mp[i][j]) ans++;
47     cout << pow_mod(2, ans) % mod << endl;
48     return 0;
49 }
View Code

C: to find the product of n-th power of the prime factor in the occurrence of x!.

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int mod = 1e9 + 7;
 5 vector<ll> vec;
 6 void init(ll n)
 7 {
 8     for(ll i = 2;i * i <= n;i++){
 9         if(n % i == 0)
10         {
11             vec.push_back(i);
12             while(n % i == 0) n /= i;
13         }
14     }
15     if(n > 1) vec.push_back(n);
16 }
17 ll pow_mod(ll x, ll n){
18     ll res = 1;
19     while(n){
20         if(n & 1) res = res * x % mod;
21         x = x * x % mod;
22         n >>= 1;
23     }
24     return res % mod;
25 }
26 ll fact_pow(ll n, ll k) {
27     ll res = 0;
28     while (n) {
29         n /= k;
30         res += n;
31     }
32     return res;
33 }
34 int main()
35 {
36     std::ios::sync_with_stdio(false);
37     ll x, n;
38     cin >> x >> n;
39     init(x);
40     ll ans = 1;
41     for(int i = 0;i < vec.size();i++){
42         ll k = fact_pow(n, vec[i]);
43         ans = ans * pow_mod(vec[i], k) % mod;
44     }
45     cout << ans % mod <<endl;
46     return 0;
47 }
View Code

D: third graph coloring, firstly a dye, and then all side connection 1 2 is not 3, the side edge connections is 1, 2 empathy and dyeing. Finally, whether the subject does not satisfy the conditions to the full.

. 1 #include <bits / STDC ++ H.>
 2  the using  namespace STD;
 . 3  const  int MAXN = 4E5 + . 5 ;
 . 4 Vector < int > G [MAXN];
 . 5  int du [MAXN];
 . 6  int Color [MAXN];
 . 7  int A [MAXN], B [MAXN];
 . 8  int FAR [MAXN];
 . 9 Vector < int > C [ . 4 ]; // save each division point in FIG. 
10  int n-, m;
 . 11  void DFS ( int V)
 12 is  {
13     for(int i = 0;i < G[v].size();i++)
14     {
15         int u = G[v][i];
16         if(color[u]) continue;
17         color[u] = 3;
18         C[3].push_back(u);
19     }
20 }
21 int main()
22 {
23     std::ios::sync_with_stdio(false);
24     cin >> n >> m;
25     //建图
26     for(int i = 1;i <= m;i++){
27         cin >> a[i] >> b[i];
28         G[a[i]].push_back(b[i]);
29         G[b[i]].push_back(a[i]);
30         du[a[i]]++;
31         du[b[i]]++;
32     }
33     //染色1.
34     color[1] = 1;
35     C[1].push_back(1);
36     far[1]= 1;
37     for(int i = 0;i < G[1].size();i++) far[ G[1][i] ] = 1;
38     for(int i = 1;i <= n;i++)
39     {
40         if(far[i] == 0)
41         {
42             color[i] = 1;
43             C[1].push_back(i);
44         }
45     }
46     //染色2
47     for(int i = 1;i <= n;i++)
48     {
49         if(!color[i])
50         {
51             color[i] = 2;
52             C[2].push_back(i);
53 
54             dfs(i);//染色3
55         }
56     }
57     if(C[1].size() + C[2].size() + C[3].size() != n)
58     {
59         cout << -1 << endl;
60         return 0 ;
 61 is      }
 62 is      IF (C [ . 1 ] .size () == 0 || C [ 2 ] .size () == 0 || C [ . 3 ] .size () == 0 )
 63 is      {
 64          COUT < <- . 1 << endl;
 65          return  0 ;
 66      }
 67      for ( int I = . 1 ; I <= n-; I ++ )
 68      {
 69          IF ! (du [I] = n-- C [Color [I]] size. ()) // check each point are not its point we have a set of edges 
70         {
71             cout << -1 << endl;
72             return 0;
73         }
74     }
75     for(int i = 0;i < C[1].size();i++) far[C[1][i] ] = 1;
76     for(int i = 0;i < C[2].size();i++) far[C[2][i] ] = 2;
77     for(int i = 0;i < C[3].size();i++) far[C[3][i] ] = 3;
78     for(int i = 1;i <= m;i++){
79         if(far[a[i]] == far[b[i]])
80         {
81             cout << -1 << endl;
82             return 0;
83         }
84     }
85     for(int i = 1;i <= n;i++){
86         cout << color[i] << " ";
87     }
88     cout << endl;
89     return 0;
90 }
View Code

 

Guess you like

Origin www.cnblogs.com/Carered/p/11617429.html