【codevs】2918

细节理解题,注意体感有点问题,p只加一次

var
  codevs,poj:array[0..20] of longint;
  ans,ci,pi,n,k,p,i:longint;
begin
  readln(n,k,p);
  for i:=1 to n do read(poj[i]);
  readln;
  for i:=1 to n do read(codevs[i]);
  for i:=2 to n do poj[i]:=poj[i]+poj[i-1];
  for i:=2 to n do codevs[i]:=codevs[i]+codevs[i-1];
  ans:=-maxlongint;
  for i:=0 to n-k do
    begin
      ci:=codevs[i+k]-codevs[i];
      pi:=poj[i+k]-poj[i];
      if ci-pi>ans then ans:=ci-pi;
    end;
  ans:=ans+1-p;
  if ans<0 then writeln(-1)
    else writeln(ans);
end.
时间: 2024-10-12 03:44:44

【codevs】2918的相关文章

【CODEVS】1281 Xn数列

[算法]矩阵快速幂 [题解]T*A(n-1)=A(n)矩阵如下: a 1 * x(n-1) 0 = xn 0 0 1    c        0    c   0 防止溢出可以用类似快速幂的快速乘. #include<cstdio> #include<algorithm> #define ll long long using namespace std; ll MOD,A,c,x0,n,g,a[2][2],b[2][2],t[2][2]; ll mull(ll x,ll y) {

【CODEVS】1922 骑士共存问题

[算法]二分图最大匹配(最大流) [题解]按(i+j)奇偶性染色后,发现棋子跳到的地方刚好异色. 然后就是二分图了,对于每个奇点向可以跳到的地方连边,偶点不需连(可逆). 所以题目要求转换为求二分图上最大独立集(对于每条边,至少有一个点不被选中). 最大独立集=总点数-最小割 //代码略 //hzwer's code: #include<iostream> #include<cstdio> #include<cstring> #define INF 0x7fffffff

【CODEVS】1033 蚯蚓的游戏问题

[算法]网络流-最小费用最大流(费用流) [题解]与方格取数2类似 在S后添加辅助点S_,限流k 每条边不能重复走,限流1 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int inf=0x3f3f3f3f,maxn=40,maxN=5000; struct edge{int from,v,flow,cost;}e[150000]; int n,m,k,

【CODEVS】1993 草地排水

[算法]网络流-最大流(dinic) [题解]网络流:http://m.blog.csdn.net/article/details?id=9401909 当前弧优化是因为DFS过程中访问x点时一旦流入量=流出量就退出,所以可以记录下此时正在考虑的弧,下次从此处继续考虑即可. 当前弧之前的弧,不能使流入量-流出量=0,那么一定该弧以及该弧之后的弧中有断裂,那么下次再考虑就没有意义了. 当前弧本身,使流入量-流出量=0,也就是使该点前面的弧中最小的一条断裂了,当前弧以及当前弧连出去之后的弧只是有可能

【CODEVS】1022 覆盖

[算法]二分图匹配(最大流) [题解]对i+j进行奇偶染色,就可以保证相邻两格异色. 然后就是二分图了,对相邻格子连边跑最大流即可. #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=110,maxN=10100,inf=0x3f3f3f3f; struct edge{int from,v,flow;}e[300010]; int n,m,

【CODEVS】2800 送外卖

[算法]最短路(floyd)&&状态压缩型动态规划(DP) [题解]dp的顺序应该是由含1的个数少的二进制到1的个数高的二进制(第一重循环) #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int inf=0x3f3f3f3f,maxn=18; int mp[maxn][maxn],f[maxn][(1<<maxn)],n; i

【贪心】【codevs】1098 均分纸牌

http://codevs.cn/problem/1098/ Q:N摞纸牌,每摞纸牌张数随机,每摞纸牌只能移动到相邻的纸牌摞上去,求最小的移动次数,使得每摞纸牌的张数一致. A:从头到尾扫一遍,只要当前这摞纸牌的张数不是每摞牌最终应该达到的平均值,就将其多的或少的纸牌移动或取自下一摞纸牌,同时将移动次数加1 #include<bits/stdc++.h> using namespace std; int p[105]; int n; int sum, avg; int ans; int mai

【codevs】5833 放置核弹

第一次发 DP or 递推,如果有什么 理解错误 or 理解不透彻 or 有更优解法,嗯,请神犇指出(毕竟我 DP or 递推 很弱)... 题目: 网址:http://codevs.cn/problem/5833/ 大意:n个坑里不能有连续的m个核弹,求方案数 嗯,其实也不难,看到题目第一个想到的就是dfs... 结果数据范围... ... 好吧,dfs TLE... 嗯,记忆化... 嗯,我不会... 那么,好吧,想一下DP or 递推... 思路: 把n个坑分成两部分 第一部分是0(没有放

【codevs】2919 选择题

又来放水题了,毕竟我只会水题... 以前写的一道水题... 网址:http://codevs.cn/problem/2919/ 题目: 大意:从一个给定的点往四个方向找相同的点,统计这些点的个数 看题目再看样例,嗯,宽搜 or 深搜 然而我无聊透了,想用并查集打一下... 思路:全部都搜一遍,如果上面或左面的与目前的点一致,那么就合为一点,最后在找一遍,如果与给定点是同一点的,那么就答案++. 代码如下: 1 //并查集 2 #include<iostream> 3 4 #include<