ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021/7/9——集训Day.4

2021-07-09 21:29:31  阅读:252  来源: 互联网

标签:GCC int Day.4 long 集训 2021 pragma c11 optimize


嘴疼死
早饭吃了块儿面包,午餐吃了俩鸡腿
xf学长把我订的抱枕带过来了,学长太帅了
上午讲的东西很自闭
基本上都不会
衡一的大佬按着黑题说是基础题,紫题瑟瑟发抖,没见过蓝色
斜率优化 D P DP DP 是什么我都没搞懂
还有矩阵乘法/快速幂,这种东西
除此之外的东西能尽力跟个一点点,太难了
中午临吃饭的时候zwj老师还看到hyp电脑桌面有个群聊(集训开的小群),然后遍历了一遍,直接社死了好吧
上午的知识点就不总结了,能听懂的都是零零碎碎的,没法写下来啊
看装压去了
下午装压也是一头雾水,晚上开始写题
先写了个树上 D P DP DP:小胖守皇宫,找不到链接,随便粘了个还不错的装压的博客
一开始以为用没有上司的舞会就能水过去,然后细看感觉不一样,这个可以根据情况,站到相邻的两个节点去

#include<bits/stdc++.h>
using namespace std;
#define N 100010
int f[N][5],nxt[N<<1],n,v[N],y[N<<1],tot,hd[N]; 
void lian(int a,int b){y[++tot]=b;nxt[tot]=hd[a];hd[a]=tot;}
void dfs(int x,int fa)
{
	int t=2147483646;
	for(int i=hd[x];i;i=nxt[i])
	{
		if(y[i]==fa)continue;
		dfs(y[i],x);
		f[x][0]+=min(f[y[i]][0],min(f[y[i]][1],f[y[i]][2]));
		f[x][1]+=min(f[y[i]][0],f[y[i]][1]);
		f[x][2]+=min(f[y[i]][1],f[y[i]][0]);
		t=min(t,f[y[i]][0]-min(f[y[i]][0],f[y[i]][1]));
	}
	f[x][0]+=v[x];f[x][1]+=t;
}
int main()
{
	scanf("%d",&n);int a,b;
	for(int i=1;i<=n;i++){scanf("%d",&v[i]);}
	for(int i=1;i<n;i++){scanf("%d%d",&a,&b);lian(a,b);}
	dfs(1,0);
	printf("%d",min(f[1][1],f[1][0]));
}

跑 d f s dfs dfs f[x][0]f[x][1]f[x][2]分别表示x号节点由自己守护,由父亲守护,儿子守护。

然后这样转移状态。

就 A A A 了。

然后有个题,学长造的数据有问题,只要输出个 1 1 1 就能 A A A
于是我 … … …… ……

#include<bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
using namespace std;
struct ios{
    inline char read(){
        static const int IN_LEN=1<<18|1;
        static char buf[IN_LEN],*s,*t;
        return (s==t)&&(t=(s=buf)+fread(buf,1,IN_LEN,stdin)),s==t?-1:*s++;
    }
    template <typename _Tp> inline ios & operator >> (_Tp&x){
        static char c11,boo;
        for(c11=read(),boo=0;!isdigit(c11);c11=read()){
            if(c11==-1)return *this;
            boo|=c11=='-';
        }
        for(x=0;isdigit(c11);c11=read())x=x*10+(c11^'0');
        boo&&(x=-x);
        return *this;
    }
}io;
void write(int x)
{
    if(x<0)putchar('-'),x=-x;
    if(x>9)write(x/10);
    putchar((x%10)^48);
}
long long gcd(long long x,long long y){
	if(x<y) swap(x,y);
	if(y==0) return x;
	else return gcd(y,x%y);
}
int add(int a,int b,int p=mod){return a+b>=p?a+b-p:a+b;}
int sub(int a,int b,int p=mod){return a-b<0?a-b+p:a-b;}
int mul(int a,int b,int p=mod){return (LL)a*b%p;}
void sadd(int &a,int b,int p=mod){a=add(a,b,p);}
void ssub(int &a,int b,int p=mod){a=sub(a,b,p);}
void smul(int &a,int b,int p=mod){a=mul(a,b,p);}
int random(int x){return (long long)rand()*rand()%x;}
int main(){puts("1");return 0;}

但是 A t c o d e r Atcoder Atcoder 提醒我不能水题
在这里插入图片描述
虽然看不懂再说什么,但是把我拉回了正轨

开始写【HAOI2015】树上染色这个题。
经典老题了,这里就只粘个代码哈~

#include<bits/stdc++.h>
using namespace std;
#define N 2010
int tot,n,k,sz[N],hd[N],nxt[N<<1],v[N<<1],y[N<<1];long long f[N][N];
void lian(int a,int b,int c){y[++tot]=b;nxt[tot]=hd[a];hd[a]=tot;v[tot]=c;}
void dfs(int x,int fa)
{
	f[x][0]=0;f[x][1]=0;sz[x]=1;
	for(int i=hd[x];i;i=nxt[i])
	{
		if(y[i]==fa)continue;
		dfs(y[i],x);sz[x]+=sz[y[i]];
	}
	for(int i=hd[x];i;i=nxt[i])
	{
		if(y[i]==fa)continue;
		for(long long j=min(k,sz[x]),sum;~j;j--)for(int g=0;g<=min(j,sz[y[i]]*1ll);g++)
			if(f[x][j-g]!=-1)
			{
				sum=g*(k-g)+(sz[y[i]]-g)*(n-k-sz[y[i]]+g);
				f[x][j]=max(f[x][j],f[x][j-g]+f[y[i]][g]+sum*v[i]);
			}
	}
}
int main()
{f
	scanf("%d%d",&n,&k);int a,b,c;
	for(int i=1;i<n;i++){scanf("%d%d%d",&a,&b,&c);lian(a,b,c);lian(b,a,c);}
	memset(f,-1,sizeof f);dfs(1,0);
	cout<<f[1][k];
}

只剩 25 m i n 25 min 25min 了,不想写题了,真自闭啊,
不过今天还碰到qjz学弟了,他退役前我一直认为他会成长为他们那一届最强的 o i e r oier oier
还有就是在班级群里被jkh神犇 F a k e Fake Fake 了
那个颅内骨折的同学家里开了个玩剧本杀的店,说我带人的话,我带的人六折,我免费
在这里插入图片描述
h h h c hhhc hhhc ,但我还是没时间啊
然后还和初中同学聊了聊天,有个人我还挺想的(一开始想不起他的名字,差点哭出来,自闭了)
大概就是这样吧,不想说什么了,过两天考试,我 D P DP DP 直接废掉,图论看明天学得怎样了。

标签:GCC,int,Day.4,long,集训,2021,pragma,c11,optimize
来源: https://blog.csdn.net/ydsrwex/article/details/118605079

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有