#10:wannanewtry——6
HDU3401,列完转移方程拆分一下,正着、反着跑优先队列优化代表买或卖。初始化不大会搞……
#include <bits/stdc++.h>
using namespace std; const int inf = 0x3f3f3f3f;
const int maxn = ;
int T, n, maxp, w;
int ap, bp, as, bs;
int f[maxn][maxn];
int q[maxn], v[maxn]; int DP() {
for (int j = ; j <= maxp; j++)
f[][j] = -inf;
for (int i = ; i <= w+; i++) {
scanf("%d%d%d%d", &ap, &bp, &as, &bs); for (int j = ; j <= maxp; j++) {
if (j <= as) f[i][j] = -j*ap;
else f[i][j] = -inf;
f[i][j] = max(f[i][j], f[i-][j]);
}
}
for (int i = w+; i <= n; i++) {
scanf("%d%d%d%d", &ap, &bp, &as, &bs); int l = , r = ;
for (int j = ; j <= maxp; j++) {
f[i][j] = f[i-][j];
while (l <= r && f[i-w-][j] + j*ap > v[r]) r--;
q[++r] = j;
v[r] = f[i-w-][j] + j*ap; while (l <= r && q[l] < j-as) l++;
if (l <= r) f[i][j] = max(f[i][j], v[l]-j*ap);
} l = , r = ;
for (int j = maxp; ~j; j--) {
while (l <= r && f[i-w-][j] + j*bp > v[r]) r--;
q[++r] = j;
v[r] = f[i-w-][j] + j*bp; while (l <= r && q[l] > j+bs) l++;
if (l <= r) f[i][j] = max(f[i][j], v[l]-j*bp);
}
}
return f[n][];
} int main() {
for (cin >> T; T; T--) {
cin >> n >> maxp >> w;
cout << DP() << endl;
}
return ;
}
为了少一些痛苦自闭,蒟蒻只好写几道cf水题。
#include <bits/stdc++.h>
using namespace std; int n; int main() {
while (cin >> n) {
int m = n/;
for (int i = m; i; i--)
if (__gcd(i, n-i) == ) {
printf("%d %d\n", i, n-i);
break;
}
}
return ;
}
854A
#include <bits/stdc++.h>
using namespace std; int n, k; int main() {
while (cin >> n >> k) {
if (k > && k < n)
printf("1 ");
else printf("0 "); printf("%d\n", min(n - k, *k));
}
return ;
}
854B
优先队列乱模拟一下:
#include <bits/stdc++.h>
using namespace std; typedef pair<int, int> P;
int n, k;
priority_queue<P> Q;
set<int> minute;
set<int>::iterator it;
int v[];
long long ans; int main() {
cin >> n >> k;
for (int i = ; i <= n; i++) {
int cost;
scanf("%d", &cost);
Q.push(P(cost, i));
minute.insert(i+k);
} for (int i = ; i <= n; i++) {
auto t = Q.top(); Q.pop();
int k1 = t.second;
if (k1 < k) k1 = k;
it = minute.lower_bound(k1);
v[t.second] = *it;
ans += (long long)(*it - t.second) * t.first;
minute.erase(it);
} cout << ans << endl;
for (int i = ; i <= n; i++)
printf("%d ", v[i]);
return ;
}
853A
差分预处理,枚举区间:
#include <bits/stdc++.h>
#define ll long long
#define ri readint()
#define gc getchar()
#define pb push_back
#define P pair<int, int>
using namespace std; const ll INF = 1e13;
const int maxn = ;
const int maxday = ; int n, m, k;
ll f[maxn];
ll s[maxday+], t[maxday+];
vector<int> from[maxday+], to[maxday+], cost[maxday+]; 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 init(ll *x, int k) {
for (int i = ; i <= n; i++)
f[i] = INF;
x[k] = INF*n;
} int main() {
cin >> n >> m >> k;
for (int i = ; i < m; i++) {
int day = ri, f = ri, t = ri, c = ri;
from[day].pb(f);
to[day].pb(t);
cost[day].pb(c);
} init(s, );
for (int i = ; i <= maxday; i++) {
s[i] = s[i-];
for (int j = ; j < from[i].size(); j++) {
if (to[i][j] == && cost[i][j] < f[from[i][j]]) {
s[i] -= f[from[i][j]] - cost[i][j];
f[from[i][j]] = cost[i][j];
}
}
}
init(t, maxday+);
for (int i = maxday; i; i--) {
t[i] = t[i+];
for (int j = ; j < from[i].size(); j++) {
if (from[i][j] == && cost[i][j] < f[to[i][j]]) {
t[i] -= f[to[i][j]] - cost[i][j];
f[to[i][j]] = cost[i][j];
}
}
} ll ans = INF;
for (int i = ; i + k <= maxday; i++)
ans = min(ans, s[i-] + t[i+k]);
if (ans > 1e12) puts("-1");
else cout << ans << endl; return ;
}
853B
BZOJ1010,斜率优化dp经典题,推式子很重要,设定不同的函数做法也会有难易区分。
#include <bits/stdc++.h>
#define db double
#define maxn 50005
using namespace std; int n, L;
int head, tail;
int q[maxn];
db sum[maxn], f[maxn]; db sqr(db x) {
return x * x;
}
db a(int i) {//斜率单调的
return sum[i] + i;
}
db b(int i) {
return sum[i] + i + L + ;
}
db Y(int i) {
return f[i] + sqr(b(i));
}
db slope(int i, int j) {
return (Y(j) - Y(i)) / (b(j) - b(i));
} int main() {
cin >> n >> L;
for (int i = ; i <= n; i++) {
scanf("%lf", &sum[i]);
sum[i] += sum[i-];
}
head = , tail = ;
for (int i = ; i <= n; i++) {
while (head < tail && slope(q[head], q[head+]) < *a(i)) head++;
f[i] = f[q[head]] + sqr(a(i) - b(q[head])); while (head < tail && slope(q[tail-], q[tail]) > slope(q[tail-], i)) tail--;
q[++tail] = i;
}
cout << fixed << setprecision() << f[n] << endl;
return ;
}
#10:wannanewtry——6的更多相关文章
- Windows 10:解决开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用的方法
		
开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用应该是不少网友都遇到过. 近日在使用Windows 10 Build 9926中,也出 ...
 - 【译】ASP.NET MVC 5 教程 - 10:添加验证
		
原文:[译]ASP.NET MVC 5 教程 - 10:添加验证 在本节中,我们将为Movie模型添加验证逻辑,并确认验证规则在用户试图使用程序创建和编辑电影时有效. DRY 原则 ASP.NET M ...
 - Bootstrap入门(十六)组件10:well和具有响应式特性的嵌入内容
		
Bootstrap入门(十六)组件10:well和具有响应式特性的嵌入内容 well组件可以为内容增添一种切入效果. 具有响应式特性的嵌入内容可以根据被嵌入内容的外部容器的宽度,自动创建一个固定的比例 ...
 - RTMPdump(libRTMP) 源代码分析 10: 处理各种消息(Message)
		
===================================================== RTMPdump(libRTMP) 源代码分析系列文章: RTMPdump 源代码分析 1: ...
 - sed:-e 表达式 #1,字符 10:未终止的“s”命令
		
执行shell脚本时,使用sed变量替换指定的字符串,一直出现这个错误: [root@bqh-118 scripts]# vim while_rz.sh [root@bqh-118 scripts]# ...
 - Module 10:I/O流(java如何实现与外界数据的交流)
		
Module 10:I/O流(java如何实现与外界数据的交流) Input/Output:指跨越出了JVM的边界,与外界数据的源头或者目标数据源进行数据交换. 输出 ...
 - Window 10 :我的性能优化:那效果,杠杠的!
		
微软的 windows 10,不错! 当全新安装后,性能总觉得别别扭扭,不那么干净利落. 下面就是我的个人优化措施,期间有很多技术性的操作,如果你没有动手能力,或者是技术小白,可以不用再看了! (1) ...
 - Window 10 :如何彻底关闭:Windows Defender Service(2015-12-20日更新)
		
Window 10 :如何彻底关闭:Windows Defender Service? 网上流传的什么组策略gpeidt.msc方法,什么安装其他的杀软之类的方法都很麻烦,且有弊病! 其实很简单: 利 ...
 - 搞懂分布式技术10:LVS实现负载均衡的原理与实践
		
搞懂分布式技术10:LVS实现负载均衡的原理与实践 浅析负载均衡及LVS实现 原创: fireflyc 写程序的康德 2017-09-19 负载均衡 负载均衡(Load Balance,缩写LB)是一 ...
 
随机推荐
- vue-面试
			
1.单页面应用与多页面应用的去别 2.简述一下Sass.Less,且说明区别? 他们是动态的样式语言,是CSS预处理器,CSS上的一种抽象层.他们是一种特殊的语法/语言而编译成CSS.变量符不一样,l ...
 - Vue一次性简洁明了引入所有公共组件
			
使用场景 -在开发过程中,往往会有很多自己定义公用组件,我们通过import 导入,components挂载到实例上就行,项目刚开始还好,但是随着项目迭代,组件越来越多,同一个组件不同的方式用需要重复 ...
 - WSDL文档深入分析
			
借助jdk的wsimort.exe工具生成客户端代码 格式:wsimport -keep url //url为wsdl文件的路径 直接生成客户端代码会抛异常, 无法生成客户端代码, 解决办法: 将 ...
 - charles抓取线上接口数据替换为本地json格式数据
			
最近要做下拉刷新,无奈测试服务器的测试数据太少,没有足够的数据做下拉刷新,所以用charles抓取了测试服务器的接口,然后在伪造了很多数据返回到我的电脑上,下面来说说使用方法: 第一步: 安装FQ软件 ...
 - javascript学习的思维导图
			
今天逛师父的博客园,发现了好东西~~~~我给偷过来了~~~那就是javascript学习的思维导图,比自己整理更快速. 思维导图小tips: 思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ...
 - POJ1456 Supermarket —— 贪心 + 路径压缩优化
			
题目链接:http://poj.org/problem?id=1456 Supermarket Time Limit: 2000MS Memory Limit: 65536K Total Subm ...
 - [ZJOI 2012] 网络
			
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2816 [算法] 对每种颜色的边建一棵LCT , 维护联通性即可 时间复杂度 : O( ...
 - 用C++发邮件
			
近段时间,实验室电脑的IP频繁地改变,搞得想用远程偷下懒都不行.这时想到的解决方法有:静态IP,动态域名,自己解决.静态IP虽然可以自己指定,但一关机后,与对方冲突就完了,作罢.免费的动态域名又要手机 ...
 - Sherlock and the Encrypted Data
			
题意: 对于16进制数字num,假定 $p_0,p_1,...,p_m$ 在该数字中出现过,如果有 $x = 2^{p_0} + 2^{p_1} + ... + 2^{p_m}$ 且 $x \oplu ...
 - mysql server安装(windows)
			
1 在 https://dev.mysql.com/downloads/mysql/ 上下载mysql压缩包 2 解压,并把bin目录加入环境变量 3 初始化,完成后会在mysql根目录下生成data ...