Noip模拟33垫底反思 2021.8.8
T1 Hunter
考场上没写$%p$挂了25分。也是很牛皮,以后打完过了样例一定要检查
因为样例太小了。。。。。。很容易忘记%%%%
正解随便手模就出来了。


1 #include<bits/stdc++.h>
2 #define int long long
3 using namespace std;
4 const int NN=1e5+5,p=998244353;
5 int n,w[NN],ans;
6 inline int qmo(int a){
7 int ans=1,b=p-2,c=p; a%=c;
8 while(b){ if(b&1) ans=(ans*a)%c; b>>=1; a=(a*a)%c; }return ans;
9 }
10 namespace WSN{
11 inline short main(){
12 scanf("%lld",&n); for(int i=1;i<=n;i++) scanf("%lld",&w[i]);
13 for(int i=2;i<=n;i++) (ans+=w[i]*qmo((w[1]+w[i])%p)%p)%=p;
14 printf("%lld\n",ans+1); return 0;
15 }
16 }
17 signed main(){return WSN::main();}
T2 Defence
据说是很水的动态开点权值线段树板子。。。。。
想到用线段数维护的值,但是不会打动态开点了。。。
数据结构太弱了,码力太弱了。。。。。决定以后有时间就打数据结构
恶心死自己的那种。。。盯着代码望穿秋水的那种。。。
基本思路:
维护的信息有第一个一的位置,最后一个一的位置,区间内最长的$0$串的长度
每个点开一颗权值线段树,维护当时使用完法术后的序列信息
然后$dfs$到叶子节点向上做线段树合并,在合并的时候统计节点的信息记录答案就行了。
真是做过的题也不记得了,这不就是玫瑰花精吗????
原来数据结构学习的太不走心了,以后是要背锅的,前面付出的太少了。。。。
代码能力是要一点一点练的,不是想想题看看代码就会的,以后一定要多自己码,唉~
思路是很简单的,考场上还是可以想到的,但是被自己的码力限制了,苦恼


1 #include<bits/stdc++.h>
2 using namespace std;
3 const int NN=1e5+5;
4 int n,m,q,rt[NN],ans[NN];
5 struct SNOW{int to,next;};SNOW e[NN<<1];int head[NN],rp;
6 inline void add(int x,int y){e[++rp]=(SNOW){y,head[x]}; head[x]=rp;}
7 struct SNOWtree{
8 int seg,ls[NN*40],rs[NN*40];
9 int pre[NN*40],nxt[NN*40],len[NN*40];
10 inline void pushup(int x){
11 if(!ls[x]){pre[x]=pre[rs[x]]; nxt[x]=nxt[rs[x]]; len[x]=len[rs[x]]; return;}
12 if(!rs[x]){pre[x]=pre[ls[x]]; nxt[x]=nxt[ls[x]]; len[x]=len[ls[x]]; return;}
13 int lenth=pre[rs[x]]-nxt[ls[x]]-1;
14 len[x]=max(lenth,max(len[ls[x]],len[rs[x]]));
15 pre[x]=min(pre[ls[x]],pre[rs[x]]);
16 nxt[x]=max(nxt[ls[x]],nxt[rs[x]]);
17 }
18 inline void insert(int &x,int l,int r,int pos){
19 if(!x) x=++seg;
20 if(l==r){
21 pre[x]=nxt[x]=pos;
22 len[x]=0;
23 return;
24 }int mid=l+r>>1;
25 if(pos<=mid) insert(ls[x],l,mid,pos);
26 else insert(rs[x],mid+1,r,pos);
27 pushup(x);
28 }
29 inline void merge(int &x,int y,int l,int r){
30 if(!x||!y) {x=x+y;return;}
31 if(l==r){
32 if(pre[y]){
33 pre[x]=nxt[x]=l;
34 len[x]=0;
35 }
36 return;
37 }int mid=l+r>>1;
38 merge(ls[x],ls[y],l,mid);
39 merge(rs[x],rs[y],mid+1,r);
40 pushup(x);
41 }
42 }tr;
43 inline void dfs(int f,int x){
44 for(int i=head[x];i;i=e[i].next){
45 int y=e[i].to; if(y==f) continue;
46 dfs(x,y);
47 tr.merge(rt[x],rt[y],1,m);
48 }
49 if(!tr.pre[rt[x]]) ans[x]=-1;
50 else ans[x]=max(tr.pre[rt[x]]+m-tr.nxt[rt[x]]-1,tr.len[rt[x]]);
51 }
52 namespace WSN{
53 inline short main(){
54 scanf("%d%d%d",&n,&m,&q);
55 for(int i=1,u,v;i<n;i++){
56 scanf("%d%d",&u,&v);
57 add(u,v); add(v,u);
58 }
59 for(int i=1,u,pos;i<=q;i++){
60 scanf("%d%d",&u,&pos);
61 tr.insert(rt[u],1,m,pos);
62 }dfs(0,1);
63 for(int i=1;i<=n;i++) printf("%d\n",ans[i]);
64 return 0;
65 }
66 }
67 signed main(){return WSN::main();}
T3 Connect
本次考试第二坑点,打了$spj$函数却没有调用。。。。失掉20分。。
两处失误当时只要是挽回一处都不会垫底。。。。
以后考试结束前十分钟一定要抽出时间检查自己提交的代码,不能再出失误了。。
数据范围提示状态压缩$dp$,思路比较神
$1$号点到$N$的路径唯一相当于存在一条$1$到$N$的链, 并且不在链上的每个联通块最多只和链上的一个点有连边
类似这样。那么我们要预处理出来的值就知道了。
$sum[S]$表示状态$S$的联通块中的边权总和
$to[S][i]$表示联通块$S$到$i$点的连边总和
那么$dp_{S,i}$就表示目前的状态为$S$,链的末端点为$i$的边权最大值,最后用总边权减去就可以得到删去边的最小值
看题解是完全能看明白的,粘一张图片


1 #include<bits/stdc++.h>
2 #define int long long
3 using namespace std;
4 const int NN=17;
5 int n,m,g[NN][NN],U,dp[1<<NN][NN],sum[1<<NN],to[1<<NN][NN];
6 inline void pre(){
7 for(int S=1;S<=U;S++) for(int i=0;i<n;i++) for(int j=i+1;j<n;j++)
8 if((S>>i&1)&&(S>>j&1)) sum[S]+=g[i][j];
9 for(int S=1;S<=U;S++) for(int i=0;i<n;i++) for(int j=0;j<n;j++)
10 if((S>>j&1)&&g[i][j]) to[S][i]+=g[i][j];
11 }
12 namespace WSN{
13 inline short main(){
14 scanf("%lld%lld",&n,&m); U=(1<<n)-1;
15 for(int i=1,u,v,w;i<=m;i++){
16 scanf("%lld%lld%lld",&u,&v,&w);--u;--v;
17 g[u][v]=g[v][u]=w;
18 }
19 pre(); memset(dp,-1,sizeof(dp));
20 dp[1][0]=0;
21 for(int S=1;S<=U;S++) for(int i=0;i<n;i++){
22 if(dp[S][i]==-1)continue;
23 for(int j=0;j<n;j++) if(!(S>>j&1)&&g[i][j]) dp[S|(1<<j)][j]=max(dp[S][i]+g[i][j],dp[S|(1<<j)][j]);
24 int CS=U^S;
25 for(int j=CS;j;j=(j-1)&CS) dp[S|j][i]=max(dp[S|j][i],dp[S][i]+to[j][i]+sum[j]);
26 }printf("%lld\n",sum[U]-dp[U][n-1]);
27 return 0;
28 }
29 }
30 signed main(){return WSN::main();}
连续两次了,这次比上一次考得还糟糕,上次明显是T1比较傻,没想到用优先队列优化,这次更恶心
直接挂分挂到垫底要知道离真正的考试越来越近了,要是现在模拟的时候再不认真,最后你一定会后悔现在你的所做所为,
就像你今天改T2时候疯狂不知道如何打出动态开点一样傻 ,反正机会越来越少,怎么也没办法逃脱进B的事实,
原来不管是真的没有思路也好,一场因为没有关freopen也好,还是因为马虎错误挂分也好,都已经为分层的失败作出了大贡献,
而且还是不能改变的贡献。消除这些负贡献的最好方法不是考完试之后找回很快把题改完,这顶多表示你对这些题都有一定的思路,其他还有什么呢
你有思路为什么不能考场上A掉呢?为什么不能用代码实现思路呢?还是之前语言学习时候的不走心,或是当时对OI的偏见。
不过,你现在的成绩就是不理想,反映出来的就是你实力不行,就是你还无法达到标准。再怎么解释也没用,
从小就比较反感那些考完试拍大腿的人,结果也快活成那样了,要改变呀~~~。
Noip模拟33垫底反思 2021.8.8的更多相关文章
- noip模拟33
\(\color{white}{\mathbb{失足而坠千里,翻覆而没百足,名之以:深渊}}\) 这场考试的时间分配非常不科学 开题试图想 \(t1\) 正解,一个半小时后还是只有暴力,特别惊慌失措 ...
- noip模拟33[进阶啦啦啦]
noip模拟33 solutions 不知道该咋说,这场考试其实是我这三四场以来最最最最最顺心的一场了 为啥呢?因为我这回思考有很多结果,得到了脑袋的回复 就是你想了半个小时就有了一点点头绪,那感觉就 ...
- 2019.7.29 NOIP模拟测试10 反思总结【T2补全】
这次意外考得不错…但是并没有太多厉害的地方,因为我只是打满了暴力[还没去推T3] 第一题折腾了一个小时,看了看时间先去写第二题了.第二题尝试了半天还是只写了三十分的暴力,然后看到第三题是期望,本能排斥 ...
- 2021.8.8考试总结[NOIP模拟33]
T1 Hunter 考场上一看期望直接状压拿了$45pts$跑了.结果正解只用$4$行? 把问题转化为一号猎人之前死的猎人数的期望加一. 期望的线性性. 对每个猎人$i$,$w_i+w_1$种情况中有 ...
- [NOIP模拟33]反思+题解
又考了一次降智题…… 拿到T1秒出正解(可能是因为我高考数学数列学的海星?),分解质因数以后用等比数列求和计算每个因子的贡献.但是当时太过兴奋把最后的$ans \times =$打成了$ans +=$ ...
- 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】
[题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...
- 2019.8.1 NOIP模拟测试11 反思总结
延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神 ...
- 2019.8.14 NOIP模拟测试21 反思总结
模拟测试20的还没改完先咕着 各种细节问题=错失190pts T1大约三分钟搞出了式子,迅速码完,T2写了一半的时候怕最后被卡评测滚去交了,然后右端点没有初始化为n…但是这样还有80pts,而我后来还 ...
- 2019.8.12 NOIP模拟测试18 反思总结
写个博客总是符合要求的对吧 回来以后第一次悄悄参加考试,昨天全程围观… 然后喜提爆炸120分wwwwwwwww T1用了全机房最慢的写法,导致改掉死循环T掉的一个点以后还是死活过不了最后一个点.T2全 ...
随机推荐
- Docker入门之zabbix-agent篇
在client端启动zabbix-agent服务 启动zabbix-agent有如下2种方式: agent start root@lykj-45:/srv# ls leyao zabbix zabbi ...
- Identity角色管理五(添加用户到角色组)
因需要在用户列表中点详情按钮来到当前页,所以需要展示分组详情,并展示当前所属角色组的用户 public async Task<ActionResult> Details(string id ...
- linux下制作img文件
一.简介 制作img文件可以使用linux系统中的dd命令制作,Linux dd 命令用于读取.转换并输出数据.dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件.设备或标准输 ...
- AWVS13批量添加目标脚本
# -*-coding:utf-8-*- # @Author:malphite.tang import json import requests from queue import Queue req ...
- 忘记root密码的情况下如何给指定账户开通远程访问
1.跳过验证使用root登录 net stop mysql //停止MYSQL服务 打开第一个cmd窗口,切换到mysql的bin目录,运行命令: mysqld --defaults-file=&qu ...
- Java中int和short的转化
例子[1]: 第一种情况: short a = 1; a = a + 1; // 这一步会报错 System.out.print(a); 编译器会报错,原因如下: 第二种情况: short a = 1 ...
- CPU到底是什么东西?它为什么能够执行数学运算?
CPU到底是什么东西?它为什么能够执行数学运算? 本文地址http://yangjianyong.cn/?p=20转载无需经过作者本人授权 简单的物理电路 先来看一张初中学过的物理电路图: 从图中我们 ...
- 微信公众号jssdk分享接口onMenuShareAppMessage自定义的参数无效,微信分享失败原因
使用jssdk为jweixin-1.4.0.js updateTimelineShareData,安全域名接口也设置正确,可就是分享,转发朋友圈不成功. 解决方案:采用<script src=& ...
- js 命令模式 组合模式
* 基本宏命令 var closeDoorCommand = { execute: function() { console.log("Closing the door..."); ...
- php 页面公共部分 转化为js document.write(); 并由匿名函数包裹
页面公共部分以javascript document.write()方式加载 生成的js放到需要的位置 footer.js 放到body底部引入 ... <script src=" ...