[考试反思]1031csp-s模拟测试95:优势




假的三首杀。因为交文件所以他们都不往OJ上交。
假装是三首杀吧。嗯。
然而昨天还是没有AK。好像说是按照64位评测机的评测结果为准。
但是联赛省选的机子好像都是32位的?也就是和我们正在用的一致。
所以代码放在联赛上也能过,没锅就行,天灾人祸丢了40分那就没办法了。
关键是在自己的机子上怎么测都能过,而且还不能模拟评测机环境,昨天我在本机测了一组最大数据才交的。
因为64位机在递归的时候int的栈空间是按照8bit算的(强制开long long??),所以我就爆栈了。
(200000深度的dfs我申请了7个int,大约是5.3MB,而评测机按8位算之后变成了10.6MB)
但是不管怎么说也是涨了个记性,在题目没有说明无限栈的情况下栈空间就是8MB,不要炸。
(虽说平时自己机子上跑出来了就没什么问题。据说今天就是按照32位评测机的结果为准的)
(尚无定论,我还是不瞎说了,实在不行以后就按照4MB算)
回到今天。所以今天才是自己这辈子第一次AK非B组题,也是第一次三首杀AK。
昨天白高兴了。。。rank5还在讲题的时候上去说了半天现在想想十分尴尬。。。
但是这两天的题都比较合我的胃口。而且这次很没水准。
T1打表找规律。T2复杂版原题。T3算是自己想出来的(其实不是特别难想所以没什么可开心的)。
没有大数据结构,部分分给的很全而且还有提示意义,思考量也刚好合适。
所以做的顺手了分就上去了。这两天还在写对拍所以没出什么意外(呃。。。在能力范围内没什么意外。。。64位就算了)
我还是希望如果遇到不顺手的题也能像这样稳住心态不断的思考尽力的拿分保分吧。。。
T1:简单计算
打表找规律得到的式子(我爱打表找规律)
懒得写Latex了,不粘题面粘题解应该没什么事吧(不然其实也就是抄一遍)

打表找规律不乏是一个考场上的好技巧啊2333
#include<cstdio>
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int main(){freopen("simplecalc.in","r",stdin);freopen("simplecalc.out","w",stdout);
int t,p,q,g;scanf("%d",&t);
while(t--)scanf("%d%d",&p,&q),g=gcd(p,q),printf("%lld\n",(p+1ll)*q/-(p-)/+(g-)/);
}
呃。。。6行
T2:格式化
如果只有收益,那么当然按照格式化之前的容量从小到大挨个来。
如果只有亏损,那么当然按照格式化之后的容量从大到小挨个来。(完全反过程,和B组原题一样)
如果有收益有亏损,那么肯定先收益后亏损。
是一个比较普通也不是很不可证的贪心。
#include<cstdio>
#include<algorithm>
using namespace std;
struct P{int lim,E;}A[],B[];
bool comA(P x,P y){return x.lim<y.lim;}
bool comB(P x,P y){return x.E>y.E;}
long long res,ans;int n,cA,cB;
int main(){
freopen("reformat.in","r",stdin);
freopen("reformat.out","w",stdout);
scanf("%d",&n);
for(int i=,od,nw;i<=n;++i){
scanf("%d%d",&od,&nw);
if(nw>=od)A[++cA]=(P){od,nw};
else B[++cB]=(P){od,nw};
}
sort(A+,A++cA,comA);
for(int i=;i<=cA;++i)
if(res<A[i].lim)ans+=A[i].lim-res,res=A[i].E;
else res+=A[i].E-A[i].lim;
sort(B+,B++cB,comB);
for(int i=;i<=cB;++i)
if(res<B[i].lim)ans+=B[i].lim-res,res=B[i].E;
else res+=B[i].E-B[i].lim;
printf("%lld\n",ans);
}
T3:真相

暂且把第一种类型的人称为“预言家”吧。
我不会狼人杀!!!
如果没有预言家,那么可以O(n)爆扫。(枚举第一个人的真假,然后递推到第n个人看是否矛盾)
如果有预言家,那么可以先枚举某一个预言家为真,然后其它所有人都可以递推得到。
(其它预言家的k值如果与你判定为真的预言家不同那么必定为假,其余预言家为真,其他人可以根据顺时针下一个人推出)
(也就是,每个语言家直接决定了向前一直走到上一个预言家的位置这一段区间内所有人的真假状态)
还要考虑所有预言家都是假的情况,这样的话也是可以线性递推的,不过最后要看一下得到的说真话的人数不能与任何一个预言家所说的一致。
到这里就是$O(n^2)$的了。
可以发现一个问题,每一次你枚举不同的预言家为真时,除了这两个预言家外剩下预言家所控制的区间其实都没有变化。
我们对所有预言家都为假时的总共的说真话人数求和,再把k值相同的预言家压成一个。
每次考虑一个k值时,从你的求和值里减去这类预言家的贡献,再加上这个预言家说真话的贡献。
(然而我枚举的不是k值,而是所有k值不同的预言家)
判断此时说真话的人数是否符合即可。
再说一遍不要忘了所有预言家都是假的的情况。
还要注意,这题没有给出对k值的限制,所以直接枚举k值可能是错误的。
实际上数据里满足$0 \leq k$,但是还是有人跪在了$k=0$的情况上。
(update:存在$k > n$的数据!!)
考场上我也不知道k的范围所以我是枚举的所有预言家的k值,这样的话会更严谨一些。
#include<bits/stdc++.h>
using namespace std;
int opt[],k[],n,spj,pcnt,re[],consistent,inconsistent;
int r(int p){return p>n?:p;}
struct P{
int K,t,f,u;
friend bool operator<(P a,P b){
return a.K<b.K;
}
}p[];
bool chk(){
re[]=;
for(int i=;i<=n;++i)re[i]=re[i-]^opt[i-];
if(re[]==(re[n]^opt[n]))return true;
re[]=;
for(int i=;i<=n;++i)re[i]=re[i-]^opt[i-];
if(re[]==(re[n]^opt[n]))return true;
return false;
}
main(){
freopen("truth.in","r",stdin);
freopen("truth.out","w",stdout);
int t;char s[];
scanf("%d",&t);
while(t--){
scanf("%d",&n);spj=pcnt=consistent=inconsistent=;
for(int i=;i<=n;++i){
scanf("%s",s);
if(s[]=='$')scanf("%d",&k[i]),opt[i]=-,spj=;
else if(s[]=='+')opt[i]=;
else opt[i]=;
}
if(!spj){puts(chk()?"consistent":"inconsistent");continue;}
for(int i=;i<=n;++i)if(opt[i]==-){
int j=i-;if(!j)j=n;re[i]=;
p[++pcnt]=(P){k[i],,,};
while(opt[j]!=-){
re[j]=re[r(j+)]^opt[j];
if(re[j])p[pcnt].t++;else p[pcnt].f++;
j--;if(!j)j=n;
}
}
sort(p+,p++pcnt);
int lst=;p[].K=-;
for(int i=;i<=pcnt;++i)
if(p[i].K==p[lst].K)p[lst].t+=p[i].t,p[lst].f+=p[i].f,p[i].u=;
else lst=i;
int totf=;
for(int i=;i<=pcnt;++i)if(!p[i].u)totf+=p[i].f;
for(int i=;i<=pcnt;++i)if(!p[i].u)if(p[i].K==totf-p[i].f+p[i].t)consistent=;
for(int i=;i<=pcnt;++i)if(p[i].K==totf)inconsistent=;
puts((consistent||!inconsistent)?"consistent":"inconsistent");
}
}
[考试反思]1031csp-s模拟测试95:优势的更多相关文章
- [考试反思]0718 NOIP模拟测试5
最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...
- csp-s模拟测试95
csp-s模拟测试95 去世场祭. $T1$:这不裸的除法分块吗. $T2$:这不裸的数据结构优化$Dp$吗. $T3$:这不裸的我什么都不会搜索骗$30$分吗. 几分钟后. 这除法分块太劲了..(你 ...
- [考试反思]0814NOIP模拟测试21
前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- [考试反思]1109csp-s模拟测试106:撞词
(撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...
- [考试反思]0909csp-s模拟测试41:反典
说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...
- [考试反思]0725NOIP模拟测试8
看清你是个什么东西了么? 现在看清了么?rank#15?垃圾玩意? 你什么也不是.你没有骄傲,偷懒的资格! 节节败退,永无止境,你想掉到什么样子? 你还在为了成功拿到送分的T1而沾沾自喜?只不过是勉强 ...
- [考试反思]0714/0716,NOIP模拟测试3/4
这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...
- [考试反思]1003csp-s模拟测试58:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
随机推荐
- Spark 学习笔记之 Streaming和Kafka Direct
Streaming和Kafka Direct: Spark version: 2.2.0 Scala version: 2.11 Kafka version: 0.11.0.0 Note: 最新版本感 ...
- Web Storage和cookie的区别——每日一题20190629
Web Storage? 使用HTML5可以在本地存储用户的浏览数据. 使用的主要目的是为了克服Cookie带来的一些限制,当数据需要被严格控制在客户端上时,无需持续的将数据发回服务器 主要目标: 1 ...
- C#基于Quartz.NET实现任务调度并部署Windows服务
一.Quartz.NET介绍 Quartz.NET是一个强大.开源.轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp ...
- CocosCreator 快速开发推箱子游戏,附代码
游戏总共分为4个功能模块: - 开始游戏(menuLayer) - 关卡选择(levelLayer) - 游戏(gameLayer) - 游戏结算(gameOverLayer) Creator内组件效 ...
- 02-20 kd树(鸢尾花分类)
[TOC] 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ ...
- 分库分表(7)--- SpringBoot+ShardingSphere实现分库分表 + 读写分离
分库分表(7)--- ShardingSphere实现分库分表+读写分离 有关分库分表前面写了六篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理 ...
- 数据结构中数组反转与STL库Algorithm中的reverse
数组是个基本的线性数据结构,其实是内存中的一个块,我们可以通过c++的new来分配一个数组 int* a= new int[5]; 然后填数组的每个元素 a[0]=1; a[1]=2; a[2]=6; ...
- python selenium自动化常用关键字
工具安装: 1.安装python 2.安装selenium库(dos命令下进入selenium-2.53.2存放路径,执行pip install selenium-2.53.2) 3.将浏览器驱动放到 ...
- Head First设计模式——观察者模式
1.气象监测应用,错误示范 有一个气象站,分别有三个装置:温度感应装置,湿度感应装置,气压感应装置.WeathData对象跟踪气象站数据,WeathData有MeasurmentsChanged()方 ...
- PHP key_exists
此函数同array_key_exsits(). 1.函数的作用:判断一个数组是否含有某个键值 2.函数的参数: @param string $key @param array $haystack 3 ...