#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 ...
随机推荐
- -webkit-mask-box-image给框架加个同样大小的遮罩
很棒的css属性,可以在div上方建个同大小的遮罩,配合线性变化gradient可以实现很酷的样式,比如:时间选择的UI组件,里面有个模糊的上方遮罩 手册地址:https://developer.mo ...
- zabbix 用户自定义监控参数添加
1. item key的添加 key可以带参数,该参数为一个数组列表,可以同时传递多个参数,key的格式如下 key -- [ parameters] -- 例如: vfs.fs.size[/] v ...
- Jmeter参数化_CSV Data Set Config
1. 在用函数助手进行参数化的时候遇到一个问题,每个线程组每次循环的时候读取的值都是一样的,为了解决这个问题,将函数助手替换为CSV_Data_Set_Config. 2. 添加配置元件csv dat ...
- hdu 2188 悼念512汶川大地震遇难同胞——选拔志愿者(Bash Game)
题意:从0开始捐款,每次不超过m元,首先达到n元的获胜 思路:等同于从n开始,每次取不超过m,首先达到0的获胜.(Bash Game) #include<iostream> #includ ...
- CKEDITOR 默认最大化
createEditor("newsEditer"); //创建一个editer //editer 最大化 CKEDITOR.instances["newsEditer& ...
- codeforces 669A A. Little Artem and Presents(水题)
题目链接: A. Little Artem and Presents time limit per test 2 seconds memory limit per test 256 megabytes ...
- AutoIt中ControlFocus的使用
在使用AutoIt最控件做自动化操作的时候,经常性的会碰到无法使用Windows Info工具获取控件的属性,但是我们又需要获取该控件的焦点,我们该怎么办呢? 方法1: 应用controlFocus方 ...
- MongoDB:搭建三节点 Replica Set 环境
今天学习了搭建 MongDB 复制环境,实验环境是在虚拟机上同一系统,并搭建三节点 Replica Set,根据文档上的描述,mongodb 复制配置简单,并且能够自动 failover,这些高级特性 ...
- selenium_page_object
最简单的pageobject github地址:https://github.com/defnngj/selenium_page_objects
- nohup 命令 print 不能实时输出至 nohup.out
1. 原因 Python 的输出存在缓冲机制,因此不能实时输出结果至 nohup.out 2. 解决方案 用下面的命令即可解决: nohup python -u FileName > nohup ...