[关闭]
@baobaobear 2020-03-15T11:07:50.000000Z 字数 7396 阅读 173

Contest 19

contest


A 541907010220

  1. #include<iostream>
  2. #include<stack>
  3. #include<cstdio>
  4. #include<map>
  5. #include<set>
  6. #include<queue>
  7. #include<cstring>
  8. #include<cmath>
  9. #include<vector>
  10. #include<algorithm>
  11. using namespace std;
  12. typedef long long ll;
  13. #define me(a,b) memset(a,b,sizeof(a))
  14. #define inf 0x3f3f3f3f
  15. const int N=500005;
  16. const int M=200005;
  17. int main()
  18. {
  19. int n,d;
  20. cin>>n>>d;
  21. int q=2*d+1;
  22. if(n%q==0)cout<<n/q<<endl;
  23. else cout<<n/q+1<<endl;
  24. return 0;
  25. }

B 541907190117

  1. #include<set>
  2. #include<map>
  3. #include<list>
  4. #include<stack>
  5. #include<queue>
  6. #include<cmath>
  7. #include<cstdio>
  8. #include<cctype>
  9. #include<string>
  10. #include<vector>
  11. #include<climits>
  12. #include<cstring>
  13. #include<cstdlib>
  14. #include<iostream>
  15. #include<algorithm>
  16. #define endl '\n'
  17. #define rtl rt<<1
  18. #define rtr rt<<1|1
  19. #define lson rt<<1, l, mid
  20. #define rson rt<<1|1, mid+1, r
  21. #define maxx(a, b) (a > b ? a : b)
  22. #define minn(a, b) (a < b ? a : b)
  23. #define zero(a) memset(a, 0, sizeof(a))
  24. #define INF(a) memset(a, 0x3f, sizeof(a))
  25. #define IOS ios::sync_with_stdio(false)
  26. #define _test printf("==================================================\n")
  27. using namespace std;
  28. typedef long long ll;
  29. typedef pair<int, int> P;
  30. typedef pair<ll, ll> P2;
  31. const double pi = acos(-1.0);
  32. const double eps = 1e-7;
  33. const ll MOD = 1000000007LL;
  34. const int INF = 0x3f3f3f3f;
  35. const int _NAN = -0x3f3f3f3f;
  36. const double EULC = 0.5772156649015328;
  37. const int NIL = -1;
  38. template<typename T> void read(T &x){
  39. x = 0;char ch = getchar();ll f = 1;
  40. while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}
  41. while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
  42. }
  43. const int maxn = 1e4+10;
  44. ll arr[maxn];
  45. int main(void) {
  46. ll l, r;
  47. while(~scanf("%lld%lld", &l, &r)) {
  48. if (l>r) swap(l, r);
  49. int kase = 0;
  50. for (ll i = l; i<=r && i<=l+10000LL; ++i, ++kase)
  51. arr[kase] = i%2019LL;
  52. sort(arr, arr+kase);
  53. int pos = unique(arr, arr+kase)-arr;
  54. ll ans = INF;
  55. for (int i = 0; i<pos; ++i)
  56. for (int j = i+1; j<pos; ++j)
  57. ans = min(ans, arr[i]*arr[j]%2019);
  58. printf("%lld\n", ans);
  59. }
  60. return 0;
  61. }

C lnkkerst

  1. #include <iostream>
  2. #define int long long
  3. using namespace std;
  4. int a[500010], n;
  5. signed main() {
  6. ios::sync_with_stdio(0);
  7. cin.tie(NULL);
  8. cin >> n;
  9. for(int i = 1; i <= n; ++i) {
  10. cin >> a[i];
  11. }
  12. int last = 0;
  13. for(int i = 1; i <= n; i += 2) {
  14. last += a[i];
  15. }
  16. for(int i = 2; i <= n; i += 2) {
  17. last -= a[i];
  18. }
  19. cout << last;
  20. for(int i = 2; i <= n; ++i) {
  21. cout << ' ' << (last = a[i - 1] * 2 - last);
  22. }
  23. return 0;
  24. }

D rubbish_is_me

  1. #include<iostream>
  2. #include<set>
  3. #include<string.h>
  4. #include<cmath>
  5. #include<queue>
  6. #include<algorithm>
  7. using namespace std;
  8. typedef long long ll;
  9. typedef pair<int, int> P;
  10. ll r, b, x, y;
  11. ll get(ll m)
  12. {
  13. ll k = r - m;
  14. ll z = b - y * m;
  15. return m + min(z, k / x);
  16. }
  17. ll bitfound(ll l, ll r)
  18. {
  19. while(l < r - 1)
  20. {
  21. ll mid = (l + r) / 2;
  22. ll mmid = (mid + r) / 2;
  23. if( get(mid) > get(mmid))
  24. r = mmid;
  25. else
  26. l = mid;
  27. }
  28. return max(get(l), get(r));
  29. }
  30. signed main(){
  31. while (~scanf("%lld%lld%lld%lld", &r, &b, &x, &y))
  32. {
  33. //if (b >= r * y)
  34. // printf("%lld\n", r);
  35. //else if (r >= b * x)
  36. // printf("%lld\n", b);
  37. //else
  38. //{
  39. printf("%lld\n", bitfound(0, min(b / y, r)));
  40. //}
  41. }
  42. }

E 541907190117

  1. //https://www.cnblogs.com/shuitiangong/
  2. #include<set>
  3. #include<map>
  4. #include<list>
  5. #include<stack>
  6. #include<queue>
  7. #include<cmath>
  8. #include<cstdio>
  9. #include<cctype>
  10. #include<string>
  11. #include<vector>
  12. #include<climits>
  13. #include<cstring>
  14. #include<cstdlib>
  15. #include<iostream>
  16. #include<algorithm>
  17. #define endl '\n'
  18. #define rtl rt<<1
  19. #define rtr rt<<1|1
  20. #define lson rt<<1, l, mid
  21. #define rson rt<<1|1, mid+1, r
  22. #define maxx(a, b) (a > b ? a : b)
  23. #define minn(a, b) (a < b ? a : b)
  24. #define zero(a) memset(a, 0, sizeof(a))
  25. #define INF(a) memset(a, 0x3f, sizeof(a))
  26. #define IOS ios::sync_with_stdio(false)
  27. #define _test printf("==================================================\n")
  28. using namespace std;
  29. typedef long long ll;
  30. typedef pair<int, int> P;
  31. typedef pair<ll, ll> P2;
  32. const double pi = acos(-1.0);
  33. const double eps = 1e-7;
  34. const ll MOD = 1000000007LL;
  35. const int INF = 0x3f3f3f3f;
  36. const int _NAN = -0x3f3f3f3f;
  37. const double EULC = 0.5772156649015328;
  38. const int NIL = -1;
  39. template<typename T> void read(T &x){
  40. x = 0;char ch = getchar();ll f = 1;
  41. while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}
  42. while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
  43. }
  44. const int maxn = 1e2+10;
  45. bool vis[maxn];
  46. int n, d, ans;
  47. void dfs(int p, int st, int sum) {
  48. if (p==n) {
  49. if (sum == d) ++ans;
  50. return;
  51. }
  52. for (int i = st; i<10; ++i) {
  53. if (sum+i > d) break;
  54. if (!vis[i]) {
  55. vis[i] = true;
  56. dfs(p+1, i+1, sum+i);
  57. vis[i] = false;
  58. }
  59. }
  60. }
  61. int main(void) {
  62. while(~scanf("%d%d", &n, &d) && (n||d)) {
  63. ans = 0;
  64. dfs(0, 0, 0);
  65. printf("%d\n", ans);
  66. }
  67. return 0;
  68. }

F baobaopig

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[100005];
  4. int main() {
  5. int n,p,k = 0,tmp;
  6. cin >> n;
  7. while (n--){
  8. cin >> p;
  9. tmp = upper_bound(a,a + k,p,greater< int >()) - a;
  10. if (tmp == k){
  11. a[k] = p;
  12. ++ k;
  13. }
  14. else a[tmp] = p;
  15. }
  16. cout << k << endl;
  17. }

G baobaopig

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. int main()
  5. {
  6. int l, k;
  7. LL dp[105][2] = {1}, sum=0;
  8. cin >> l >> k;
  9. for (int i = 1; i <= l; i++){
  10. dp[i][0] = dp[i - 1][1];
  11. dp[i][1] = dp[i - 1][0];
  12. if (i >= k) dp[i][1] += dp[i - k][0];
  13. }
  14. for (int i = 1; i <= l; i++) sum += dp[i][1];
  15. cout << sum << endl;
  16. }

H rubbish_is_me

  1. #include<iostream>
  2. #include<set>
  3. #include<string.h>
  4. #include<cmath>
  5. #include<queue>
  6. #include<algorithm>
  7. using namespace std;
  8. typedef long long ll;
  9. typedef pair<int, int> P;
  10. /*
  11. struct edge{
  12. int to, next;
  13. }e[200005];
  14. int head[100005], tot, n, k, x, y, mod = 1000000007;
  15. void add(int u, int v)
  16. {
  17. e[tot].to = v, e[tot].next = head[u], head[u] = tot++;
  18. }
  19. int trie[700005][26], tot = 1, mark[700005], gt[258], num;
  20. char str[16000005];
  21. void insert(char *s, int rt, int k)
  22. {
  23. for (int i = 0; i < k; i++)
  24. {
  25. int x = gt[s[i]];
  26. if (trie[rt][x] == 0)
  27. {
  28. trie[rt][x] = ++tot;
  29. }
  30. rt = trie[rt][x];
  31. }
  32. mark[rt] = 1;
  33. }
  34. int n, m;
  35. signed main(){
  36. scanf("%d%d", &n, &m);
  37. scanf("%s", str);
  38. int len = strlen(str), ans = 0;
  39. for (int i = 0; i < len; i++) gt[str[i]] = 1;
  40. for (int i = 0; i <= 256; i++)
  41. if (gt[i]) gt[i] = num++;
  42. for (int i = 0; i <= len - n; i++)
  43. insert(str + i, 1, n);
  44. for (int i = 0; i <= tot; i++) ans += mark[i];
  45. printf("%d\n", ans);
  46. }*/
  47. typedef unsigned long long ull;
  48. ull base=131;
  49. ull a[16000010];
  50. char str[16000010];
  51. int n,ans=1,k;
  52. int prime=233317;
  53. ull mod=212370440130137957ll;
  54. ull hashe(char s[])
  55. {
  56. int len=n;
  57. ull ans=0;
  58. for (int i=0;i<len;i++)
  59. ans=(ans*base+(ull)s[i])%mod+prime;
  60. return ans;
  61. }
  62. int main()
  63. {
  64. scanf("%d%d",&n, &k);
  65. scanf("%s",str);
  66. int len = strlen(str);
  67. for(int i=0;i<= len - n;i++)
  68. {
  69. a[i] = hashe(str + i);
  70. }
  71. sort(a, a + len - n + 1);
  72. for(int i=0;i<len - n;i++)
  73. {
  74. if(a[i]!=a[i+1])
  75. ans++;
  76. }
  77. printf("%d",ans);
  78. }

I rubbish_is_me

  1. #include<iostream>
  2. #include<set>
  3. #include<string.h>
  4. #include<cmath>
  5. #include<queue>
  6. #include<algorithm>
  7. using namespace std;
  8. typedef long long ll;
  9. typedef pair<int, int> P;
  10. struct edge{
  11. int to, next;
  12. }e[200005];
  13. int head[100005], tot, n, k, x, y, mod = 1000000007;
  14. ll ans;
  15. void add(int u, int v)
  16. {
  17. e[tot].to = v, e[tot].next = head[u], head[u] = tot++;
  18. }
  19. void dfs(int x, int fa, int dep)
  20. {
  21. int num = 0;
  22. for (int u = head[x]; ~u; u = e[u].next)
  23. {
  24. int v = e[u].to;
  25. if (v == fa) continue;
  26. dfs(v, x, dep + 1);
  27. if (dep == 0)
  28. {
  29. ans = ans * (k - num - 1) % mod;
  30. if (k - num - 1 <= 0) ans = 0;
  31. }
  32. else
  33. {
  34. ans = ans * (k - num - 2) % mod;
  35. if (k - num - 2 <= 0) ans = 0;
  36. }
  37. num++;
  38. }
  39. }
  40. signed main(){
  41. while (~scanf("%d%d", &n, &k))
  42. {
  43. ans = k;
  44. memset(head, -1, sizeof(head));
  45. for (int i = 0; i < n - 1; i++)
  46. {
  47. scanf("%d%d", &x, &y);
  48. add(x, y), add(y, x);
  49. }
  50. dfs(1, -1, 0);
  51. printf("%lld\n", ans);
  52. }
  53. }

J

K rubbish_is_me

  1. #include<iostream>
  2. #include<set>
  3. #include<string.h>
  4. #include<cmath>
  5. #include<queue>
  6. #include<algorithm>
  7. using namespace std;
  8. typedef long long ll;
  9. typedef pair<int, int> P;
  10. /*
  11. struct edge{
  12. int to, next;
  13. }e[200005];
  14. int head[100005], tot, n, k, x, y, mod = 1000000007;
  15. void add(int u, int v)
  16. {
  17. e[tot].to = v, e[tot].next = head[u], head[u] = tot++;
  18. } */
  19. vector<P> gt[305];
  20. int mod = 1000000007, dp[305][305][305], n, m, ans;
  21. bool judge(int a, int b, int c, int r)
  22. {
  23. for (int i = 0; i < gt[r].size(); i++)
  24. {
  25. int ct = 0;
  26. if (a >= gt[r][i].first)
  27. ct++;
  28. if (b >= gt[r][i].first)
  29. ct++;
  30. if (c >= gt[r][i].first)
  31. ct++;
  32. if (ct != gt[r][i].second)
  33. return false;
  34. }
  35. return true;
  36. }
  37. signed main(){
  38. while (~scanf("%d%d", &n, &m))
  39. {
  40. for (int i = 0; i <= 300; i++) gt[i].clear();
  41. ans = 0;
  42. for (int i = 0; i < m; i++)
  43. {
  44. int a, b, c;
  45. scanf("%d%d%d", &a, &b, &c);
  46. gt[b].push_back(P(a, c));
  47. }
  48. memset(dp, 0, sizeof(dp));
  49. dp[0][0][0] = 1;
  50. for (int i = 0; i <= n; i++)
  51. {
  52. for (int j = 0; j <= n; j++)
  53. {
  54. for (int k = 0; k <= n; k++)
  55. {
  56. int x = max(i, max(j, k)) + 1;
  57. if (judge(i, j, k, x - 1) && dp[i][j][k])
  58. {
  59. dp[x][j][k] = (dp[x][j][k] + dp[i][j][k]) % mod;
  60. dp[i][x][k] = (dp[i][x][k] + dp[i][j][k]) % mod;
  61. dp[i][j][x] = (dp[i][j][x] + dp[i][j][k]) % mod;
  62. }
  63. else
  64. {
  65. dp[i][j][k] = 0;
  66. }
  67. if (x == n + 1) ans = (ans + dp[i][j][k]) % mod;
  68. }
  69. }
  70. }
  71. printf("%d\n", ans);
  72. }
  73. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注