今天的題確實是有技術含量,我改到現在才(21:00)改完
以為自己要墊底了,zxb上來就開打,但是我發現第一題並不是很容易做的
於是半個小時之後轉戰第二題,發現是個插頭dp,於是寫完之後就知道自己t飛了
棄掉幹t3,然而只會第乙個部分分,也就是暴力分
能看出來是個揹包,用那個啥啥(庫默爾)定理,得到後面所有選擇是t0的二進位制劃分,與ti是自己
於是我們可以直接做揹包,這樣的話是值域的
我們想要合併揹包,考場上沒有想出來太好的辦法,於是就鴿掉了
發現當前位只會受到這一位的選擇和之前的進製的影響,那麼我們想要記錄最後一位剩下多少並且和後面合併
有一點dp套dp的意思
我們直接記錄最後一位是x的數有多少個數是合法的
但是我們發現這樣記錄好像沒有辦法轉移誒!!???畢竟我們不知道這裡面和別的重複的有多少
於是我們想把最後一位是0~m的都表示出來,而這個任何數的範圍很小(最多進m位好吧),可以二進位制
我們用某乙個二進位制的狀態表示當前狀態下的合法的數有多少個,這樣轉移也是一起轉移,就不怕記重了......
ac_code
#includeusing namespace std;
#define ll long long
#define fo(i,x,y) for(int i=(x);i<=(y);i++)
#define fu(i,x,y) for(int i=(x);i>=(y);i--)
int read()
while(isdigit(ch))
return s*t;
}int t,n,u;ll t[15];
ll f[40][1<<11];
int zy[15][1<<11];
pairok[1<<21];
signed main()
ok[s]=make_pair(ss1,ss2);
}while(t--)
int ss1=ok[buc].first,ss2=ok[buc].second;
if(ss1)f[i+1][ss1]+=f[i][s];
if(ss2)f[i+1][ss2]+=f[i][s];}}
printf("%lld\n",f[35][1]);
fo(i,0,35)fo(s,0,u)f[i][s]=0;
}}
正解竟然是網路流,發現乙個規律,網格圖是可以黑白染色變成二分圖的
並且一般網路流的圖就考慮正著最大和總的減去反著最小......
這個就是總的減去反著最小,我們跑最小費用最大流就好了
ac_code
#includeusing namespace std;
#define fo(i,x,y) for(int i=(x);i<=(y);i++)
#define fu(i,x,y) for(int i=(x);i>=(y);i--)
int read()
while(isdigit(ch))
return s*t;
}const int n=6005;
const int inf=0x3f3f3f3f;
struct ee[n*25];
int head[n*3],rp=1,s=4500*3+1,t=4500*3+2;
void add_edg(int x,int y,int z,int w)
int dis[n*3],pre[n*3],epr[n*3],flo[n*3];
bool vis[n*3];
bool spfa()
}return dis[t]!=inf;
}pairnetflow()
}return make_pair(sum,cos);
}int n,m,jz[155][35],w[155][35];
int all,wll,id[155][35],cid;
bool jud(int x,int y)
signed main()
}fo(i,1,n)fo(j,1,m)
while(isdigit(ch))
return s*t;
}const int n=10005;
int n,k,m;
struct ee[20000000];
int head[n],rp;
void add_edg(int x,int y,int z)
};priority_queueq;
signed main()
fo(i,1,m)
sort(lsh+1,lsh+lh+1);lh=unique(lsh+1,lsh+lh+1)-lsh-1;
fo(l,1,lh-1)fo(r,l+1,lh)
fo(i,1,n)
fo(l,1,lh)
for(int i=head[x];i;i=e[i].nxt)
if(!vis[y])q.push(node),vis[y]=true;}}
printf("yes");
}
省選模擬25
a.環 題意 l個長度為n的恰好有k個1的迴圈同構01串,且滿足s i 將某個1和右側的0交換 s i 1 構造方案。n,l 100,t 10 構造題無思路emm 觀察題目給出了80 的n k互質,可以猜測是有解的充要條件 雖然考場上沒往這想 證明考慮下標和在各自滿足兩個限制下的同余式聯立 互質說明...
考試 省選25
其實貌似t1挺簡單的結果我 ce 了?t1ce的原因是編譯超時。100w個string超時了,50w就沒超。自閉。不合法情況是 n,k not 1 根據上下的1位置的座標和可以知道這件事情。那麼 k 在 mod n 意義下一定存在。對於第 i 個串我們把 frac 全都變成1.然後交換 frac,f...
省選模擬 19 09 11
ps.博主趁資訊課摸魚考的暴零模擬 看門人憑感覺就知道是長鏈剖分,將路徑查分一下,dis u di sv 2 dis lc adis u dis v 2 dis disu disv 2 disl ca 維護fu,if fu,i 表示u的子樹,深度為 i 的點的 dis disdi s最大值 考慮如何...