不是拆广州塔

Day -inf

四套NOI模拟降智

Day0

拆了一发新新

本来想复习小圆脸结果拆了3h最后还没带任意门

没有帘子可还行

第一天由于没发现被子可以抽出来就没睡好

Day1

8:30开考,0.5h看题+切T1

1h切T2(主席树0.9s很虚)

以为能切T3,想了个很假的方法调了2h

T3SCP?

最后5min10分暴力

然而水法 并 非 全 部 木 大

T3正解:

枚举每个数最终到哪个点上,因为直接判边与边的关系不好搞,所以用链表维护每个点相连的边之间的关系

关系有三种:第一条,两条边相邻,最后一条

再建两个点表示头和尾,枚举时判断是否合法即可

因为剩下无限制的边随便放必定合法

code(洛谷数据):

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#define fo(a,b,c) for (a=b; a<=c; a++)
#define fd(a,b,c) for (a=b; a>=c; a--)
#define min(a,b) (a<b?a:b)
using namespace std; int a[4002][2];
int ls[2001];
int b[2001];
int pre[2001][2002];
int nxt[2001][2002];
int ans[2001];
int d[2001];
int d1[2001];
int d2[2001];
int T,n,i,j,k,l,len,mn,tot;
bool bz; void New(int x,int y)
{
++len;
a[len][0]=y;
a[len][1]=ls[x];
ls[x]=len;
} void dfs(int Fa,int Ls,int t)
{
int id,i,j,k,l; if (t==2 && Fa==0)
n=n; if (Ls && nxt[t][Ls]==Ls && pre[t][n+1]==n+1 && (pre[t][Ls]!=0 || d[t]==1))
mn=min(mn,t); for (i=ls[t]; i; i=a[i][1])
if (a[i][0]!=Fa)
{
if (t==3)
n=n; id=i/2; if (!Ls && pre[t][id]==id && nxt[t][0]==0 && (nxt[t][id]!=n+1 || d[t]==1) || Ls && pre[t][Ls]!=id && nxt[t][Ls]==Ls && pre[t][id]==id && (pre[t][Ls]!=0 || nxt[t][id]!=n+1 || d[t]==1))
dfs(t,id,a[i][0]);
}
} void Dfs(int Fa,int t)
{
int i; if (t==mn)
{
bz=1;
return;
} for (i=ls[t]; i; i=a[i][1])
if (a[i][0]!=Fa)
{
++tot;
d1[tot]=a[i][0];
d2[tot]=i/2; Dfs(t,a[i][0]); if (bz)
return; --tot;
}
} int main()
{
// freopen("testdata1.in","r",stdin);
// freopen("d1t3.in","r",stdin); scanf("%d",&T);
for (;T;--T)
{
memset(ls,0,sizeof(ls));
len=1; scanf("%d",&n);
fo(i,1,n)
scanf("%d",&b[i]),++d[i];
fo(i,2,n)
{
scanf("%d%d",&j,&k); New(j,k);
New(k,j); ++d[j];
++d[k];
} fo(i,1,n)
{
fo(j,0,n+1)
pre[i][j]=nxt[i][j]=j;
} fo(i,1,n)
{
bz=tot=0;
mn=n+1; dfs(0,0,b[i]);
Dfs(0,b[i]); nxt[b[i]][0]=d2[1];
pre[b[i]][nxt[b[i]][d2[1]]]=0; if (nxt[b[i]][d2[1]]!=d2[1])
pre[b[i]][d2[1]]=nxt[b[i]][d2[1]]=-1; --d[b[i]]; fo(j,1,tot-1)
{
k=pre[d1[j]][d2[j]];
l=nxt[d1[j]][d2[j+1]]; nxt[d1[j]][k]=l;
pre[d1[j]][l]=k; if (pre[d1[j]][d2[j]]!=d2[j])
nxt[d1[j]][d2[j]]=pre[d1[j]][d2[j]]=-1;
if (nxt[d1[j]][d2[j+1]]!=d2[j+1])
nxt[d1[j]][d2[j+1]]=pre[d1[j]][d2[j+1]]=-1; --d[d1[j]];
} pre[d1[tot]][n+1]=d2[tot];
nxt[d1[tot]][pre[d1[tot]][d2[tot]]]=n+1; if (pre[d1[tot]][d2[tot]]!=d2[tot])
pre[d1[tot]][d2[tot]]=nxt[d1[tot]][d2[tot]]=-1; --d[d1[tot]]; ans[i]=mn;
} fo(i,1,n)
printf("%d ",ans[i]);
printf("\n");
}
}

晚上又拆了一发新新

Day2

8:30看题,想了0.5h想到T184分,之后一直在想100分

9:30时打了84分,然后又想了0.5h优化想不出

10:00想T2,瞎猜结论从后往前贪心选最右且合法的

打了一发n^2过了样例,然后写了单调栈的O(n)

然后高精度打错了并且没有把type=0分开

期望(?)80

11:00想T3,写了55分

菊花图来不及想了

T2代码(洛谷数据):

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#define fo(a,b,c) for (a=b; a<=c; a++)
#define fd(a,b,c) for (a=b; a>=c; a--)
using namespace std; struct Type{
long long a[4];
} ans,b,c;
long long a[40000001];
long long f[40000001];
int d[40000001];
int P[100001];
int L[100001];
int R[100001];
int n,type,i,j,k,l,h,t;
long long ans1,ans2,s,s1,s2,x,y,z,m;
bool bz; int main()
{
// freopen("testdata3.in","r",stdin);
// freopen("d2t2.in","r",stdin); scanf("%d%d",&n,&type);
if (!type)
{
fo(i,1,n)
scanf("%lld",&a[i]),a[i]+=a[i-1];
}
else
{
scanf("%lld%lld%lld%lld%lld%lld",&x,&y,&z,&a[1],&a[2],&m);
fo(i,1,m)
scanf("%d%d%d",&P[i],&L[i],&R[i]); fo(i,3,n)
a[i]=(x*a[i-1]+y*a[i-2]+z)%1073741824; fo(i,1,m)
{
fo(j,P[i-1]+1,P[i])
a[j]=a[j]%(R[i]-L[i]+1)+L[i];
} fo(i,1,n)
a[i]+=a[i-1];
} h=t=1;
d[1]=0;
fo(i,1,n)
{
while (h<t && f[d[h+1]]+a[d[h+1]]<=a[i])
++h; f[i]=a[i]-a[d[h]];
while (h<=t && f[d[t]]+a[d[t]]>=f[i]+a[i])
--t; d[++t]=i;
} l=n;
fd(i,n,1)
if (f[i-1]<=a[l]-a[i-1])
{
s=a[l]-a[i-1];
fo(j,0,3)
{
b.a[j]=s%100000000;
s/=100000000; c.a[j]=0;
}
fo(j,0,3)
{
fo(k,0,j)
c.a[j]+=b.a[k]*b.a[j-k]; if (j<3)
{
c.a[j+1]+=c.a[j]/100000000;
c.a[j]%=100000000;
}
} fo(j,0,3)
{
ans.a[j]+=c.a[j];
if (j<3)
{
ans.a[j+1]+=ans.a[j]/100000000;
ans.a[j]%=100000000;
}
} l=i-1;
} bz=0;
fd(i,3,0)
if (ans.a[i])
{
if (bz)
{
j=ans.a[i];
fo(k,1,8)
{
if (!j)
printf("0");
j/=10;
}
}
else
bz=1; printf("%lld",ans.a[i]);
}
printf("\n");
}

车上拆了半发新新

后记

成绩出了再补

教训:

想到可能是正解的东西要谨慎考虑(正确性&时间),一定要打先部分分

要把有把握能过的点特判出来,避免被其它不确定算法影响

暴力打满不打挂就有500了(

*程序一定要分段,就算是水法也要交上去但要注意分段的范围

多刷题,提升手速+智商

-11.20

突然发现D1T3应该可以过链?

-12.1

UOJ测试D2T288分?

实际上是后面三个点T了

好像在牛客也T了

CCF少爷机吼啊

-12.2

妙啊

D2T2只挂了4分,D1T3链过了,D1T2主席树没被卡

100+100+10+84+80+55=429-->100+100+35+84+96+55=470

CCF牛逼!(正论)

CSP-S2019游记&拆塔记的更多相关文章

  1. CSP 2019游记 & 退役记

    扶苏让我记录他AK CSP 的事实 ZAY NB!!! "你不配" 两年半的旅行结束了,我背着满满的行囊下了车,望着毫不犹豫远去的列车,我笑着哭了,笑着翻着我的行囊-- 游记 Da ...

  2. NOIP2018游记 & 退役记

    NOIP2018游记 & 退役记 我是一名来自湖北武汉华中师大一附中的高二\(OIer\),学习\(OI\)一年,今年去参加\(NOIP\),然后退役.这是一篇\(NOIP2018\)的游记, ...

  3. CSP-J&S2019前颓废记

    说了是颓废记,就是颓废记,因为真的很颓废...... 2018年12月 我看懂了<啊哈算法>(仅仅是看懂,并没有完全学会,只看得懂,却不会敲) 插曲:八上期末考试 我们老师阻挠我继续学OI ...

  4. CSP 2019 游记

    Day -32 开坑. 没什么好说的,等个 5 天等初赛(应该叫第一轮认证)挂掉之后就能弃坑了. 今天开始停课,虽然每天只停半天,但是感觉还是特别的舒服~ 然而得等初赛过了才能全天停课-- 没关系,熬 ...

  5. NOIP2018游记(退役记。)

    Noip2018游记 这可能是写的最后一篇博客? \(Day0\) 早上六点从学校出发? 早上有雾,在车上扯淡,睡觉. 莫名其妙到了中午,想着午饭怎么解决,后来才知道早上发的四个面包竟然就包括我的午饭 ...

  6. 游记&退役记

    划水两天. 给61级和62级都讲过课了,圆了一个梦吧. 62级好好学,61级更是. 老人进养老院了,小孩子也该从幼稚园出来了. 祝广一所有OIER,前程似锦,实力++,rp++. 奶一口zbq:NOI ...

  7. 第十八次CSP认证游记 | 2019.12.15

    CSP认证的考试是Haogod介绍的,取得一定成绩之后能有机会参加CCSP的分赛区和全国决赛.这次来参加认证要感谢老师的奔走为我们申请学校的报销,虽然最终因为这不是比赛所以报名费和差旅费下不来,但是老 ...

  8. 2020 CSP&NOIP 游记

    CSP初赛 CSP初赛 Day -1 早上打了模拟赛,T2寒假正好做过,然而还是还是被踩Orz,郑外NB!.中午出校吃了大盘鸡和拉面,还带回来了三瓶可乐. 初赛知识点看了两页不(看)想(不)看(懂)了 ...

  9. CSP/S 2020 退役记

    上一次的AFO记 上上次的AFO记 Day -INF 一条咸鱼的垂死挣扎. RP+=INF Day 0 出发辣. 早上来到机房,带上了准备的面包和泡面....然而后来嫌太占地方就没拿...草了. 而且 ...

随机推荐

  1. HTML DOM Document对象 元素对象 属性对象 事件对象

    DOM Document对象 DOM 元素 对象 DOM 属性 对象 DOM 事件 菜鸟教程上 总结挺全的,就不多废话,链接点进去即可.. 后期对经常用到的会在此更新一些总结..... 开学了...自 ...

  2. Python学习之面向对象(一)

    第六章 面向对象 6.1 面向对象的初识 6.1.1 什么是面向对象 面向过程式编程: ​ 好处:出色的完成所有的需求 ​ 坏处:凡是更改或者增加一条需求,可能整个项目都随之改变 面向对象式编程: 类 ...

  3. MTU,MRU,MSS

    MTU是以太网数据链路层概念,默认是1500,当在PPPOE环境的时候,是1492和1480,两者有何区别,暂不清楚 MRU是PPP链路数据链路层的概念,都是最大传输单元的意思 MSS是最大报文段长度 ...

  4. 关于DataFram的.values

    DataFram类型的变量a,设a有n个样本,m个特征,当执行语句b = a.values后,b为(n, m)的ndarray矩阵类型,当执行c = b.ravel()后,c为(n*m,)维行向量

  5. C语言作业09

    问题 答案 这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 https://i.cnblogs.com/EditPosts.aspx?opt=1 我在这个课程的目标是 在学好C语言编程的基础 ...

  6. airflow部署

    官网: http://airflow.apache.org/installation.html 原理: https://www.cnblogs.com/cord/p/9450910.html 安装: ...

  7. js and java 中正则表达式的使用

    首先介绍一下js当中的几个关键的正则表达式: 1.js中的正则表达式校验 a: RegExp(如果这里有转义字符的话,需要使用“\\”) var patt1=new RegExp("e&qu ...

  8. Luogu P4095 [HEOI2013]Eden的新背包问题

    题目 求出从前往后的背包\(f_{i,j}\)和从后往前的背包\(F_{i,j}\). 那么对于询问\((d,e)\),答案就是\(\max\limits_{i=0}^e f_{d-1,i}+F_{d ...

  9. 基于Caffe训练AlexNet模型

    数据集 1.准备数据集 1)下载训练和验证图片 ImageNet官网地址:http://www.image-net.org/signup.php?next=download-images (需用邮箱注 ...

  10. JS判断当前页面是在 QQ客户端/微信客户端/iOS浏览器/Android浏览器/PC客户端

    browser.js var browser = { versions: function () { var u = navigator.userAgent, app = navigator.appV ...