牛客小白月赛12简录

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 using namespace std;
 5  
 6 const int maxm = 1e5 + 5;
 7 int n, m, ans;
 8 pair<int, int> p[maxm];
 9  
10 int main() {
11     ios_base::sync_with_stdio(0);
12     cin.tie(0);
13      
14     cin >> n >> m;
15     for (int i = 1; i <= m; i++) {
16         cin >> p[i].first >> p[i].second;
17     }
18     p[++m] = {n + 1, n + 1};
19     sort(p + 1, p + 1 + m);
20     for (int i = 1, last = 1, pos; i <= m; i = pos + 1){
21         if (p[i].first > last) {
22             cout << -1 << endl;
23             return 0;
24         }
25         pos = i;
26         int tmp = p[pos].second;
27         while (pos < m && p[pos + 1].first <= last) {
28             tmp = max(tmp, p[++pos].second);
29         }
30         last = tmp + 1;
31         ans++;
32         if (last > n)    break;
33     }
34     cout << ans << endl;
35     return 0;
36 }
A.贪心乱搞
 1 #include <cstdio>
 2 #include <cmath>
 3  
 4 typedef long long ll;
 5 int T;
 6 ll a, b, p;
 7  
 8 inline ll ksc(ll a, ll b, ll mod) {
 9     return ((a * b - (ll)((long double)a / mod * b) * mod) % mod + mod) % mod;
10 }
11  
12 inline ll ksm(ll a, ll b, ll p) {
13     ll res = 1ll;
14     for (; b; b >>= 1) {
15         if (b & 1)    res = ksc(res, a, p);
16         a = ksc(a, a, p);
17     }
18     return res;
19 }
20  
21 int main() {
22     for (scanf("%d", &T); T; T--) {
23         scanf("%lld %lld %lld", &a, &b, &p);
24         printf("%lld\n", ksm(a % p, b, p));
25     }
26 }
B.快速幂快速乘板子题
 1 #include <cstdio>
 2 
 3 typedef long long ll;
 4 const int maxn = 13e6 + 5;
 5 const int mod = 1e9 + 7;
 6 int n, primes[maxn], tot, val[maxn];
 7 ll ans;
 8 bool vis[maxn];
 9 
10 int ksm(int a, int b) {
11     int res = 1ll;
12     for (; b; b >>= 1) {
13         if (b & 1)    res = (ll)res * a % mod;
14         a = (ll)a * a % mod;
15     }
16     return res;
17 }
18 
19 void pre(int n) {
20     val[1] = 1;
21     for (int i = 2; i <= n; i++) {
22         if (!vis[i]) {
23             val[i] = ksm(i, n);
24             primes[++tot] = i;
25         }
26         for (int j = 1; j <= tot && primes[j] * i <= n; j++) {
27             vis[primes[j] * i] = true;
28             val[primes[j] * i] = (ll)val[primes[j]] * val[i] % mod;
29             if (i % primes[j] == 0)    break;
30         }
31     }
32 }
33 
34 int main() {
35     scanf("%d", &n);
36     pre(n);
37     for (int i = 1; i <= n; i++)
38         ans = ans ^ val[i];
39     printf("%lld\n", ans);
40     return 0;
41 }
C.线性筛暴力

猜你喜欢

转载自www.cnblogs.com/AlphaWA/p/10563993.html
今日推荐