[考试反思]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:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
随机推荐
- [Note] Windows 10 Python 3.6.4 安装scrapy
直接使用pip install安装时会在安装Twisted出错,以下主要是解决Twisted的安装问题 1. 安装wheel pip install wheel 2. 安装Twisted 在Pytho ...
- guava缓存批量获取的一个坑
摘要 Guava Cache是Google开源的Java工具集库Guava里的一款缓存工具,一直觉得使用起来比较简单,没想到这次居然还踩了一个坑 背景 功能需求抽象出来很简单,就是将数据库的查询sth ...
- Mapper
public static T MapTo<T>(this object obj) { if (obj == null) return default(T); Mapper.CreateM ...
- bugku细心地大象
解压得到图片,查看属性,发现一段编码. 用winhex打开图片,发现头文件是错的,正常jpg文件头文件为FF D8 FF E0 说明不是图片,是zip的文件头,更换格式. 丢到kali用binwalk ...
- django2.0+连接mysql数据库迁移时候报错
django2.0+连接mysql数据库迁移时候报错 情况一 错误信息 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 ...
- 生产环境中的kubernetes 优先级与抢占
kubernetes 中的抢占功能是调度器比较重要的feature,但是真正使用起来还是比较危险,否则很容易把低优先级的pod给无辜kill.为了提高GPU集群的资源利用率,决定勇于尝试一番该feat ...
- lua行为树设计与实现
项目需要,之前行为树用的是behaviorDesigner,要改成纯lua的 我先做了一版用递归实现,代码可读性高但是中断机制实现起来比较复杂,而且创建自定义action重写方法时需要调用父类的方法, ...
- Web渗透之mssql差异备份getshell
简介 差异备份数据库得到webshell.在sql server 里dbo和sa权限都有备份数据库权限,我们可以把数据库备份称asp文件,这样我们就可以通过mssqlserver的备份数据库功能生成一 ...
- Shiro:未登录时请求跳转问题
问题:前后端分离项目,在用Shiro做权限控制时,未登录状态发送的请求都会重定向,导致前端无法捕捉重定向后的消息.如何不重定向在原来的请求返回信息提示未登录,前端根据信息调到登录页? 首先,看一下Sh ...
- EFK教程 - EFK快速入门指南
通过部署elasticsearch(三节点)+filebeat+kibana快速入门EFK,并搭建起可用的demo环境测试效果 作者:"发颠的小狼",欢迎转载与投稿 目录 ▪ 用途 ...