18年10月31日 NOIP模拟赛
T1.exercise
题解
数据很小直接模拟
代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<map>
#define ll long long
using namespace std;
int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int n,m;
int a[2005];
int main()
{
freopen("exercise.in","r",stdin);
freopen("exercise.out","w",stdout);
for(int i=1;i<=1440;i++)a[i]=1;
n=read();m=read();
for(int i=1;i<=m;i++)
{
char ch[25];
scanf("%s",ch);
int l=read(),r=read(),v=read();
for(int j=l;j<=r;j++)a[j]-=v;
}
int sum=n;
for(int i=1;i<=1440;i++)
{
sum+=a[i];
if(sum<=0){printf("Runtime Error\n%d\n",i);return 0;}
}
puts("Accepted");
printf("%d",sum);
return 0;
}
T2.catclimb
题解
迭代深搜,最好先排个序。。。
代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<map>
#include<algorithm>
#define ll long long
using namespace std;
int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
bool flag;
int n,w,deep,sum;
int c[20],b[20];
void dfs(int x)
{
if(x==n+1){flag=1;return;}
for(int i=1;i<=deep;i++)
if(b[i]+c[x]<=w)
{
b[i]+=c[x];
dfs(x+1);
b[i]-=c[x];
if(flag)return;
}
return;
}
int main()
{
freopen("catclimb.in","r",stdin);
freopen("catclimb.out","w",stdout);
n=read();w=read();
for(int i=1;i<=n;i++)c[i]=read(),sum+=c[i];
sort(c+1,c+n+1,greater<int>());
for(deep=sum/w;deep<=18;deep++)
{
dfs(1);
if(flag)
{
printf("%d\n",deep);
return 0;
}
}
return 0;
}
T3.war
题解
部分分快排。。
正解平衡树
AC代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<map>
#include<algorithm>
#define ll long long
using namespace std;
int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int tmp;
int n,m,root,size;
int b[300005],v[300005],w[300005],s[300005],rnd[300005];
int ls[300005],rs[300005];
bool tag[300005];
void update(int k){s[k]=s[ls[k]]+s[rs[k]]+w[k];}
void rturn(int &k)
{int t=ls[k];ls[k]=rs[t];rs[t]=k;update(k);update(t);k=t;}
void lturn(int &k)
{int t=rs[k];rs[k]=ls[t];ls[t]=k;update(k);update(t);k=t;}
void insert(int &k,int num)
{
if(!k){k=++size;rnd[k]=rand();w[k]=s[k]=1;v[k]=num;return;}
s[k]++;
if(num==v[k]){w[k]++;return;}
else if(num<v[k]){insert(ls[k],num);if(rnd[ls[k]]<rnd[k])rturn(k);}
else {insert(rs[k],num);if(rnd[rs[k]]<rnd[k])lturn(k);}
}
void del(int &k,int num)
{
if(!k)return;
if(num==v[k])
{
if(w[k]>1){w[k]--;s[k]--;return;}
if(ls[k]*rs[k]==0)k=ls[k]+rs[k];
else if(rnd[ls[k]]<rnd[rs[k]]){rturn(k);del(k,num);}
else {lturn(k);del(k,num);}
}
else if(num<v[k])
{del(ls[k],num);s[k]--;}
else {del(rs[k],num);s[k]--;}
}
int query(int k,int x)
{
if(!k)return -1;
if(s[ls[k]]>=x)return query(ls[k],x);
else if(x>s[ls[k]]+w[k])return query(rs[k],x-w[k]-s[ls[k]]);
else return k;
}
int main()
{
freopen("war.in","r",stdin);
freopen("war.out","w",stdout);
n=read();
for(int i=1;i<=n;i++)b[i]=read();
for(int i=1;i<=n;i++)insert(root,b[i]);
m=read();
int k,x;
for(int i=1;i<=m;i++)
{
char ch[2];
scanf("%s",ch);
if(ch[0]=='A')
{
k=read();x=read();
del(root,b[k]);b[k]-=x;
if(b[k]>0)insert(root,b[k]);
else n--;
}
else if(ch[0]=='C')
{
k=read();x=read();
del(root,b[k]);b[k]+=x;
insert(root,b[k]);
}
else
{
k=read();
if(k>n)puts("-1");
else printf("%d\n",v[query(root,n-k+1)]);
}
}
printf("%d\n",n);
return 0;
}
18年10月31日 NOIP模拟赛的更多相关文章
- 18年10月30日 NOIP模拟赛
T1 jkl 题解 显然每次都取a[i]的最大值/最小值,并更新a[i]即可 用数据结构维护这一操作..得分看常数 事实上用v[i]记录权值为i的个数,然后for乱搞就可以了... 其它乱搞做法能获得 ...
- 18年11月5日 NOIP模拟赛
T1 题解 对于k=100的情况,贪心 对于100%的数据 可以发现,当前的决策只对后面的开采有影响,且剩余耐久度与之后的开采收益成正比,如果倒着考虑这个问题,得出i-n的星球1点耐久度所能获得的最大 ...
- 9月24日noip模拟赛解题报告
1.校门外的树(tree.c/cpp/pas 128M,1s) Description LSGJ扩建了,于是校门外有了一条长为L的路.路上种了一排的树,每相邻两棵树之间的距离为1,我们可以把马路看成一 ...
- 2016年10月31日 星期一 --出埃及记 Exodus 19:16
2016年10月31日 星期一 --出埃及记 Exodus 19:16 On the morning of the third day there was thunder and lightning, ...
- 2017年10月31日结束Outlook 2007与Office 365的连接
2017 年10月31日 ,微软即将推出 Office 365中Exchange Online邮箱将需要Outlook for Windows的连接,即通过HTTP Over MAPI方式,传统使用R ...
- 中国省市县数据库sql文件(2017年10月31日之前)
摘自国家统计局 sql文件下载地址:https://files.cnblogs.com/files/zxj95121/%E7%9C%81%E5%B8%82%E5%8E%BFsql.zip 2019.4 ...
- 易初大数据 spss 2019年10月31日 wangqingchao
---恢复内容开始--- 1.描述性统计分析方法是指应用分类.制表.图形及概括性数据指标来概括数据分析特征的方法. 2.而推断性统计分析方法则是通过随机抽样,应用统计方法把从样本数据得到的结论推广到总 ...
- Techparty-广州 10 月 31 日 Docker 专场沙龙 后记
华为的童鞋技术能力很强,但是两位讲师的都没听进去.重点听了两个,一个是芒果TV的Docker 之路,另一个是Coding的实践和思考. 芒果TV的主讲人是一直仰慕的CMGS,从豆瓣出来后去了国企芒果台 ...
- 2016年10月31日--网页 Windows对象操作
Window.opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null. Window.open(URL,name,features,replace):open ...
随机推荐
- 开源方案搭建可离线的精美矢量切片地图服务-4.Mapbox样式设计
项目成果展示(所有项目文件都在阿里云的共享云虚拟主机上,访问地图可以会有点慢,请多多包涵). 01:中国地图:http://test.sharegis.cn/mapbox/html/3china.ht ...
- Extjs报错处理
错误信息: IE:SCRIPT1009: 缺少 '}' FF: SyntaxError: identifier starts immediately after numeric literal ... ...
- SQLServer数据库循环表操作每一条数据(游标的使用)
DECLARE @FunctionCode VARCHAR(20)--声明游标变量DECLARE curfuntioncode CURSOR FOR SELECT FunctionalityCode ...
- 撩课-Web大前端每天5道面试题-Day17
1.apply, call和bind有什么区别? 三者都可以把一个函数应用到其他对象上,注意不是自身对象. apply,call是直接执行函数调用,bind是绑定,执行需要再次调用. apply和ca ...
- 《Programming iOS 7》读书笔记 - 窗体大小与状态栏
1.从iOS7开始,状态栏开始变为透明的,根识图占领了整个窗体,包括状态栏后面的20像素高的区域,这种样式无法被改变.iOS6的状态栏是不透明的,窗体的尺寸通常会比屏幕的尺寸要小,可以设置窗体的尺寸为 ...
- JVM类加载器及Java类的生命周期
预定义类加载器(三种): 启动(Bootstrap)类加载器: 是用本地代码实现的类装入器,它负责将<Java_Runtime_Home>/lib下面的类库加载到内存中(比如rt.jar) ...
- WEB前端常用JavaScript代码整理
文章目录 html代码用JS动态加载进页面 JS判断用户访问的是PC还是mobile或者微信浏览器 判断浏览器的简单有效方法 点击某个div区域之外,隐藏该div 如何在手机上禁止浏览器的网页滚动 改 ...
- Anaconda多环境多版本python配置笔记
一.Conda测试过程: 使用conda.首先确认已经安装好了conda 配置环境.下一步通过创建几个环境来展示conda的环境管理功能.学习如何确认在哪个环境中,以及如何做复制一个环境作为备份. 测 ...
- 为样式找到应用目标-CSS选择器
1,常用选择器:元素(标签/简单)选择器.ID选择器.类选择器.后代选择器(可以将类或者ID应用于它们的祖先,然后使用后代选择器来定位) 2,伪类:有时候,我们需要根据文档结构之外的其他条件对元素应用 ...
- python简单验证码
安装图片处理模块pillow : pip install pillow pillow官网:http://pillow.readthedocs.io/en/latest/ 在views.py添加视图 ...