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的更多相关文章

  1. noip模拟33

    \(\color{white}{\mathbb{失足而坠千里,翻覆而没百足,名之以:深渊}}\) 这场考试的时间分配非常不科学 开题试图想 \(t1\) 正解,一个半小时后还是只有暴力,特别惊慌失措 ...

  2. noip模拟33[进阶啦啦啦]

    noip模拟33 solutions 不知道该咋说,这场考试其实是我这三四场以来最最最最最顺心的一场了 为啥呢?因为我这回思考有很多结果,得到了脑袋的回复 就是你想了半个小时就有了一点点头绪,那感觉就 ...

  3. 2019.7.29 NOIP模拟测试10 反思总结【T2补全】

    这次意外考得不错…但是并没有太多厉害的地方,因为我只是打满了暴力[还没去推T3] 第一题折腾了一个小时,看了看时间先去写第二题了.第二题尝试了半天还是只写了三十分的暴力,然后看到第三题是期望,本能排斥 ...

  4. 2021.8.8考试总结[NOIP模拟33]

    T1 Hunter 考场上一看期望直接状压拿了$45pts$跑了.结果正解只用$4$行? 把问题转化为一号猎人之前死的猎人数的期望加一. 期望的线性性. 对每个猎人$i$,$w_i+w_1$种情况中有 ...

  5. [NOIP模拟33]反思+题解

    又考了一次降智题…… 拿到T1秒出正解(可能是因为我高考数学数列学的海星?),分解质因数以后用等比数列求和计算每个因子的贡献.但是当时太过兴奋把最后的$ans \times =$打成了$ans +=$ ...

  6. 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】

    [题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...

  7. 2019.8.1 NOIP模拟测试11 反思总结

    延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神 ...

  8. 2019.8.14 NOIP模拟测试21 反思总结

    模拟测试20的还没改完先咕着 各种细节问题=错失190pts T1大约三分钟搞出了式子,迅速码完,T2写了一半的时候怕最后被卡评测滚去交了,然后右端点没有初始化为n…但是这样还有80pts,而我后来还 ...

  9. 2019.8.12 NOIP模拟测试18 反思总结

    写个博客总是符合要求的对吧 回来以后第一次悄悄参加考试,昨天全程围观… 然后喜提爆炸120分wwwwwwwww T1用了全机房最慢的写法,导致改掉死循环T掉的一个点以后还是死活过不了最后一个点.T2全 ...

随机推荐

  1. CSS导航菜单(二级菜单)

    index.html <div class="nav"> <ul> <li> <a href="#">Java& ...

  2. Identity角色管理五(添加用户到角色组)

    因需要在用户列表中点详情按钮来到当前页,所以需要展示分组详情,并展示当前所属角色组的用户 public async Task<ActionResult> Details(string id ...

  3. 聊一聊开闭原则(OCP).

    目录 简述 最早提出(梅耶开闭原则) 重新定义(多态开闭原则) 深入探讨 OCP的两个特点 对外扩展开放(Open for extension) 对内修改关闭 抽象 关闭修改.对外扩展? 简述 在面向 ...

  4. RocketMQ详解(四)核心设计原理

    专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...

  5. JSON,XML设计模式详解

    JSON在Java中的应用: Json概念: json 是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式用来存储和表示数据.JSON的语言简洁清晰,广为大众所欢迎,是一种理想的数据交换语言 ...

  6. 数学相关函数在PHP中的应用简介

    对于数学计算来说,最常见的其实还是我们使用各种操作符的操作,比如说 +加.-减 之类的.当然,PHP 中也为我们提供了一些可以方便地进行其他数学运算的操作函数.这些函数都属于 Math 扩展.这个扩展 ...

  7. 简单入门PHP中的多字节字符串操作

    什么是多字节的字符串操作呢?其实不少的同学可能都已经使用过了,但我们还是要从最基础的问题说起. 一个字符占几个字节并不是我们表面上看到的那样.正常情况下,一个数字或英文以及英文符号都是占用一个字节的. ...

  8. PHP的HTTP验证

    在日常开发中,我们进行用户登录的时候,大部分情况下都会使用 session 来保存用户登录信息,并以此为依据判断用户是否已登录.但其实 HTTP 也提供了这种登录验证机制,我们今天就来学习关于 HTT ...

  9. jQuery <= 1.11.3 DomXSS漏洞

    听团里说WordPress又爆跨站漏洞了:" XSS漏洞在Jetpack和二十五默认主题影响百万WordPress用户 ",分析发现原来是jQuery老版本的DOM XSS漏洞[错 ...

  10. ecshop 首页调用指定分类下的销售排行

    /*首页调用指定分类下的销售排行*/ function get_cats_top10($cat = '') { $sql = 'SELECT cat_id, cat_name ' . 'FROM ' ...