[关闭]
@baobaobear 2020-03-22T14:50:44.000000Z 字数 12446 阅读 207

Contest 20

contest


A 15291200127

  1. #include <set>
  2. #include <map>
  3. #include <deque>
  4. #include <queue>
  5. #include <stack>
  6. #include <cmath>
  7. #include <ctime>
  8. #include <bitset>
  9. #include <cstdio>
  10. #include <string>
  11. #include <vector>
  12. #include <cstdlib>
  13. #include <cstring>
  14. #include <cassert>
  15. #include <iostream>
  16. #include <algorithm>
  17. #include <unordered_map>
  18. #define mem(a,b) memset(a,b,sizeof (a))
  19. #define endl '\n'
  20. #define pb push_back
  21. typedef long long ll;
  22. const int maxn=200010;
  23. const int inf=1e9;
  24. const ll mod=998244353;
  25. const double pi=acos(-1.0);
  26. using namespace std;
  27. int main()
  28. {
  29. ll n,a,b;
  30. cin>>n>>a>>b;
  31. ll ans=n/(a+b)*a;
  32. ans+=min(n%(a+b),a);
  33. cout<<ans<<endl;
  34. return 0;
  35. }

B RobsonChen

  1. #include <iostream>
  2. #include <string>
  3. #include<algorithm>
  4. #include <cmath>
  5. #include <vector>
  6. using namespace std;
  7. typedef pair<int, int> PII;
  8. int main() {
  9. string s;
  10. cin >> s;
  11. int n;
  12. int len = s.size();
  13. cin >> n;
  14. vector<pair<int, char> > f;
  15. for (int i = 1; i <= n; ++i) {
  16. int op;
  17. cin >> op;
  18. if (op == 1) {
  19. f.emplace_back(1, '0');
  20. } else {
  21. int k;
  22. cin >> k;
  23. string cur;
  24. cin >> cur;
  25. f.emplace_back(k + 1, cur[0]);
  26. }
  27. }
  28. int num = 0;
  29. for (auto i : f) {
  30. if (i.first == 1) {
  31. num++;
  32. continue;
  33. }
  34. if (num % 2 == 0) {
  35. if (i.first == 2) s.insert(0, 1, i.second);
  36. else s.push_back(i.second);
  37. } else {
  38. if (i.first == 3) s.insert(0, 1, i.second);
  39. else s.push_back(i.second);
  40. }
  41. }
  42. if (num % 2)
  43. reverse(s.begin(), s.end());
  44. cout << s << endl;
  45. return 0;
  46. }

C OUHE_csc

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<cstring>
  5. using namespace std;
  6. typedef long long LL;
  7. const int N = 10;
  8. int a[N], b[N], p[N], n;
  9. bool check(int a[])
  10. {
  11. for(int i = 0; i < n; i ++)
  12. if(a[i] != p[i]) return false;
  13. return true;
  14. }
  15. int main()
  16. {
  17. scanf("%d", &n);
  18. for(int i = 0; i < n; i ++) scanf("%d", &a[i]);
  19. for(int i = 0; i < n; i ++) scanf("%d", &b[i]);
  20. for(int i = 0; i < n; i ++) p[i] = i + 1;
  21. int r1 = -1, r2 = -1, num = 0;
  22. do{
  23. if(r1 == -1 and check(a)) r1 = num;
  24. if(r2 == -1 and check(b)) r2 = num;
  25. num ++;
  26. }while(next_permutation(p, p + n));
  27. printf("%d\n", abs(r1 - r2));
  28. return 0;
  29. }

D 15291200127

  1. #include <set>
  2. #include <map>
  3. #include <deque>
  4. #include <queue>
  5. #include <stack>
  6. #include <cmath>
  7. #include <ctime>
  8. #include <bitset>
  9. #include <cstdio>
  10. #include <string>
  11. #include <vector>
  12. #include <cstdlib>
  13. #include <cstring>
  14. #include <cassert>
  15. #include <iostream>
  16. #include <algorithm>
  17. #define mem(a,b) memset(a,b,sizeof (a))
  18. #define endl '\n'
  19. #define pb push_back
  20. typedef long long ll;
  21. const int maxn=200010;
  22. const int inf=1e9;
  23. const int mod=10000;
  24. const double pi=acos(-1.0);
  25. using namespace std;
  26. int n;
  27. struct A
  28. {
  29. int x;int y;
  30. }d[1100];
  31. int hash[11110],b[11110];
  32. int fd(A x)
  33. {
  34. int u=(x.x*x.x+x.y*x.y)%mod+1;
  35. u=hash[u];
  36. while(u)
  37. {
  38. if(d[u].x==x.x&&d[u].y==x.y)
  39. return 1;
  40. u=b[u];
  41. }
  42. return 0;
  43. }
  44. int main()
  45. {
  46. while(cin>>n)
  47. {
  48. if(n==0)
  49. break;
  50. mem(hash,0);
  51. mem(b,0);
  52. for(int i=1;i<=n;i++)
  53. {
  54. cin>>d[i].x>>d[i].y;
  55. int x=(d[i].x*d[i].x+d[i].y*d[i].y)%mod+1;
  56. b[i]=hash[x];
  57. hash[x]=i;
  58. }
  59. int ans=0;
  60. for(int i=1;i<=n;i++)
  61. for(int j=1;j<=n;j++)
  62. {
  63. if(i==j)
  64. continue;
  65. int x=d[i].x-d[j].x,y=d[i].y-d[j].y;
  66. A p,q;
  67. p.x=d[i].x-y;
  68. p.y=d[i].y+x;
  69. q.x=d[j].x-y;
  70. q.y=d[j].y+x;
  71. if(fd(p)&&fd(q))
  72. ans++;
  73. p.x=d[i].x+y;
  74. p.y=d[i].y-x;
  75. q.x=d[j].x+y;
  76. q.y=d[j].y-x;
  77. if(fd(p)&&fd(q))
  78. ans++;
  79. }
  80. cout<<ans/8<<endl;
  81. }
  82. }

E AsilenceBTF

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. #define For(i,x,y) for(int i=x; i<y; ++i)
  5. #define mem(x,y) memset(x,y,sizeof(x))
  6. #define ALL(a) a.begin(),a.end()
  7. #define PII pair<int,int>
  8. #define INF 0x3f3f3f3f
  9. #define DOF 0x7f7f7f7f
  10. #define se second
  11. #define fi first
  12. #define endl '\n'
  13. template <typename T>
  14. inline void read(T &r){
  15. static char c; r=0; int f=1;
  16. for(c=getchar(); c<'0'||c>'9'; c=getchar()) if(c=='-')f=-1;
  17. for(; c>='0'&&c<='9'; r=(r<<1)+(r<<3)+(c^48),c=getchar());
  18. r*=f;
  19. } // -_-
  20. const int N = 2e5+105;
  21. void solve(){
  22. int n; cin>>n;
  23. string s; cin>>s;
  24. int start = s.size();
  25. for(char c = 'z'; c >= 'a'; --c){
  26. string str=""; int f = 0;
  27. for(int i = 0; i < s.size(); ++i){
  28. if(s[i] == c){
  29. if(i - 1 >= 0 && s[i-1] == c - 1) continue;
  30. if(i + 1 < s.size() && s[i+1] == c - 1) continue;
  31. str.push_back(s[i]);
  32. }else str.push_back(s[i]);
  33. f++;
  34. }
  35. if(f!=s.size()) ++c;
  36. s=str;
  37. }
  38. cout<<start-s.size()<<endl;
  39. }
  40. int main(){
  41. int t = 1;
  42. // cin>>t;
  43. while(t --) solve();
  44. // system("pause");
  45. }

F AsilenceBTF

  1. #include <bits/stdc++.h>
  2. #define For(i,x,y) for(int i=x; i<y; ++i)
  3. #define mem(x,y) memset(x,y,sizeof(x))
  4. #define PII pair<long long,long long>
  5. #define INF 0x3f3f3f3f
  6. #define ll long long
  7. #define maxn 1005
  8. #define se second
  9. #define fi first
  10. #define endl '\n'
  11. using namespace std;
  12. const int N=100000;
  13. int pose[N],a[N];
  14. int main(){
  15. int t,n,tot=2;
  16. for(int i=2 ; ; ++i){
  17. a[i]=(i-1)*i/2; ++tot;
  18. if(a[i]>1000000000) break;
  19. }
  20. cin>>t;
  21. while(t--){
  22. cin>>n;
  23. mem(pose,0);
  24. printf("13");
  25. int p=0;
  26. for(;;){
  27. int x=lower_bound(a+2,a+tot,n)-a;
  28. if(a[x]>n)--x;
  29. p=max(p,x);
  30. while(n>=a[x]){
  31. n-=a[x]; ++pose[x];
  32. }
  33. if(n<=0) break;
  34. }
  35. For(i,2,N){
  36. if(i>p) break;
  37. printf("3");
  38. while(pose[i]--) printf("7");
  39. }
  40. printf("\n");
  41. }
  42. // system("pause");
  43. return 0;
  44. }

G puluo

  1. #include<stdio.h>
  2. #include<string.h>
  3. int dp[1000005][2],num[1000005]={0};
  4. char tmp[1000005];
  5. int min(int a,int b){
  6. return a<b?a:b;
  7. }
  8. int main()
  9. {
  10. int len,ans;
  11. for(int i=0;i<1000005;i++)for(int j=0;j<2;j++)dp[i][j]=99;
  12. scanf("%s",tmp);
  13. len=strlen(tmp);
  14. for(int i=1;i<=len;i++)num[i]=tmp[i-1]-'0';
  15. dp[len][0]=num[len];dp[len][1]=10-num[len];
  16. for(int i=len-1;i>=0;i--)
  17. {
  18. /*数位*/
  19. dp[i][0]=min(dp[i+1][0]+num[i],dp[i+1][1]+num[i]+1),
  20. dp[i][1]=min(10+dp[i+1][0]-num[i],10+dp[i+1][1]-(num[i]+1));
  21. }
  22. ans=min(dp[0][0],dp[0][1]);
  23. printf("%d\n",ans);
  24. }

H AsilenceBTF

  1. // #include<bits/stdc++.h>
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<algorithm>
  6. #include<queue>
  7. using namespace std;
  8. typedef long long ll;
  9. #define For(i,x,y) for(int i=x; i<y; ++i)
  10. #define mem(x,y) memset(x,y,sizeof(x))
  11. #define ALL(a) a.begin(),a.end()
  12. #define PII pair<int,int>
  13. #define INF 0x3f3f3f3f
  14. #define DOF 0x7f7f7f7f
  15. #define se second
  16. #define fi first
  17. #define endl '\n'
  18. template <typename T>
  19. inline void read(T &r){
  20. static char c; r=0; int f=1;
  21. for(c=getchar(); c<'0'||c>'9'; c=getchar()) if(c=='-')f=-1;
  22. for(; c>='0'&&c<='9'; r=(r<<1)+(r<<3)+(c^48),c=getchar());
  23. r*=f;
  24. } // -_-
  25. const int N = 1e4 + 105;
  26. struct node{
  27. int pi, di;
  28. bool operator<(const node&tl) const{
  29. return di < tl.di;
  30. }
  31. }a[N];
  32. priority_queue<int>que;
  33. int main(){
  34. int n;
  35. while(cin>>n){
  36. for(int i = 1; i <= n; ++i){
  37. scanf("%d%d", &a[i].pi, &a[i].di);
  38. }
  39. while(!que.empty()) que.pop();
  40. sort(a + 1, a + 1 + n);
  41. int tot = n, ans = 0;
  42. for(int i = 10000; i >= 1; --i){
  43. while(a[tot].di >= i && tot >= 1){
  44. que.push(a[tot].pi);
  45. --tot;
  46. }
  47. if(que.empty()) continue;
  48. ans += que.top(); que.pop();
  49. }
  50. cout<<ans<<endl;
  51. }
  52. }

I rubbish_is_me

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<sstream>
  5. #include<string>
  6. #include<string.h>
  7. #include<cmath>
  8. #include<stack>
  9. #include<queue>
  10. #include<vector>
  11. #include<map>
  12. #define E (2.71828182)
  13. #define PI (3.1415926535898)
  14. #define mem(a,b) memset(a,b,sizeof(a))
  15. #define _max(a,b,c) (max(a,b)>c?max(a,b):c)
  16. #define mod 1000000007
  17. #include<set>
  18. #define gc getchar
  19. #define debug(a) cout << "*" << a << "*" << endl
  20. using namespace std;
  21. typedef long long ll;
  22. typedef unsigned long long ull;
  23. typedef pair<float, int> P;
  24. const int N = 200000;
  25. const long long MAX_V = 5005, INF = 2147483647, MOD = 998244353;
  26. #include <iostream>
  27. using namespace std;
  28. int n, a[400005], b[200005], ga[400005], gb[200005];
  29. int nex[200005];
  30. void getNext() {
  31. int *p = gb;
  32. nex[0] = -1;
  33. int j = 0;
  34. int k = -1;
  35. while (j < n - 1) {
  36. if (k == -1 || p[j] == p[k]) {
  37. // if (p[++j] == p[++k])
  38. // next[j] = next[k];
  39. // else
  40. nex[++j] = ++k;
  41. } else {
  42. k = nex[k];
  43. }
  44. }
  45. }
  46. bool KMP() {
  47. bool f = false;
  48. int *t = ga, *p = gb;
  49. int i = 0; // 主串的位置
  50. int j = 0; // 模式串的位置
  51. while (i < 2 * n - 1) {
  52. if (j == -1 || t[i] == p[j]) { // 当j为-1时,要移动的是i,当然j也要归0
  53. i++;
  54. j++;
  55. if (j == n)
  56. {
  57. f = true;
  58. printf("%d %d\n", i - j, b[0] ^ a[i - j]);
  59. j = nex[j - 1] + 1;
  60. }
  61. } else {
  62. // i不需要回溯了
  63. // i = i - j + 1;
  64. j = nex[j]; // j回到指定位置
  65. }
  66. }
  67. return f;
  68. }
  69. int main()
  70. {
  71. while (~scanf("%d", &n))
  72. {
  73. for (int i = 0; i < n; i++)
  74. {
  75. scanf("%d", &a[i]);
  76. if (i)
  77. ga[i - 1] = a[i - 1] ^ a[i];
  78. }
  79. ga[n - 1] = a[n - 1] ^ a[0];
  80. for (int i = 0; i < n; i++)
  81. {
  82. scanf("%d", &b[i]);
  83. if (i)
  84. gb[i - 1] = b[i - 1] ^ b[i];
  85. }
  86. gb[n - 1] = b[n - 1] ^ b[0];
  87. for (int i = n; i < 2 * n; i++) ga[i] = ga[i - n];
  88. getNext();
  89. if(!KMP()) printf("\n");
  90. }
  91. }

J 15291200127

  1. #include <set>
  2. #include <map>
  3. #include <deque>
  4. #include <queue>
  5. #include <stack>
  6. #include <cmath>
  7. #include <ctime>
  8. #include <bitset>
  9. #include <cstdio>
  10. #include <string>
  11. #include <vector>
  12. #include <cstdlib>
  13. #include <cstring>
  14. #include <cassert>
  15. #include <iostream>
  16. #include <algorithm>
  17. #include <unordered_map>
  18. #define mem(a,b) memset(a,b,sizeof (a))
  19. #define endl '\n'
  20. #define pb push_back
  21. typedef long long ll;
  22. const int maxn=200010;
  23. const int inf=1e9;
  24. const ll mod=998244353;
  25. const double pi=acos(-1.0);
  26. using namespace std;
  27. int main()
  28. {
  29. std::ios::sync_with_stdio(false);
  30. int n,p;
  31. string s;
  32. cin>>n>>p>>s;
  33. ll ans=0,x=1,a[11100],b=0;
  34. if (p==2||p==5)
  35. {
  36. for (int i=0;i<n;i++)
  37. if ((s[i]-'0')%p==0)
  38. ans+=i+1;
  39. }
  40. else
  41. {
  42. a[0]=1;
  43. for (int i=n-1;i>=0;i--)
  44. {
  45. b+=(s[i]-'0')*x;
  46. b%=p;
  47. ans+=a[b]++;
  48. x=x*10%p;
  49. }
  50. }
  51. cout<<ans<<endl;
  52. return 0;
  53. }

K baobaobear

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <string>
  5. #include <vector>
  6. #include <stack>
  7. #include <deque>
  8. #include <queue>
  9. #include <list>
  10. #include <limits>
  11. #include <set>
  12. #include <map>
  13. #include <functional>
  14. #include <inttypes.h>
  15. #include <stdint.h>
  16. #include <limits.h>
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <string.h>
  20. #include <math.h>
  21. #include <time.h>
  22. using namespace std;
  23. typedef long long ll;
  24. #ifndef PRId64
  25. #define PRId64 "lld"
  26. #endif
  27. #ifndef SCNd64
  28. #define SCNd64 "lld"
  29. #endif
  30. #define SC sc()
  31. #define PT pr()
  32. #define NL pt_nl()
  33. #define FORi(i,b,e) for (int i = (b), _ = (e); i < _; ++i)
  34. #define FORe(i,b,e) for (int i = (b), _ = (e); i <= _; ++i)
  35. #define FORre(i,b,e) for (int i = (b), _ = (e); i >= _; --i)
  36. static int sc_ret = 0;
  37. struct pt_nl {};
  38. struct sc
  39. {
  40. sc& operator>>(char& v) { v = sc_ret = getchar(); return *this; }
  41. sc& operator>>(int& v) { /*sc_ret = read(v);*/ sc_ret = scanf("%d", &v); return *this; }
  42. sc& operator>>(unsigned& v) { sc_ret = scanf("%u", &v); return *this; }
  43. sc& operator>>(double& v) { sc_ret = scanf("%lf", &v); return *this; }
  44. sc& operator>>(char* v) { sc_ret = scanf("%s", v); return *this; }
  45. sc& operator>>(string& v) { sc_ret = (bool)(cin >> v); return *this; }
  46. sc& operator>>(ll& v) { sc_ret = read(v); return *this; }
  47. sc& ch(char& v) { sc_ret = scanf(" %c", &v); return *this; }
  48. sc& gets(char* v) { sc_ret = fgets(v, INT_MAX, stdin) != 0; v[strlen(v) - 1] = 0; return *this; }
  49. operator bool() const { return sc_ret > 0; }
  50. template <typename T>
  51. int read(T& v)
  52. {
  53. T x = 0, k = 1;
  54. int c = getchar();
  55. while (c < '0' || c > '9')
  56. {
  57. if (c == '-') k = -1;
  58. c = getchar();
  59. }
  60. while (c >= '0' && c <= '9') x = (x << 3) + (x << 1) + (c - 48), c = getchar();
  61. v = x * k;
  62. return c;
  63. }
  64. };
  65. struct pr
  66. {
  67. pr& ln() { putchar('\n'); return *this; }
  68. pr& operator<<(const pt_nl& nl) { putchar('\n'); return *this; }
  69. pr& operator<<(char v) { putchar(v); return *this; }
  70. pr& operator<<(int v) { write(v); return *this; }
  71. pr& operator<<(double v) { printf("%.2f", v); return *this; }
  72. pr& operator()(const char* fmt, double v) { printf(fmt, v); return *this; }
  73. pr& operator<<(const char* v) { printf("%s", v);return *this; }
  74. pr& operator<<(string v) { printf("%s", v.c_str());return *this; }
  75. pr& operator<<(ll v) { write(v);return *this; }
  76. template <typename T>
  77. void write(T v)
  78. {
  79. int cnt = 0; char c[23];
  80. if (v == 0)
  81. {
  82. putchar('0');
  83. return;
  84. }
  85. if (v < 0) putchar('-'), v = -v;
  86. while (v) c[++cnt] = (v % 10) + 48, v /= 10;
  87. while (cnt > 0) putchar(c[cnt--]);
  88. }
  89. template <typename T>
  90. void ln(T* arr, int size)
  91. {
  92. if (size > 0)
  93. {
  94. (*this)(arr[0]);
  95. for (int i = 1; i < size; ++i)
  96. {
  97. putchar(' ');
  98. (*this)(arr[i]);
  99. }
  100. putchar('\n');
  101. }
  102. }
  103. template <typename T>
  104. void muln(T* arr, int size)
  105. {
  106. for (int i = 0; i < size; ++i)
  107. {
  108. (*this)(arr[i]);
  109. putchar('\n');
  110. }
  111. }
  112. };
  113. const int inf = 0x3f3f3f3f;
  114. const int mod = 1000000007;
  115. const int maxn = 2000000 + 10;
  116. struct seg_tree
  117. {
  118. struct node
  119. {
  120. ll max;
  121. ll min;
  122. ll lz_add;
  123. node() { max = min = lz_add = 0; }
  124. };
  125. int sz;
  126. vector<node> d;
  127. inline int lson(int tp) { return tp * 2 + 1; }
  128. inline int rson(int tp) { return tp * 2 + 2; }
  129. ll get_max(int l, int r, int tl, int tr, int tp)
  130. {
  131. if (l <= tl && tr <= r)
  132. {
  133. return d[tp].max;
  134. }
  135. int tmid = (tl + tr) / 2;
  136. if (d[tp].lz_add != 0)
  137. {
  138. update_add(tl, tmid, d[tp].lz_add, tl, tmid, lson(tp));
  139. update_add(tmid, tr, d[tp].lz_add, tmid, tr, rson(tp));
  140. d[tp].lz_add = 0;
  141. }
  142. ll ret = INT64_MIN;
  143. if (l < tmid) ret = max(ret, get_max(l, r, tl, tmid, lson(tp)));
  144. if (r > tmid) ret = max(ret, get_max(l, r, tmid, tr, rson(tp)));
  145. return ret;
  146. }
  147. ll get_min(int l, int r, int tl, int tr, int tp)
  148. {
  149. if (l <= tl && tr <= r)
  150. {
  151. return d[tp].min;
  152. }
  153. int tmid = (tl + tr) / 2;
  154. if (d[tp].lz_add != 0)
  155. {
  156. update_add(tl, tmid, d[tp].lz_add, tl, tmid, lson(tp));
  157. update_add(tmid, tr, d[tp].lz_add, tmid, tr, rson(tp));
  158. d[tp].lz_add = 0;
  159. }
  160. ll ret = INT64_MAX;
  161. if (l < tmid) ret = min(ret, get_min(l, r, tl, tmid, lson(tp)));
  162. if (r > tmid) ret = min(ret, get_min(l, r, tmid, tr, rson(tp)));
  163. return ret;
  164. }
  165. void build(int a[], int alen, int tl, int tr, int tp)
  166. {
  167. if (tl + 1 == tr)
  168. {
  169. if (tl < alen)
  170. {
  171. d[tp].max = a[tl];
  172. d[tp].min = a[tl];
  173. }
  174. else
  175. {
  176. d[tp].max = 0;
  177. d[tp].min = 0;
  178. }
  179. return;
  180. }
  181. int tmid = (tl + tr) / 2;
  182. build(a, alen, tl, tmid, lson(tp));
  183. build(a, alen, tmid, tr, rson(tp));
  184. d[tp].max = max(d[lson(tp)].max, d[rson(tp)].max);
  185. d[tp].min = min(d[lson(tp)].min, d[rson(tp)].min);
  186. }
  187. void build(int a[], int alen)
  188. {
  189. build(a, alen, 0, sz, 0);
  190. }
  191. void update_add(int l, int r, ll v, int tl, int tr, int tp)
  192. {
  193. if (l <= tl && tr <= r)
  194. {
  195. d[tp].max += v;
  196. d[tp].min += v;
  197. d[tp].lz_add += v;
  198. return;
  199. }
  200. int tmid = (tl + tr) / 2;
  201. if (d[tp].lz_add != 0)
  202. {
  203. update_add(tl, tmid, d[tp].lz_add, tl, tmid, lson(tp));
  204. update_add(tmid, tr, d[tp].lz_add, tmid, tr, rson(tp));
  205. d[tp].lz_add = 0;
  206. }
  207. if (l < tmid) update_add(l, r, v, tl, tmid, lson(tp));
  208. if (r > tmid) update_add(l, r, v, tmid, tr, rson(tp));
  209. d[tp].max = max(d[lson(tp)].max, d[rson(tp)].max);
  210. d[tp].min = min(d[lson(tp)].min, d[rson(tp)].min);
  211. }
  212. void update_add(int l, int r, ll v)
  213. {
  214. update_add(l, r + 1, v, 0, sz, 0);
  215. }
  216. void init(int size)
  217. {
  218. sz = size;
  219. while (sz & (sz - 1)) sz += sz&-sz;
  220. d.resize(sz * 2);
  221. }
  222. ll get_min(int l, int r)
  223. {
  224. return get_min(l, r + 1, 0, sz, 0);
  225. }
  226. ll get_max(int l, int r)
  227. {
  228. return get_max(l, r + 1, 0, sz, 0);
  229. }
  230. };
  231. int main()
  232. {
  233. int n, m;
  234. SC >> n >> m;
  235. seg_tree st;
  236. st.init(n + 4);
  237. FORi(i, 0, m)
  238. {
  239. int o, l, r, a, b;
  240. SC >> o >> l >> r;
  241. if (o == 1)
  242. {
  243. int mn = 0, mx = 0;
  244. if (l < r)
  245. {
  246. mn = st.get_min(l + 1, r);
  247. mx = st.get_max(l + 1, r);
  248. }
  249. if (mn == 0 && mx == 0)
  250. {
  251. PT << 1 << NL;
  252. }
  253. else
  254. {
  255. PT << 0 << NL;
  256. }
  257. }
  258. else
  259. {
  260. SC >> a >> b;
  261. st.update_add(l, l, a);
  262. if (l < r)
  263. st.update_add(l + 1, r, b);
  264. st.update_add(r + 1, r + 1, -a - b * (r - l));
  265. }
  266. }
  267. return 0;
  268. }

L

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注