水题放送,写得依旧丑:

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std; const int INF = 2e9 + ;
typedef long long ll;
typedef pair<int, int> P;
int H, G;
ll f[][][];
int dishg[][];
int dish[], disg[];
vector<P> hh, gg; int sqr(int x) {
return x * x;
} int dis(vector<P> v1, int i, vector<P> v2, int j) {
return sqr(v1[i].first - v2[j].first) + sqr(v1[i].second - v2[j].second);
} void init() {
for (int i = ; i <= H; i++)
for (int j = ; j <= G; j++)
dishg[i][j] = dis(hh, i, gg, j);
f[][][] = INF;
for (int i = ; i <= H; i++) {
dish[i] = dis(hh, i-, hh, i);
f[i][][] = f[i-][][] + dish[i];
f[i][][] = INF;
}
for (int j = ; j <= G; j++) {
disg[j] = dis(gg, j-, gg, j);
f[][j][] = INF;
f[][j][] = INF;
}
} ll dp() {
for (int i = ; i <= H; i++) {
for (int j = ; j <= G; j++) {
ll a = min(f[i-][j][] + dish[i], f[i-][j][] + dishg[i][j]);
ll b = min(f[i][j-][] + dishg[i][j], f[i][j-][] + disg[j]);
f[i][j][] = a;
f[i][j][] = b;
}
}
return f[H][G][];
} int main() {
scanf("%d%d", &H, &G);
hh.push_back(P(, ));
gg.push_back(P(, ));
for (int i = ; i <= H; i++) {
int x, y;
scanf("%d%d", &x, &y);
hh.push_back(P(x, y));
}
for (int i = ; i <= G; i++) {
int x, y;
scanf("%d%d", &x, &y);
gg.push_back(P(x, y));
}
init();
printf("%lld\n", dp());
return ;
}

BZOJ4745

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std; const int INF = 2e9 + ;
typedef long long ll;
typedef pair<int, int> P;
int N, H, Delta;
int f[][], eat[][];
int pos1[]; int dp() {
for (int i = ; i <= H; i++) {
int maxx = ;
for (int j = ; j <= N; j++) {
f[i][j] = f[i-][j];
if (i > Delta) {
int t = i - Delta;
f[i][j] = max(f[i][j], f[t][pos1[t]]);
}
f[i][j] += eat[j][i];
if (f[i][j] > maxx) {
maxx = f[i][j];
pos1[i] = j;
}
}
}
int ans = ;
for (int i = ; i <= N; i++)
ans = max(ans, f[H][i]);
return ans;
} int main() {
scanf("%d%d%d", &N, &H, &Delta);
for (int i = ; i <= N; i++) {
int ni, pos;
for (scanf("%d", &ni); ni; ni--) {
scanf("%d", &pos);
eat[i][pos]++;
}
}
printf("%d\n", dp());
return ;
}

BZOJ1270

 #include <bits/stdc++.h>
#define ri readint()
#define gc getchar()
#define ls p << 1
#define rs p << 1 | 1
using namespace std; typedef long long ll;
const int maxn = ;
int n, m;
struct Seg {
int l, r;
bool fixed;
ll sum;
}t[maxn << ]; inline int readint() {
int x = , s = , c = gc;
while (c <= ) c = gc;
if (c == '-') s = -, c = gc;
for (; isdigit(c); c = gc)
x = x * + c - ;
return x * s;
} void build(int l, int r, int p) {
t[p].l = l, t[p].r = r;
if (l == r) {
t[p].sum = ri;
t[p].fixed = t[p].sum <= 1ll;
return;
}
int mid = (l + r) >> ;
build(l, mid, ls);
build(mid+, r, rs);
t[p].sum = t[ls].sum + t[rs].sum;
t[p].fixed = t[ls].fixed && t[rs].fixed;
} void Update(int l, int r, int p) {
if (t[p].fixed) return;
if (t[p].l == t[p].r) {
t[p].sum = sqrt(t[p].sum);
t[p].fixed = t[p].sum <= 1ll;
return;
}
int mid = (t[p].l + t[p].r) >> ;
if (l <= mid) Update(l, r, ls);
if (mid < r) Update(l ,r, rs);
t[p].sum = t[ls].sum + t[rs].sum;
t[p].fixed = t[ls].fixed && t[rs].fixed;
} ll Query(int l, int r, int p) {
if (l <= t[p].l && t[p].r <= r)
return t[p].sum;
int mid = (t[p].l + t[p].r) >> ;
ll res = 0ll;
if (l <= mid) res += Query(l, r, ls);
if (mid < r) res += Query(l, r, rs);
return res;
} int main() {
n = ri;
build(, n, );
for (m = ri; m; m--) {
int x = ri, l = ri, r = ri;
if (x == ) {
printf("%lld\n", Query(l, r, ));
} else {
Update(l, r, );
}
}
return ;
}

BZOJ3211

cf818E,计数不一定非要乘法原理,枚举标杆累加。此题性质符合尺取,l和r可不断后移。

 #include <bits/stdc++.h>
using namespace std; const int maxn = 1e5 + ;
int n, k, a[maxn];
int pri[], cnt[], t;
int b[maxn][]; void div(int k) {
for (int i = ; i * i <= k; i++) {
if (k % i == ) {
pri[++t] = i;
while (k % i == ) {
k /= i;
cnt[t]++;
}
}
}
if (k > ) {
pri[++t] = k;
cnt[t] = ;
}
} long long two_point() {
int l = , r = ;
long long ans = ;
while (l <= n) {
bool valid = false;
while (r < n && !valid) {
r++;
valid = true;
for (int j = ; j <= t; j++)
valid &= (b[r][j] - b[l-][j]) >= cnt[j];
}
if (!valid) break;
while (l <= r && valid) {
ans += n - r + ;
l++;
for (int j = ; j <= t; j++)
valid &= (b[r][j] - b[l-][j]) >= cnt[j];
}
}
return ans;
} int main() {
scanf("%d%d", &n, &k);
div(k);
for (int i = ; i <= n; i++) {
scanf("%d", &a[i]);
for (int j = ; j <= t; j++) {
while (a[i] % pri[j] == ) {
a[i] /= pri[j];
b[i][j]++;
}
b[i][j] += b[i-][j];
}
}
cout << two_point() << endl;
return ;
}

cf818F,我强猜一下结论的原因:难道是因为完全图边多、链桥多,所以边多桥多就凑一起?

 #include <bits/stdc++.h>
using namespace std; typedef long long ll;
int q;
ll n; ll judge(ll k) {
return n - k + min(n - k, (k*k - k) / );
} int main() {
ios_base::sync_with_stdio(false);
cin.tie();
for (cin >> q; q; q--) {
cin >> n;
ll l = , r = n;
while (l < r-) {
ll lmid = (l + r) >> ;
ll rmid = (lmid + r) >> ;
if (judge(lmid) < judge(rmid))
l = lmid;
else r = rmid;
}
cout << max(judge(r), judge((l + r) >> )) << "\n";
}
return ;
}

cf822D,遍历素因子的技巧值得学习。以及貌似第一发猜的结论好像是对的但是我写挂了……but还是正解优雅。

 #include <bits/stdc++.h>
using namespace std; typedef long long ll;
const int maxn = 5e6 + ;
const int mod = 1e9 + ;
const ll INF = 1e18;
int t, l, r;
ll f[maxn];
int primes[maxn]; void init() {
for (int i = ; i <= r; i++) {
primes[i] = i;
f[i] = INF;
}
for (int i = ; i * i <= r; i++) {//不采集素数时不需遍历maxn
if (primes[i] == i) {
for (int j = i * i; j <= r; j += i)
primes[j] = min(primes[j], i);
}
}
for (int i = ; i <= r; i++) {
for (int j = i; j != ; j /= primes[j]) {//遍历素因子
f[i] = min(f[i], f[i / primes[j]] + 1LL * i * (primes[j] - ) / 2LL);
}
}
} int main() {
scanf("%d%d%d", &t, &l, &r);
init();
ll ans = , tt = ;
for (int i = l; i <= r; i++) {
f[i] %= mod;
ans = (ans + tt * f[i]) % mod;
tt = tt * t % mod;
}
cout << ans << endl;
return ;
}

最新文章

  1. redis主从配置及主从切换
  2. One EEG preprocessing pipeline - EEG-fMRI paradigm
  3. ZOJ 2048 highways
  4. 分析案例:应用服务无响应,任务管理器中发现大量w3wp僵尸进程----等待异构系统WebService返回值
  5. JS插件之——bootstrap-suggest.js
  6. 【GOF23设计模式】装饰模式
  7. Mysql忘记密码修改密码
  8. 支付宝开发(一)-认识php openssl RSA 非对称加密实现
  9. 对象序列化XML
  10. C#:总结页面传值几种方法
  11. ImageMagick的安装及使用
  12. C#中的多线程超时处理实践
  13. masm下几种常见函数调用方式
  14. java中使用JDBC的preparedStatement批处理数据的添加
  15. [转帖]How To Be Successful
  16. day19 十九、ATM+购物车
  17. Baffle.js – 用于实现文本模糊效果的 JavaScript 库
  18. canvas拖拽效果
  19. delphi EncdDecd.pas单元中Encoding方法出现#$D#$A的解决方法
  20. mouseover和mouseout事件的相关元素

热门文章

  1. Codeforces Round #222 (Div. 1) Maze —— dfs(连通块)
  2. Java 线程转储
  3. 生成chm格式帮助文档的步骤
  4. git bash的使用
  5. mycat的事务支持情况
  6. codevs 2456栅栏
  7. kitti数据集标定文件解析
  8. nvidia-smi 查看GPU信息字段解读
  9. HDU2159(完全背包)
  10. mysql 入门 1