#13:人十我一Orz——6
水题放送,写得依旧丑:
#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 ;
}
#13:人十我一Orz——6的更多相关文章
- C语言必会面试题(3、耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,...)
3.耶稣有13个门徒.当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1.2,3.1,2,3.... 凡是报到"3"就退出圈子.最后留在圈子 ...
- 转:Java开发牛人十大必备网站
原文来自于:http://www.importnew.com/7980.html 以下是我收集的Java开发牛人必备的网站.这些网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试问题等.质 ...
- docker探索-CentOS7中配置Docker的yum源并升级安装docker1.13(十)
此处使用的是CentOS7,内核版本为 [root@localhost ~]# uname -r -.el7.x86_64 该版本下,配置了yum的源为阿里的镜像源,具体的配置方法可以参见阿里镜像源配 ...
- Java开发牛人十大必备网站
以下是我收集的Java开发牛人必备的网站.这些网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试问题等.质量是衡量一个网站的关键因素,我个人认为这些网站质量都很好.接下来,我会跟大家分享我 ...
- 13. 第十二篇 二进制安装kubelet
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483842&idx=1&sn=1ef1cb06 ...
- Fibonacci Again 分类: HDU 2015-06-26 11:05 13人阅读 评论(0) 收藏
Fibonacci Again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- Digital Roots 分类: HDU 2015-06-19 22:56 13人阅读 评论(0) 收藏
Digital Roots Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- Elevator 分类: HDU 2015-06-19 21:52 13人阅读 评论(0) 收藏
Elevator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- THE DRUNK JAILER 分类: POJ 2015-06-10 14:50 13人阅读 评论(0) 收藏
THE DRUNK JAILER Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24918 Accepted: 1563 ...
随机推荐
- vue项目刷新当前页面
场景: 有时候我们在vue项目页面做了一些操作,需要刷新一下页面. 解决的办法及遇到的问题: this.$router.go(0).这种方法虽然代码很少,只有一行,但是体验很差.页面会一瞬间的白屏,体 ...
- ubuntu中使用gensim+word2vec[备忘]
python版本: 2.7.12 0. 安装python和pip 1. 用pip依次安装: numpy, cython,scipy,pattern,word2vec 五个工具包 2. 用pip安装ge ...
- POJ1201 Intervals (差分约束)
You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn. Write a program that: ...
- nginx开发_字符串操作函数
由于ngx_str_t为非NULL结尾的函数,且网络请求中有大量忽略大小写的需求,所以nginx内部封装了许多字符串操作相关的函数,函数名称极其相识,且使用时有有些约定,特此整理. 赋值&拷贝 ...
- 在浏览器上直接输入 http://www.bookEstore.com就可以访问工程问题
关于在浏览器上直接输入 http://www.bookEstore.com就可以访问工程问题 1.在tomcat/conf/server.xml文件中配置一个虚拟主机 <Host name=&q ...
- 蓝桥杯 2014本科C++ B组 奇怪的分式 暴力枚举
蓝桥杯 枚举 奇怪的分式 标题:奇怪的分式 上小学的时候,小明经常自己发明新算法.一次,老师出的题目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1 ...
- 杂项:SVN 常用方法
ylbtech-杂项:SVN 1.返回顶部 1. bin obj *.suo*.user *.csproj.user *.o *.lo *.la *.al .libs *.so *.so.[0-9]* ...
- 九、myeclipse开发背景保护色设置
window->preferences->Editors->Text Editors->Background color 背景颜色向你推荐: 色调:85.饱和度:1 2 3.亮 ...
- Ubuntu install font
最近在 Ubuntu 上使用 VLC 看视频,发现字幕有问题,中文有些是白色的框框,主要是字幕的字体不完全支持中文,但是选择字体时又没有可以使用的字体,为此整理一下 Ubuntu 如何安装字体,现在整 ...
- python_xrange和range的异同
1,range: 函数说明:range([start,]stop[,step]),根据start和stop的范围以及步长step生成一个序列 代码示例: >>> range(5) [ ...