每天两个爆零小技巧

每天两个爆零小技巧,NOIP爆零,不再是梦!
其实是一堆zz错误罢了

Update 7.25
#define maxn 100039
double g[maxn];
int n;

scanf("%d",&n);
for(int i=1;i<=n;i++)
    scanf("%d",&g[i]);
for(int i=1;i<=n;i++)
	printf("%0.d ",g[i]);
#define maxn 100039
struct JTZ{
	int a[maxn],m;
}edge[maxn];
Update 7.26
while(!q.empty()){
		FLY cur=q.top(); q.pop();
		for(int i=head[cur.node];i;i=nex[i])
			if(to[i]==n){
				if(dist[to[i]]<dist[cur.node]+w[i])
				    ans[1]=dist[n]=dist[cur.node]+w[i],cnt=1;
				else ans[++cnt]=dist[cur.node]+w[i];
				q.push((FLY){n,dist[cur.node]+w[i]});
				if(cnt>=kk) return;
			}
			else if(dist[to[i]]<dist[cur.node]+w[i]){
				dist[to[i]]=dist[cur.node]+w[i];
				q.push((FLY){to[i],g[to[i]]+dist[to[i]]});
			}
	}
if(dist[to[i]]<dist[cur.node]+w[i])

PS:这里求的是 k k k短路

Update 7.28
void find(int ux,int dx,int uy,int dy,int fx,int fy,int num){
	if(ux==dx) return;
	if(uy==dy) return;
	int mx=(ux+dx)>>1;
	int my=(uy+dy)>>1;
	if(fx<=mx&&fy<=my){
		a[mx][my+1]=num; a[mx+1][my]=num; a[mx+1][my+1]=num;
		find(ux,mx,uy,my,fx,fy,num+1);
		find(ux,mx,my+1,dy,mx,my+1,num+2);
		find(mx+1,dy,uy,my,mx+1,my,num+3);
		find(mx+1,dx,my+1,dy,mx+1,my+1,num+4); 
		}
	if(fx<=mx&&fy>my){
		a[mx][my]=num; a[mx+1][my]=num; a[mx+1][my+1]=num;
		find(ux,mx,uy,my,mx,my,num+1);
		find(ux,mx,my+1,dy,fx,fy,num+2);
		find(mx+1,dy,uy,my,mx+1,my,num+3);
		find(mx+1,dx,my+1,dy,mx+1,my+1,num+4); 
		}
	if(fx>mx&&fy<=my){
		a[mx][my]=num; a[mx][my+1]=num; a[mx+1][my+1]=num;
		find(ux,mx,uy,my,mx,my,num+1);
		find(ux,mx,my+1,dy,mx,my+1,num+2);
		find(mx+1,dy,uy,my,fx,fy,num+3);
		find(mx+1,dx,my+1,dy,mx+1,my+1,num+4); 
		}
	if(fx>mx&&fy>my){
		a[mx][my]=num; a[mx][my+1]=num; a[mx+1][my]=num;
		find(ux,mx,uy,my,mx,my,num+1);
		find(ux,mx,my+1,dy,mx,my+1,num+2);
		find(mx+1,dy,uy,my,mx+1,my,num+3);
		find(mx+1,dx,my+1,dy,fx,fy,num+4); 
		}
	return;
}

PS:注意num数组的迭代。

a[mx][my+1]=++cnt; a[mx+1][my]=cnt; a[mx+1][my+1]=cnt;

写成

a[mx][my+1]=++cnt; a[mx+1][my]=++cnt; a[mx+1][my+1]=++cnt;
Update 7.31
typedef long long ll;
int f[39];
void init(){
	f[0]=1;
	for(int i=1;i<=35;i++)
		f[i]=f[i-1]<<1;
}
ll f[39];
#define pow2(x) f[x]
int cnt=pow2(n-1)*pow2(n-1);
十年OI一场空,不开longlong见祖宗
Update 8.3
NODE x=find(n-1,(ll)num%(ll)cnt);

PS:你有考虑过整除的时候吗?

Update 8.7
struct JTZ{
	int x,y;
	bool operator < (const JTZ x) const{
		if(this->x == x.x) return this->y<=x.y;
		return this->x < x.x;
	}
}tmp;
map<JTZ,bool> f;

多了一个=…

for(int i=1;i=n;i++)
Update:8.13
for(int i=1;i<=n;i++)
    for(int i=1;i<=n;i++)
inline int read(){
	char c=getchar();
	int sum=0;
	while((c>'9'||c<'0')&&c!='-') c=getchar();
	while('0'<=c&&c<='9'){
		sum=(sum<<1)+(sum<<3)+(c^48);
		c=getchar();
	}
	return sum;
}

PS:输入负数怎么办?

Update:8.14
printf("%lld",&a[h+1][0]);
Update:8.17
    int maxx=-1;
	for(int i=0;i<=m;i++)
	    maxx=max(f[n][i][i+1][1],f[n][i][i+1][0]);
	
Update:8.21
for(i=0;i<=m;i++){
	    ans=min(ans,f[n][i][1]);
	    ans=min(ans,f[n][1][0]);
	}
Update:9.11
for(int i=1;i<=n;i++){
		if(a[i]*(sum[l[i]+1 -1]-sum[r[i]-1]) > maxx)
		    maxx=a[i]*(sum[l[i]+1 -1]-sum[r[i]-1]);
	}

前缀和小减大…

Update:11.2

很久没有更了…

	for(int i=1;i<=n;i++)
	    for(int j=i+1;i<=n;i++)

经 典 错 误

本文不定期更新……

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值