首页 > 其他分享 >10.7总结

10.7总结

时间:2024-10-12 09:26:05浏览次数:7  
标签:总结 10.7 int ll cin kMaxN long using

T1

#include <fstream>

using namespace std;
using ll = long long;
using ull = unsigned long long;
using i128 = __int128;

const ll kMaxN = 3e7 + 5;

ifstream cin("A.in");
ofstream cout("A.out");

ll n, A, B, C, u[kMaxN], v[kMaxN], w[kMaxN], maxh[kMaxN];
i128 ans = 0;

ull Rand(ull &k1, ull &k2) {
  ull k3 = k1, k4 = k2;
  k1 = k4;
  k3 ^= (k3 << 23);
  k2 = k3 ^ k4 ^ (k3 >> 17) ^ (k4 >> 26);
  return k2 + k4;
}
void GetData() {
  ull x, y;
  cin >> n >> A >> B >> C >> x >> y;
  for (ll i = 1; i <= n; i++) {
    u[i] = Rand(x, y) % A + 1;
    v[i] = Rand(x, y) % B + 1;
    w[i] = Rand(x, y) % C + 1;
    if (Rand(x, y) % 3 == 0) {
      u[i] = A;
    }
    if (Rand(x, y) % 3 == 0) {
      v[i] = B;
    }
    if ((u[i] != A) && (v[i] != B)) {
      w[i] = C;
    }
  }
}
void prll(i128 x) {
  if (x >= 10) {
    prll(x / 10);
  }
  cout.put(x % 10 + '0');
}
int main() {
  GetData();
  ll maxn = 0;
  for (ll i = 1; i <= n; ++i) {
    if (u[i] == A && v[i] == B) {
      maxn = max(maxn, w[i]);
    }
  }
  ans = (i128)A * B * maxn;
  for (ll h = C; h > maxn; --h) {
    for (ll i = 1; i <= n; ++i) {
      if (w[i] == h) {
        maxh[u[i]] = max(maxh[u[i]], v[i]);
      }
    }
    for (ll i = A; i >= 1; --i) {
      maxh[i] = max(maxh[i], maxh[i + 1]);
    }
    for (ll i = 1; i <= A; ++i) {
      ans += maxh[i];
    }
  }
  prll(ans);
  return 0;
}

T2

#include <cstring>
#include <fstream>

using namespace std;
using ll = long long;

const int kMaxN = 305, kMod = 1e9 + 7;

ifstream cin("B.in");
ofstream cout("B.out");

ll n, p[kMaxN], pw[kMaxN][kMaxN], dp[kMaxN][kMaxN];

int main() {
  cin >> n;
  for (int i = 1; i < n; ++i) {
    cin >> p[i];
    pw[i][0] = 1;
    for (int j = 1; j <= n; ++j) {
      pw[i][j] = (ll)pw[i][j - 1] * (1 - p[i] + kMod) % kMod;
    }
  }
  int ans = 0;
  for (int r = 1; r <= n; ++r) {
    memset(dp, 0, sizeof(dp));
    dp[1][r] = 1;
    for (int i = 1; i < n; ++i) {
      for (int j = 1; j <= n - i + 1; ++j) {
        if (j) {
          dp[i + 1][j - 1] = (dp[i + 1][j - 1] + (ll)dp[i][j] * (1 - pw[i][j - 1] + kMod) % kMod) % kMod;
        }
        if (j < n - i + 1) {
          dp[i + 1][j] = (dp[i + 1][j] + (ll)dp[i][j] * pw[i][j] % kMod) % kMod;
        }
      }
    }
    ans = (ans + (ll)dp[n][1] * r % kMod) % kMod;
  }
  cout << ans;
  return 0;
}

T3

简单小清新分治。

#include <fstream>

using namespace std;

const int kMaxN = 1e6 + 1;

ifstream cin("C.in");
ofstream cout("C.out");

int n, ans, a[kMaxN], b[kMaxN], c[kMaxN];

void Solve(int l, int r) {
  if (l >= r) {
    if (l == r) {
      c[a[l]]--;
    }
    return;
  }
  bool f = 0;
  int pos = -1;
  for (int i = l, j = r; i <= j; i++, j--) {
    // cout << i << ' ' << j << ' ' << c[a[i]] << ' ' << c[a[j]] << '\n';
    if (c[a[i]] < b[r - l + 1]) {
      pos = i;
      break;
    }
    if (c[a[j]] < b[r - l + 1]) {
      pos = j, f = 1;
      break;
    }
  }
  if (pos > 0) {
    if (f) {
      for (int i = pos; i <= r; i++) {
        c[a[i]]--;
      }
      Solve(l, pos - 1);
      for (int i = pos + 1; i <= r; i++) {
        c[a[i]]++;
      }
      Solve(pos + 1, r);
    } else {
      for (int i = l; i <= pos; i++) {
        c[a[i]]--;
      }
      Solve(pos + 1, r);
      for (int i = l; i < pos; i++) {
        c[a[i]]++;
      }
      Solve(l, pos - 1);
    }
  } else {
    for (int i = 1; i <= n; i++) {
      c[a[i]]--;
    }
    // cout << r - l + 1 << '\n';
    ans = max(ans, r - l + 1);
  }
}

int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    c[a[i]]++;
  }
  for (int i = 1; i <= n; i++) {
    cin >> b[i];
  }
  Solve(1, n);
  cout << ans << '\n';
  return 0;
}

标签:总结,10.7,int,ll,cin,kMaxN,long,using
From: https://www.cnblogs.com/GenesisCrystal/p/18459807

相关文章

  • 10.3 总结
    T1每一个数列有\(m\)种变式,而总共有\(m^n\)个数列,所以答案是\(m^{n-1}\),赛事AC了#include<fstream>usingnamespacestd;usingll=longlong;constllkMod=1e9+7;ifstreamcin("sum.in");ofstreamcout("sum.out");llt,n,m;llfpo......
  • 2024.10.7(数据结构的栈)
    顺序栈是利用顺序存储结构实现的栈,指针top指示栈顶在顺序栈的位置。base为存储空间基地址,S.top-S.base是栈中元素的个数,类似Length。栈为空时:S.topS.base;栈满时:S.top-S.baseMAXSIZE;顺序栈,top在最高元素的上一个,base位置是最低元素,故取栈顶元素要取top-1的:队列先进先出。......
  • 10.9 总结
    T1还行,考场AC了。主要思路就是从第一列开始,对于上一列每一个一样的数的区间进行排序,最后检验一下就行了,注意对应的问题。#include<algorithm>#include<fstream>#include<vector>usingnamespacestd;constintkMaxN=305;ifstreamcin("exchange.in");ofstreamc......
  • 量化交易中常见技术指标梳理和总结
    量化交易中常见技术指标梳理和总结一、移动平均线(MA,MovingAverage)基本概念和由来​移动平均线是一种通过计算一段时间内价格的平均值来平滑价格数据的指标,用于识别价格趋势。​移动平均线的出现,很难追溯到某一个特定的人,它是在长期的市场实践和统计分析中逐渐形成......
  • LeetCode题练习与总结:单词规律--290
    一、题目描述给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入:pattern="abba",s="dogcatcatdog"输出:tr......
  • 105th 2024/10/11 模拟赛总结61
    傲慢,凭什么傲慢T1开幕雷击,认为水飞了”一眼CDQ板子啊“然后十五分钟时直接开打主要原因绝对是因为昨天场切了T1,所以飘起来了还是应该稳重一点,起码模几个不同数据再下定论实际上也真是水题,相当于板子了自己对排列不够熟悉,真的没想到是直接全局-部分正难则反?从没用上过自以......
  • 104th 2024/10/8 模拟赛总结60
    T1有感觉,因为AB组一起打,所以下意识认为是水题(实际上也不算难?)就直接开始想从深向浅直接扫一遍,能转就转显然错,从浅向深扫一遍同样不对,因为不知道往上转移的顺序比如,设该点为x,是0,有的儿子可能转移到x,其子树内转移的次数比另一个儿子多,所以就要优先它不好处理,看到数据,给了一档2e5,一......
  • 10.11日noip多校联考总结
    10.11日noip多校联考总结T1看到感觉像是一个很玄学的题目,在考场上推了大概一个多小时,又写了大概半个小时,终于调出来了。谨记:三分取mid需要进行浮点数运算。对于每一行和每一列定义两个数组来记录要加多少,因为我们只需要知道其中任意一个数就可以推出所有的数,那么考虑枚举x0,来......
  • 问题定位总结:java空字符
    在线上业务中,有个校验,校验用户输入的信息与现在表里存的信息数据是否一致。比较时忽略首尾的空字符。但收到用户反馈,在页面填入的数据和表里存的数据一致。校验却不通过。假设表里存的是“CSDN专业开发者社区”,用户填写的是“CSDN专业开发者社区   ”,后面带有空格。对于用......
  • CSS居中方法总结
    一、行内元素(1)水平居中  1.通过text-align:center<divclass="parent"><spanclass="child">我是行内元素</span></div>.parent{background-color:red;text-align:center;} 2.通过fit-content给父元素的宽度加上width:fit-cont......