每天两个爆零小技巧,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++)
经 典 错 误
本文不定期更新……
扫描二维码关注公众号,回复:
12461350 查看本文章
