LOJ 模拟赛
1.LOJ 507 接竹竿
dp[i]表示前i个的最大分数,所以dp[i]=max(dp[i-1],dp[j-1]+sum[i]-sum[j-1]) (color i ==color j&&i>j)选与不选的两种决策
但是这样跑为O(N^2),需要优化,发现dp[j-1]-sum[j-1]是个在之前知道的数,所以可以记录下来当需要用这种颜色时的最大dp[j-1]-sum[j-1]
用lst[i]表示在当前情况下需要用color i这种颜色时的最大dp[j-1]-sum[j-1]这个值,因为这两者之间的共处是颜色
所以用颜色维护
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
inline long long read()
{
long long f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
long long n,k;
long long c[],v[],lst[],sum[],dp[];
int main()
{
memset(lst,-/,sizeof(lst));
n=read(),k=read();
for(long long i=;i<=n;i++) c[i]=read();
for(long long i=;i<=n;i++) v[i]=read(),sum[i]=sum[i-]+v[i];
for(long long i=;i<=n;i++)
{
dp[i]=max(dp[i-],lst[c[i]]+sum[i]);
lst[c[i]]=max(lst[c[i]],dp[i-]-sum[i-]);
}
cout<<dp[n];
}
2.LOJ 2279 降雨量
这道题先要仔细的读题,读完题后发现此题十分可做,但是最后全WA,因为没有看到它的含义是 X 年的降雨量不超过 Y 年这句话
分类讨论+ST表
先用ST表处理(i,j)之间的最大值(i,j为年份下标)
解决问题如果询问i,j
二分寻找u,v年份下标
用nx记录查找的下标对应的值是否等于此年份,因为有可能没有u,v年份的降雨量
然后分类讨论(this is 重点,not ST表)
1)nx==1时
1)ny==1时 已知 x,y(降水量) 那么首先判断x,y的大小,在判断包含区间的关系
2) ny==0时,说明只能与u进行比较,中间包含最大值与x的关系
2)nx==0
1) ny==1时,找中间包含区域与y的关系
2) ny==0,那么两头全部位置,所以maybe
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
inline long long read()
{
long long f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
long long ma[];
long long n,m;
long long maxn[][];
long long query(long long l,long long r)
{
if(l>r) return -(<<-);
long long k=log2(r-l+);
return max(maxn[l][k],maxn[r-(<<k)+][k]);
}
long long num;
int main()
{
// freopen("rainfall.in","r",stdin);
// freopen("rainfall.out","w",stdout);
// freopen("1.in","r",stdin);
n=read();
for(long long i=;i<=n;i++)
{
ma[i]=read();
maxn[i][]=read();
}
for(long long j=;j<=log2(n);j++)
for(long long i=;i+(<<j)-<=n;i++) maxn[i][j]=max(maxn[i][j-],maxn[i+(<<(j-))][j-]);
m=read();
for(long long i=;i<=m;i++)
{
int ans;
long long x=read(),y=read();
int sx=lower_bound(ma+,ma+n+,x)-ma,sy=lower_bound(ma+,ma+n+,y)-ma;
bool nx=(sx<=n&&ma[sx]==x),ny=(sy<=n&&ma[sy]==y);
// cout<<sx<<" "<<sy<<" "<<nx<<" "<<ny<<endl;
if(nx)
{
if(ny)
{
int q=query(sx+,sy-);
// cout<<q<<" "<<maxn[sx][0]<<" "<<maxn[sy][0]<<endl;
if(maxn[sy][]>maxn[sx][]) ans=;
else if(q<maxn[sy][])
{
if(y-x+==sy-sx+) ans=;
else ans=-;
}
else ans=;
}
else{
int q=query(sx+,sy-);
if(maxn[sx][]>q) ans=-;
else ans=;
}
}
else{
if(ny)
{
int q=query(sx,sy-);
if(q<maxn[sy][]) ans=-;
else ans=;
}else ans=-;
}
if(ans==) printf("true\n");
else if(ans==) printf("false\n");
else printf("maybe\n");
}
}
/*
4
54 8606
77 7706
100 2149
123 900
1
2 54 */
3.LOJ 2332 焚风现象
因为是可以升降海拔高度的但是算的是差值,所以[u,v]区域内答案没有发生影响,至于(u-1,u)与(v,v+1)有影响
每次算值现将二者减去,再分别减,加差值,因为+w所以dis[u-1]+w ,但是对于v来说它是减数所以当他加上一个值时反而是减所以dis[v]-=w
dis[i]表示从i到i+1的海拔高
而因为若v=n时v+1已经越界所以就不再计算
此方法时间复杂度O(q+n)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
inline long long read()
{
long long f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
long long n,q,a[],s,t,dis[];
long long get(long long tt)
{
if(tt>) return -s*tt;
return -tt*t;
}
long long ans;
int main()
{
n=read(),q=read(),s=read(),t=read();
for(long long i=;i<=n;i++) a[i]=read();
for(long long i=;i<n;i++)
{
dis[i]=a[i+]-a[i];
ans+=get(dis[i]);
}
while(q--)
{
long long a=read(),b=read(),c=read();
ans-=get(dis[a-]);
dis[a-]+=c;
ans+=get(dis[a-]);
if(b!=n)
{
ans-=get(dis[b]);
dis[b]-=c;
ans+=get(dis[b]);
}
printf("%lld\n",ans);
// cout<<ans<<endl;
}
}
总结:这其实是一场考试,最后100分收尾,只A了第三题,后来发现这是一场普及组的卷子,心态要炸
LOJ 模拟赛的更多相关文章
- 冲刺$\mathfrak{CSP-S}$集训模拟赛总结
开坑.手懒并不想继续一场考试一篇文. 既没必要也没时间侧边栏的最新随笔题解反思相间也丑 而且最近越来越懒了竟然都不写题解了……开坑也是为了督促自己写题解. 并不想长篇大论.简要题解也得写啊QAQ. 目 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOI模拟赛 Day1
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 小奇模拟赛9.13 by hzwer
2015年9月13日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...
- PKUSC 模拟赛 day1 下午总结
下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...
- [GRYZ]寒假模拟赛
写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...
随机推荐
- Linux命令应用大词典-第35章 终端
35.1 tty:显示当前连接到当前标准输入的终端设备文件名 35.2 consoletype:显示连接到标准输入的控制台类型 35.3 fgconsole:显示活动的虚拟终端数量 35.4 ming ...
- SQL Sever查询语句集锦
一. 简单查询简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的表或视图.以及搜索条件等. 例如,下面的语句查询testtable表中姓名为“ ...
- 【springmvc+mybatis项目实战】杰信商贸-3.需求分析与数据库建模
开发步骤需求:生产厂家信息维护基础表FACTORY_C 1.业务需求:a)<需求说明书> 1)描述业务功能 生产厂家模块 功能:为在购销合同模块中的货物信息和附件信 ...
- clientHeight、offsetHeight、scrollHeight、clientTop、scrollTop、offsetTop的对比
首先,这些都是dom节点的属性. 高宽属性:clientHeight:html元素不含border的高度. 对于box-sizing不同的情况,有些地方需要注意一下.当box-sizing为conte ...
- Python3 异常与断言
1.异常 当出现错误时,程序就会发生异常 num1=input('Please input a num1: ') num2=input('Please input a num2: ') print(f ...
- spring boot 中文乱码问题
在刚接触spring boot 2.0的时候,遇到了一些中文乱码的问题,网上找了一些解决方法. 这里自己做个汇总. 在application.properties文件中添加: spring.http. ...
- GitHub把自己整个文件夹上传
我已经有了自己github,但是我怎么对我的项目进行上传呢,普通的上传只有上传单一的文件 这不我去下载了Git(链接至机房ftp文件夹下文件ftp://10.64.130.1/%C8%ED%BC%FE ...
- Java学习个人备忘录之抽象类
抽象类 特点:1. 方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,抽象方法必须定义在抽象类中.该类必须也被abstract修饰2. 抽象类不可以被实例化. 为什么? 因为调 ...
- CSS3制作各种形状图像(转)
CSS3制作各种形状图像 浏览:1417 | 更新:2015-05-24 14:43 | 标签:css 1 2 3 4 5 6 7 分步阅读 圆形-椭圆形-三角形-倒三角形=左三角形-右三角形-菱形- ...
- 项目选题报告(I konw)
一.团队成员及分工 团队名称:I know 团队成员: 陈家权:选题报告word撰写 赖晓连:ppt制作,原型设计 雷晶:ppt制作,原型设计 林巧娜:原型设计,博客随笔撰写 庄加鑫:选题报告word ...