两个机房又和在一起考试

开场看了看T1,感觉挺水的,过。

T2,这个式子有点奇怪,暂时没什么思路,过

T3,好像保留最后几位换个根处理一下就行了,过,先去打T1

于是T1大概打了0.5h,连暴力带正解带对拍,码完之后感觉挺稳的,就过了。去看T3。

T3换个根就没事了,但是我一开始状态设置的有问题,一拍就爆炸了。

调调调,调过了T3,拍上了,感觉很稳,就交了一下T3和T1,此时过了两个小时

去把T2的式子化简了一下,发现只与前面所有数的和有关,好像是个很简单的dp,就码出来了。

不太会打暴力,于是码了个dfs,拍上了,很稳。

然后我去上了个厕所

然后碰见了DeepinC

然后他问我:“你切了几个?”

然后我感觉不太对劲,他都用“切”了,说明。。。。。。他AK了?

然后我决定回答:3个(这句话目的在于给DeepinC压力,使他不会过早颓废)

出分了,T2T3都A了,T1爆炸了

T1.

  注意这题不保证b是有序的,需要自己手动sort,不这么干会变成20分,别问我怎么知道的。

  然而我打对拍时智障地认为输入保证有序,于是我将所有数生成了出来,然后sort了一遍,然后输出

  然后错失了人生第一个AK

T2.

  把式子化简了,考虑每个点的贡献就没了。

 #include<bits/stdc++.h>
using namespace std;
int f[][][],t;
int n,m,a[][],ans;
int main(){
scanf("%d",&t);
while(t--){
ans=0x7fffffff;
memset(f,0x3f,sizeof(f));
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&a[i][j]);
f[][][a[][]]=(n+m-)*a[][]*a[][];
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
if(i==&&j==)continue;
for(int k=;k<=(i+j)*;k++){
int sum=(n+m-)*a[i][j]*a[i][j]-k*a[i][j]*;
int mi=min(f[i-][j][k],f[i][j-][k]);
if(mi==0x3f3f3f3f)continue;
mi+=sum;
f[i][j][k+a[i][j]]=min(f[i][j][k+a[i][j]],mi);
if(i==n&&j==m)ans=min(ans,f[i][j][k+a[i][j]]);
}
}
printf("%d\n",ans);
}
return ;
}

T3.

  换根dp,考虑每个数二进制最后4位,统计答案即可。

  注意m!=0时不能算自己到自己的贡献。

 #include<bits/stdc++.h>
using namespace std;
int n,m,fi[],ne[],to[],ans,dis[],w[],tot;
int res[],sum[][],siz[],ss[][];
inline void add(int x,int y,int z){
ne[++tot]=fi[x];
fi[x]=tot;
to[tot]=y;
w[tot]=z;
}
void dfs(int x,int fa){
siz[x]=;ss[x][]=;
for(int i=fi[x];i;i=ne[i]){
int y=to[i];
if(y!=fa){
dis[y]=dis[x]+w[i];
ans+=dis[y]^m;
res[]+=dis[y];
dfs(y,x);
siz[x]+=siz[y];
for(int j=;j<=;j++)
ss[x][(j+w[i])&]+=ss[y][j];
}
}
}
void dfs2(int x,int fa){
for(int i=fi[x];i;i=ne[i]){
int y=to[i];
if(y!=fa){
res[y]=res[x]+(n-*siz[y])*w[i];
for(int j=;j<=;j++){
sum[y][(j+w[i])&]+=sum[x][j]-ss[y][(j-(w[i]&)+)&];
sum[y][j]+=ss[y][j];
}
dfs2(y,x);
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=,x,y,z;i<n;i++)
scanf("%d%d%d",&x,&y,&z),add(x,y,z),add(y,x,z);
dfs(,);
printf("%d\n",ans);
for(int i=;i<=;i++)
sum[][i]=ss[][i];
dfs2(,);
for(int i=;i<=n;i++){
sum[i][]--;
for(int j=;j<=;j++)
res[i]=res[i]-j*sum[i][j]+(m^j)*sum[i][j];
printf("%d\n",res[i]);
}
return ;
}

NOIP模拟27的更多相关文章

  1. noip模拟27[妹子图·腿·腰](fengwu半仙的妹子们)

    \(noip模拟27\;solutions\) 这次吧,我本来以为我能切掉两个题,结果呢??只切掉了一个 不过,隔壁Varuxn也以为能切两个,可惜了,他一个都没切...... 确实他分比我高一点,但 ...

  2. 2021.7.29考试总结[NOIP模拟27]

    T1 牛半仙的妹子图 做法挺多的,可以最小生成树或者最短路,复杂度O(cq),c是颜色数. 我考场上想到了原来做过的一道题影子,就用了并查集,把边权排序后一个个插入,记录权值的前缀和,复杂度mlogm ...

  3. 20190820 Tue 集训总结&NOIP模拟 27

    低谷度过了? 但是skyh阿卡了,还是反衬出我的辣鸡. T1知道要sort,却忘了判重,正解不如暴力分高,555. T2成功化出正解柿子,然后化过头了,化出了无法DP的柿子. 果然不够强,大神们一眼就 ...

  4. NOIP模拟27(命悬一线)

    考得太悬了!

  5. 7.29考试总结(NOIP模拟27)[牛半仙的妹子图·Tree·序列]

    前言 从思路上来讲是比较成功的,从分数上就比较令人失望了. 考场上是想到了前两个题的正解思路,其实最后一个题是半个原题,只可惜是我看不懂题... 这波呀,这波又是 语文素养限制OI水平.. 改题的时候 ...

  6. NOIP 模拟 $27\; \rm 牛半仙的妹子序列$

    题解 \(by\;zj\varphi\) 明显一道极长上升子序列的题. 直接线段树维护单调栈,最后单调栈求出可以贡献的序列,答案相加就行. Code #include<bits/stdc++.h ...

  7. NOIP 模拟 $27\; \rm 牛半仙的妹子Tree$

    题解 \(by\;zj\varphi\) 很妙的虚树题. 考虑若没有操作 \(2\),那么直接记录一下扩散到它的最短时间和询问时间相比即可,可以当作一个树上最短路. 有 \(2\) 操作怎么办,将操作 ...

  8. NOIP 模拟 $27\; \rm 牛半仙的妹子图$

    题解 \(by\;zj\varphi\) 颜色数很少,考虑枚举颜色数. 建出来一棵最小生成树,可以证明在最小生成树上,一个点到另一个点的路径上的最大权值最小(易证,考虑 \(\rm kruskal\) ...

  9. 8.22 NOIP 模拟题

      8.22 NOIP 模拟题 编译命令 g++ -o * *.cpp gcc -o * *.c fpc *.pas 编译器版本 g++/gcc fpc 评测环境 位 Linux, .3GHZ CPU ...

随机推荐

  1. java第2天:类,对象,封装和构造方法

    1 面向对象简述 将 {1,3,45,56,78,90}转化为[1,3,45,56,78,90] 1-2 方法1:面向过程 代码块 public class test { public static ...

  2. spring5 源码深度解析----- Spring事务 是怎么通过AOP实现的?(100%理解Spring事务)

    此篇文章需要有SpringAOP基础,知道AOP底层原理可以更好的理解Spring的事务处理. 自定义标签 对于Spring中事务功能的代码分析,我们首先从配置文件开始人手,在配置文件中有这样一个配置 ...

  3. 从一道ctf看php反序列化漏洞的应用场景

    目录 0x00 first 前几天joomla爆出个反序列化漏洞,原因是因为对序列化后的字符进行过滤,导致用户可控字符溢出,从而控制序列化内容,配合对象注入导致RCE.刚好今天刷CTF题时遇到了一个类 ...

  4. java动手动脑和动手实验

    动手动脑一: EnumTest.java: 程序代码: public class EnumTest { public static void main(String[] args) { Size s= ...

  5. linux系统下使用宝塔面板安装owncloud常见问题

    在安装owncloud时出现 无法写入“config”目录! 解决方法 在宝塔面板,找到owncloud根目录,点击"权限“设置权限 将权限设置为777,应用到子目录打勾(如下图) 确定后再 ...

  6. 【RT-Thread】线程的基本知识

    什么是线程? 人们在生活中处理复杂问题时,惯用的方法就是分而治之,即把一个大问题分解成多个相对简单.比较容易解决的小问题,小问题逐个被解决了,大问题也就随之解决了.同样,在设计一个较为复杂的应用程序时 ...

  7. Ubuntu安装时卡死在启动界面

    上下选中Install Ubuntu后,按'e'进入编辑页面(不要按回车),删除'quiet splash'之后的"---",输入"$vt_handoff acpi_os ...

  8. 在博客中增加自己的live2d纸片人模型方法

    目录 在博客中增加自己的live2d纸片人模型 准备工具 使用步骤 附件 在博客中增加自己的live2d纸片人模型 准备工具 github仓库:存放live2d模型和json文件 如果你的博客支持本地 ...

  9. HDU 3371 Connect the Cities(并查集+Kruskal)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=3371 思路: 这道题很明显是一道最小生成树的题目,有点意思的是,它事先已经让几个点联通了.正是因为它先 ...

  10. java学习4-面向对象(上)

    1.类和对象 修饰符可以是public.final.abstract或者完全省略这三个修饰符 类名命名规则:每个单词首字母大写,其他字母全部小写,单词与单词之间不使用分隔符 修饰符:可以省略,也可以是 ...