日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8.11模拟:数据结构

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8.11模拟:数据结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 考場
  • 復盤
    • T1 forward
    • T2 basket
    • T4 square
  • 總結

前言

320分
還不錯啦
沒有掛分還是很可貴的
(暴力TLE就不怪我了)
T4反過來想其實就很可做了
逆向的思想需要培養(今天T1、昨天T2也是)
說實話今天早上狀態不太好
特困生
不過T1成了一個很好的激勵劑

考場

(不分題講了,有些亂)
先看了一下題,真就和zld的提示一樣,T1水的不行,后面的思路不太明顯(但是相對感覺T3可做)
本來應該先寫個T3的暴力穩一穩什么的
但是鑒于T1水的太厲害了
我基本還是有自信不會把鏈表的板子寫掛的
所以還是先把T1正解寫了(10min,心態就好起來了)
然后是T2和T4的暴力
T2的暴力還是有了一些技巧,用鏈表插入代替排序可以到n2(70pts)
T4怎么想各種思路都是n3的,50分之外不太能奢求太多了
回頭看相對感覺可做的T3
(gg誠不欺我,先把暴力寫了心態穩了很多)
(尤其是還剩兩個多小時的時候)
然后聽naonao的預言嘗試了離線然后發現就非常可做
然后不著急細細寫就把它切掉了(這題沒掛還是挺不容易的)
此時大概是10:20,還有80分鐘
時間的利用效率開始直線下滑
先把每道題瞅了一遍確保沒有腦殘bug
然后我想到T2n=2000的70分似乎n2logn也能過
又因為覺得鏈表很容易掛
所以反向優化加了個log變成無腦代碼
(然后就T了10分…事實是我那個鏈表并沒有寫掛…)
然后還有60min的樣子
開始摳分最不滿的T4
沒有摳出來,其實就是反著想沒有想到
然后開始寫玄學常數級優化…
(包括特殊數據就上下左右翻折等詭異操作)
然后就過了60!
針不戳
(996OJ的機子測甚至可以到80)
然后就又檢查了檢查,就結束了

復盤

T1 forward

缺乏逆向思維
反著想甚至比鏈表還好做

T2 basket

爆肝題
主要是set用的不熟練
std那樣把新元素insert進去再刪點會好做很多
而且還加了兩個上下界防止溢出值得學習
我的代碼:

#include<bits/stdc++.h> using namespace std; #define ll long long const int N=2e5+100; int n,m,q,t; int nxt[N],jd[N]; struct node{ll a,b,c,id;bool operator < (const node y)const{if(b!=y.b)return b<y.b;else return c>y.c;} }p[N]; bool cmp(node x,node y){return x.a>y.a; } struct node0{ll v,id;bool operator < (const node0 y)const{return v<y.v;} }; set<node>s; set<node>:: iterator it; multiset<node0>s0; multiset<node0>:: iterator it0; ll ans,A,B,C; void insert(node o){it=s.upper_bound(o);if(it!=s.end()&&(*it).c>=o.c) return;jd[o.id]=1;while(it!=s.begin()&&!s.empty()){it--;if((*it).c<=o.c){jd[(*it).id]=0;s.erase(it);it=s.upper_bound(o);}else{nxt[(*it).id]=o.c;s0.insert((node0){(*it).b+nxt[(*it).id],(*it).id});break;}}it=s.upper_bound(o);if(it!=s.end()){nxt[o.id]=(*it).c;}else nxt[o.id]=0;s0.insert((node0){o.b+nxt[o.id],o.id});s.insert(o);return;} int main(){scanf("%d",&t);while(t--){memset(nxt,0,sizeof(nxt));s.clear();s0.clear();scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lld%lld%lld",&p[i].a,&p[i].b,&p[i].c);}sort(p+1,p+1+n,cmp);for(int i=1;i<=n;i++) p[i].id=i;ans=p[1].a;for(int i=1;i<=n;i++){A=i==n?0:p[i+1].a;insert(p[i]);ll now;while(1){node0 o=*s0.begin();//printf("ok");// printf("top:v=%d id=%d nxt=%d\n",o.v,o.id,nxt[o.id]);if(jd[o.id]&&o.v==p[o.id].b+nxt[o.id]){now=o.v;break;}else s0.erase(s0.begin());}ans=min(ans,A+now);ans=min(ans,A+(*s.begin()).c);//printf("i=%d A=%lld head=%lld\n",i,A,*s0.begin());//printf("now=%d C=%d ans=%lld\n",now,(*s.begin()).c,ans);}printf("%lld\n",ans);} } /* 2 3 1 2 100 100 4 5 1 100 3 1 10 10 10 */

T4 square

代碼細節挺多的
不太好調
尤其是復制粘貼一定要改干凈!

總結

今天不錯啦
但是晚上T2調了太久了
抵制特困生,我需要早睡qwq
明天:動態規劃,加油!

總結

以上是生活随笔為你收集整理的8.11模拟:数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。