[考试反思]1024csp-s模拟测试85:以为
愈发垃圾。
T1基本全场切(除了RP<-inf的zkt和把人擦)
然后T2想了半天逐渐趋近于正解,但是因为数据有问题锅了25分,没什么好说的。
T3连题意转化都没有完成。括号匹配转为+1/-1做法都看过多少次了,还不会。。。
一定要吸取以往的经验,不要让时间空过
还有今天下午改题速度也非常慢。主要是T3。
挂了一个微小的不容易(但不是不会)出锅的细节,调了两个多小时。
我以为那么打没有问题,但是其实考虑的并不周密。
不要想当然,打代码要的是精密,而不是精妙。
在打下每一个字之前,考虑好你要为它付出的代价。
感谢这错误没有出现在考试,感谢它没有毁掉我的CSP-S。
最近还是那么菜,简单题差不多能拿到手了,难题什么都想不出来。
其实也是不够认真不够专注吧。。。
嗯,还有22天。
T1:表达式密码
在符号后的两个0之间填加号。在-xx的两个数字之间填加号。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char s[];int n;
int main(){
scanf("%s",s+);
n=strlen(s+);
for(int i=;i<=n;++i){
putchar(s[i]);
if(isdigit(s[i])&&s[i-]=='-'&&isdigit(s[i+]))putchar('+'),s[i]='+';
if(s[i]==''&&!isdigit(s[i-])&&isdigit(s[i+]))putchar('+'),s[i]='+';
}puts("");
}
T2:电压机制
奇环上的额点必选,偶环上的不能选。
老套路,图不会做就建一个树,考虑非树边。
其实dfs得到的树所剩下的边一定是返祖边,所以不用求LCA。
树上差分,就没了。
数据问题:不保证联通
#include<cstdio>
int fir[],cnt=,l[],to[],in[],n,m;
int w[],x[],lim,al[],dep[],ans;
void link(int a,int b){l[++cnt]=fir[a];fir[a]=cnt;to[cnt]=b;}
void dfs(int p){//printf("%d\n",p);
al[p]=;
for(int i=fir[p];i;i=l[i])if(!al[to[i]])
in[i>>]=,dep[to[i]]=dep[p]+,dfs(to[i]);
}
void DFS(int p){
al[p]=;
for(int i=fir[p];i;i=l[i])if(al[to[i]]!=)
DFS(to[i]),w[p]+=w[to[i]],x[p]+=x[to[i]];
}
int main(){//freopen("voltage.in","r",stdin);
scanf("%d%d",&n,&m);
for(int i=,a,y;i<=m;++i)scanf("%d%d",&a,&y),link(a,y),link(y,a);
dfs();
for(int i=;i<=m;++i)if(!in[i]){
int a=to[i<<],b=to[i<<|];
if(dep[a]+dep[b]&)
if(dep[a]<dep[b])x[b]++,x[a]--;
else x[a]++,x[b]--;
if(dep[a]+dep[b]&^)
if(dep[a]<dep[b])w[a]--,w[b]++,lim++;
else w[a]++,w[b]--,lim++;
}DFS();
if(lim==)ans++;
for(int i=;i<=n;++i)if(al[i])if(x[i]==&&w[i]==lim)ans++;
printf("%d\n",ans);
}
T3:括号密码
首先,括号匹配的题转化为+1/-1问题,这已经是常用套路了,左加右减。
问题变为:使每一个子区间[l,r]的前缀和值sum满足sum[r]=sum[l-1]且对于任意$i\in [l,r]$有sum[i]>=sum[l-1]
先不考虑重叠和包含,只考虑若干个区间彼此无交集。
那么对于每一个区间,如果总的“(”和“)”不一样,那么就要把外面的括号和内部的交换。
设a[i]表示第i个子区间的总值(前缀和)。如果它是奇数那么无解,否则它就需要从外界得到a[i]/2个右括号。
如果是负的,那么就要换来左括号。
然而其实不值得每个区间都付出这么多的代价,因为A区间需要左括号而B区间需要右括号,那么它两个之间互换就好了。
这样的话我们对于需要左括号的区间付出相应的代价,而对于需要右括号的区间不再付出代价,这样我们就节约了费用。
但是还没有完,如果所有子区间所索要的左括号与右括号数量不相等,那么就要与非选中区间的地方进行交换。
如果与外界交换的是左括号,那么没有代价,因为上面已经支付过了。
如果是右括号的需求更多,那么要再付出额外的代价。
要注意,如果所有选中的子区间外的括号不够用,那么无解。
现在我们成功地使每个子区间内部的和为0了,问题在于内部的前缀和可能小于0了。
所以找到每个子区间最小的前缀和,如果等于0那么就没有关系内部已经合法(当然不会大于0啊)
如果小于0的话那么你就需要内部调整,调整的代价为w/2,你只需要把最靠右的w/2个'('和最靠左的w/2个')'互换就可以合法了。
这样我们就计算完代价了。
如果考虑区间有交集但是不包含呢?
若[l1,r1]和[l2,r2]分别合法且l1<l2,l2<=r1,r1<r2,那么我们可以根据区间2合法知道交集的最小前缀和为0,这样的话它的总和大于等于0。
但是如果它大于0的话,[l1,l2-1]这一段就必须小于0,不可能合法,所以[l2,r1]这一段的总和为0。
这样的话[l1,l2-1],[r1+1,r2]这两部分的总和/最小前缀和也为0。
所以我们就把这个区间拆成了[l1,l2-1][l2,r1][r1+1,r2]3部分。拆完之后区间就没有重叠关系,就可以按照上面的做了。
再考虑如何处理包含关系。
如果区间A包含区间B,那么B的总和和最小前缀和就必须是0。这样的话我们考虑A-B区间和A区间是完全等价的。
所以在统计A区间的a数组和w数组的时候直接跳过B区间统计过的部分,答案不变。
所以在你统计的时候把你统计到的部分打标记,以后遇到标记就直接跳过就好了。
但是当包含和重叠关系同时出现时,要先处理重叠,不然的话会导致统计错误。
#include<cstdio>
#include<algorithm>
struct Q{
int l,r;
friend bool operator<(Q a,Q b){return a.r-a.l<b.r-b.l;}
}q[];
int n,w[],a[],ans,tot,al[],Lc,Rc;char s[];
int main(){
scanf("%s%d",s+,&n);
for(int i=;i<=n;++i)scanf("%d",&q[i].l),q[i].l++;
for(int i=;i<=n;++i)scanf("%d",&q[i].r),q[i].r++;
for(int i=;i<=n;++i)for(int j=;j<=n;++j)
if(q[i].l<q[j].l&&q[j].l<=q[i].r&&q[i].r<q[j].r)
q[++n].r=q[j].r,q[n].l=q[i].r+,q[j].r=q[i].r,q[i].r=q[j].l-;
else if(q[j].l<q[i].l&&q[i].l<=q[j].r&&q[j].r<q[i].r)
q[++n].r=q[i].r,q[n].l=q[j].r+,q[i].r=q[j].r,q[j].r=q[i].l-;
std::sort(q+,q++n);
for(int i=;i<=n;++i)for(int j=q[i].l;j<=q[i].r;++j)if(!al[j])
a[i]+=(s[j]=='('?:-),w[i]=a[i]<w[i]?a[i]:w[i],al[j]=;
for(int i=;s[i];++i)if(!al[i])if(s[i]=='(')Lc++;else Rc++;
for(int i=;i<=n;++i)if(a[i]&)return puts("-1"),;else tot+=a[i]>>;
for(int i=;i<=n;++i)if(a[i]>)ans+=a[i]>>;else w[i]-=a[i];
for(int i=;i<=n;++i)if(w[i]<)ans-=w[i]>>;
if(tot<-Lc||tot>Rc)return puts("-1"),;
printf("%d\n",ans-(tot<?tot:));
}
[考试反思]1024csp-s模拟测试85:以为的更多相关文章
- [考试反思]0718 NOIP模拟测试5
最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...
- csp-s模拟测试85
csp-s模拟测试85 $T1$全场秒切没有什么区分度,$T2$全场成功转化题意但是我并不会打,$T3$暴力都没打很遗憾. 100 00:21:49 02:56:35 02:56:49 135 02: ...
- [考试反思]0814NOIP模拟测试21
前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...
- [考试反思]1109csp-s模拟测试106:撞词
(撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...
- [考试反思]0909csp-s模拟测试41:反典
说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...
- [考试反思]0801NOIP模拟测试11
8月开门红. 放假回来果然像是神志不清一样. 但还是要接受这个事实. 嗯,说好听点,并列rank#7. 说难听点,垃圾rank#18. 都不用粘人名就知道我是哪一个吧... 因为图片不能太长,所以就不 ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- [考试反思]0714/0716,NOIP模拟测试3/4
这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...
- [考试反思]1003csp-s模拟测试58:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
随机推荐
- 微服务架构-利用Redis特性进行业务解耦
背景: 接着上篇文章来,上篇文章讲的是如何利用ApplicationContext的事件机制来达到业务解耦,而且这只能作用在单体应用中.在当下这么盛行的微服务架构中,想要再利用此方案做业务解耦 ...
- 文件/大文件上传功能实现(JS+PHP)全过程
文件/大文件上传功能实现(JS+PHP) 参考博文:掘金-橙红年代 前端大文件上传 路漫漫 其修远 PHP + JS 实现大文件分割上传 本文是学习文件上传后的学习总结文章,从无到有实现文件上传功能, ...
- Windows系统调用中的系统服务表描述符
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中的系统服务表描述符 在前面,我们将解过 ...
- dll劫持破坏360
0x01 前言 说起DLL劫持技术,相信大家都不会陌生,因为这种技术的应用比较广泛,比如木马后门的启动.破解程序的内存补丁.外挂插件的注入以及加密狗的模拟等.之所以DLL劫持技术深受黑客们的喜爱,主要 ...
- webshell检测方法归纳
背景 webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门.黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB ...
- css 文字间距
letter-spacing : 字与字之间的距离 text-indent : 行的抬头间距 line-height : 行高度
- [Luogu3069][USACO13JAN]牛的阵容Cow Lineup
题目描述 Farmer John's N cows (1 <= N <= 100,000) are lined up in a row. Each cow is identified by ...
- [Noip1997] 棋盘问题(2)
题目描述 在N×NN \times NN×N的棋盘上(1≤N≤10)(1≤N≤10)(1≤N≤10),填入1,2,…,N21,2,…,N^21,2,…,N2共N2N^2N2个数,使得任意两个相邻的数之 ...
- 解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException。如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错。
最近遇到一个.NET连接Oracle的一个错误,其主要原因是换了一台电脑,在新电脑上运行以前的项目出现了的一个错误,工作环境为vs2017+Oracle 64位,win10系统 这个错误头疼了一天,找 ...
- 入门了解Service Mesh + Istio?从本文开始
下周六,深圳,阔别已久的线下技术沙龙要和你见面啦! 现场有Rancher Labs研发经理demo刚刚发布的Rancher 2.3中的Istio.Windows容器.集群模板等功能及使用,还有k3s首 ...