日记.
接下来的一个月的时间内准备一天完成6道题
具有针对性的完成
五道题大致为下: 1. 一道CF 1400~1700
2. 一道背包dp(背包完成后会针对性的进行其他的动态规划)
3. 一道图论(单源,多源最短路, 最小生成树,差分约束,树的重心,求最长路以及最短路,拓扑排序)
4. 一道数论(gcd,lcm,博弈论,各种定理等等)
5. 一道基础优化(st表,树状数组,逆序对,前缀和等等)
6. 一道暴力,枚举(具体从CF上找)
Day 1.( 24-2-29 )
第一天的大多数都是板子题,主要是拿来练练手,中间穿插了两道简单的背包,然后和我新学的裴蜀定理
今天还是2.29号,4年轮一次,据说,今天还是星期四,kfc的疯狂星期四并且还是2.29的要28年轮一次,拉满了
//【模板】最小生成树 https://www.luogu.com.cn/problem/P3366 // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // int p[N],n,res,m,cnt; // int find(int x){ // if(x!=p[x]) p[x]=find(p[x]); // return p[x]; // } // struct node{ // int u,v,w; // bool operator<(const node&W) const{ // return w<W.w; // } // }tr[N]; // signed main() // { // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // cin>>n>>m; // for(int i=1;i<=n;i++) p[i]=i; // for(int i=1;i<=m;i++){ // int a,b,c; cin>>a>>b>>c; // tr[i]={a,b,c}; // } // sort(tr+1,tr+1+m); // for(int i=1;i<=m;i++){ // int u=tr[i].u,v=tr[i].v,w=tr[i].w; // if(find(u)!=find(v)) // p[find(u)]=find(v),res+=w,cnt++; // } // if(cnt<n-1) cout<<"orz"<<endl; // else cout<<res; // return 0; // } //dijkstra // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // typedef pair<int,int>pii; // int n,m,st,dist[N]; // int e[N],ne[N],h[N],w[N],idx; // bool vis[N]; // void add(int a,int b,int c){ // e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++; // } // void dijkstra(){ // priority_queue<pii,vector<pii>,greater<pii>>que; // que.push({0,st}),dist[st]=0; // while(!que.empty()){ // auto now=que.top();que.pop(); // int dis=now.first,id=now.second; // if(vis[id]) continue; vis[id]=true; // for(int i=h[id];~i;i=ne[i]){ // int j=e[i]; // if(dist[j]>dis+w[i]){ // dist[j]=dis+w[i]; // que.push({dist[j],j}); // } // } // } // } // signed main() // { // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // cin>>n>>m>>st; // memset(h,-1,sizeof h); // for(int i=1;i<=n;i++) dist[i]=2147483647; // for(int i=1;i<=m;i++){ // int a,b,c; cin>>a>>b>>c; // add(a,b,c); // } // dijkstra(); // for(int i=1;i<=n;i++) cout<<dist[i]<<' '; // return 0; // } //spfa // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // int dist[N],n,m,res,st; // int e[N],ne[N],h[N],w[N],idx; // bool vis[N]; // void add(int a,int b,int c){ // e[idx]=b,ne[idx]=h[a],w[idx]=c,h[a]=idx++; // } // void spfa(){ // queue<int>que; // que.push(st),dist[st]=0,vis[st]=true; // while(!que.empty()){ // int now=que.front(); que.pop(); // vis[now]=false; // for(int i=h[now];~i;i=ne[i]){ // int j=e[i]; // if(dist[j]>w[i]+dist[now]){ // dist[j]=dist[now]+w[i]; // if(!vis[j]) que.push(j),vis[j]=true; // } // } // } // } // signed main() // { // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // cin>>n>>m>>st; // memset(h,-1,sizeof h); // for(int i=1;i<=n;i++) dist[i]=2147483647; // for(int i=1;i<=m;i++){ // int a,b,c; cin>>a>>b>>c; // add(a,b,c); // } // spfa(); // for(int i=1;i<=n;i++) cout<<dist[i]<<' '; // return 0; // } //负环 // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // int n,m,st,dist[N],cnt[N]; // int e[N],ne[N],h[N],idx,w[N]; // bool vis[N]; // void add(int a,int b,int c){ // w[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++; // } // bool spfa(){ // queue<int>que; // que.push(1),dist[1]=0,vis[1]=true; // while(!que.empty()){ // int now=que.front(); que.pop(); // vis[now]=false; // for(int i=h[now];~i;i=ne[i]){ // int j=e[i]; // if(dist[j]>w[i]+dist[now]){ // dist[j]=w[i]+dist[now]; // cnt[j]=cnt[now]+1; // if(cnt[j]>=n) return true; // if(!vis[j]) vis[j]=true,que.push(j); // } // } // } // return false; // } // void solve(){ // cin>>n>>m; // idx=0; // memset(cnt,0,sizeof cnt); // memset(vis,false,sizeof vis); // memset(h,-1,sizeof h); // memset(dist,0x7f,sizeof dist); // for(int i=1;i<=m;i++){ // int a,b,c; cin>>a>>b>>c; // if(c>=0) add(a,b,c),add(b,a,c); // else add(a,b,c); // } // cout<<(spfa()?"YES":"NO")<<endl; // } // signed main(){ // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)solve(); // } //小书童——刷题大军 //https://www.luogu.com.cn/problem/P1926 // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // signed main() // { // int n,m,k,r,num=0,res=0; cin>>n>>m>>k>>r; // vector<int>dp(r+1),hk(n+1),t_(m+1),p(m+1); // for(int i=1;i<=n;i++) cin>>hk[i]; // for(int i=1;i<=m;i++) cin>>t_[i]; // for(int i=1;i<=m;i++) cin>>p[i]; // for(int i=1;i<=m;i++){ // for(int j=r;j>=t_[i];j--) dp[j]=max(dp[j],dp[j-t_[i]]+p[i]); // } // for(int i=1;i<=r;i++){ // if(dp[i]>=k){ // num=r-i; // break; // } // } // sort(hk.begin(),hk.end()); // for(int i=1;i<=n;i++){ // if(num<=0) break; // if(num>=hk[i]) num-=hk[i],res++; // } // cout<<res; // return 0; // } //最大约数和 //https://www.luogu.com.cn/problem/P1734 // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // signed main() // { // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // int s; cin>>s; // vector<int>num(s+1),dp(s+1); // for(int i=1;i<=s;i++) // for(int j=1;j<=i;j++) // if(!i%j) num[i]+=j; // for(int i=1;i<=s;i++) // for(int j=s;j>=i;j--) dp[j]=max(dp[j],dp[j-i]+num[i]); // cout<<dp[s]<<endl; // return 0; // } //【模板】裴蜀定理 //https://www.luogu.com.cn/problem/P4549 #include <bits/stdc++.h> #define int long long using namespace std; const int N=1e6+10,mod=1e9+7; signed main() { std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); int n,res=1; cin>>n; vector<int>a(n+1); cin>>a[1]; for(int i=2;i<=n;i++) cin>>a[i],res=__gcd(a[i],res); cout<<res<<endl; return 0; }
Day 2(24-3-2)
// #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // void solve(){ // int n,m,k,num=0; cin>>n>>m>>k; // string s,now=""; cin>>s; // string tmp=s; // map<char,int>mp; // for(auto c:s) mp[c]++; // char e='a'+k-1; // for(char x='a';x<e;x++){ // now+=x; // if(mp[x]<n){ // cout<<"NO"<<endl; // for(int i=1;i<=n;i++) cout<<x; // return cout<<endl,void(); // } // } // while(true){ // int x=tmp.find(now); // if(x==-1){ // if(num>=n-1) return cout<<"Yes"<<endl,void(); // for(char x='a';x<e;x++){ // string ss=""; // for(int i=1;i<=n-1;i++) ss+=x; // for(char c='a';c<e;c++){ // if(c==x) continue; // ss+=c; // if(s.find(ss)==-1) return cout<<"NO"<<endl<<ss<<endl,void(); // ss.pop_back(); // } // } // } // tmp[x]='`',num++; // } // } // signed main(){ // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)solve(); // } // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // void solve(){ // int n,k,m; cin>>n>>k>>m; // string s,res=""; cin>>s; // int j=0,ok=1; // for(int i=1;i<=n;i++){ // vector<char>vis(30); // int cnt=0; // while(cnt<k&&j<m){ // cnt+=!vis[s[j]-'a']; // vis[s[j]-'a']=1,j++; // } // if(cnt<k){ // ok=0; // for(char x='a';x<'a'+k;x++) // if(!vis[x-'a']){ // res+=x; // break; // } // } // else res+=s[j-1]; // } // if(ok) cout<<"Yes"<<endl; // else cout<<"No"<<endl<<res<<endl; // } // signed main(){ // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)solve(); // } //https://www.luogu.com.cn/problem/P1853 // #include <bits/stdc++.h> // using namespace std; // const int N=1e7+10,mod=1e9+7; // signed main() // { // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // int n,s,d; cin>>s>>n>>d; // vector<int>dp(N+1),v(d+1),w(d+1); // for(int i=1;i<=d;i++) cin>>v[i]>>w[i],v[i]/=1000; // for(int day=1;day<=n;day++){ // dp.clear(); // int tmp=0; // for(int i=1;i<=d;i++){ // for(int j=v[i];j<=s/1000;j++) // dp[j]=max(dp[j],dp[j-v[i]]+w[i]),tmp=max(tmp,dp[j]); // } // s+=tmp; // } // cout<<s<<endl; // return 0; // } // //https://www.luogu.com.cn/problem/P1342 // //https://www.luogu.com.cn/problem/P1629 // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // int n,m,e[N],ne[N],h[N],w[N],idx,dist[N],res=0; // int e1[N],ne1[N],h1[N],w1[N],idx1; // typedef pair<int,int>pii; // bool vis[N]; // void add1(int a,int b, int c){ // e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++; // } // void add2(int a,int b,int c){ // e1[idx1]=b,w1[idx1]=c,ne1[idx1]=h1[a],h1[a]=idx1++; // } // void dijkstra1(int st){ // priority_queue<pii,vector<pii>,greater<pii>>que; // for(int i=1;i<=n;i++) dist[i]=0x7f7f7f7f,vis[i]=false; // dist[st]=0,que.push({dist[st],st}); // while(!que.empty()){ // auto now=que.top();que.pop(); // int y=now.first,x=now.second; // if(vis[x]) continue; vis[x]=true; // for(int i=h[x];~i;i=ne[i]){ // int j=e[i]; // if(dist[j]>y+w[i]){ // dist[j]=y+w[i]; // que.push({dist[j],j}); // } // } // } // } // void dijkstra2(int st){ // priority_queue<pii,vector<pii>,greater<pii>>que; // for(int i=1;i<=n;i++) dist[i]=0x7f7f7f7f,vis[i]=false; // dist[st]=0,que.push({dist[st],st}); // while(!que.empty()){ // auto now=que.top();que.pop(); // int y=now.first,x=now.second; // if(vis[x]) continue; vis[x]=true; // for(int i=h1[x];~i;i=ne1[i]){ // int j=e1[i]; // if(dist[j]>y+w1[i]){ // dist[j]=y+w1[i]; // que.push({dist[j],j}); // } // } // } // } // signed main() // { // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // cin>>n>>m; // memset(h, -1, sizeof h); // memset(h1, -1, sizeof h1); // for(int i=1;i<=m;i++){ // int a,b,c; cin>>a>>b>>c; // add1(a,b,c),add2(b,a,c); // } // dijkstra1(1); // for(int i=2;i<=n;i++) res+=dist[i]; // dijkstra2(1); // for(int i=2;i<=n;i++) res+=dist[i]; // cout<<res<<endl; // return 0; // } // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10; // int kpow(int a,int k,int mod){ // int ans=1; // while(k){ // if(k&1) ans=ans*a%mod; // k>>=1,a=a*a%mod; // } // return ans%mod; // } // signed main() // { // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // int a,b,q; cin>>a>>b>>q; // int res=kpow(a,b,q)%q; // cout<<a<<"^"<<b<<" mod "<<q<<"="<<res<<endl; // return 0; // } //https://www.luogu.com.cn/problem/P1890 // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // int gcdc(int a,int b){ // return b?gcdc(b,a%b):a; // } // int res[1005][1005]; // signed main() // { // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // int n,m; cin>>n>>m; // vector<int>a(n+1); // for(int i=1;i<=n;i++) cin>>a[i]; // for(int i=1;i<=n;i++){ // int now=a[i]; // for(int j=i;j<=n;j++) now=gcdc(now,a[j]),res[i][j]=now; // } // while(m--){ // int l,r; cin>>l>>r; // cout<<res[l][r]<<endl; // } // return 0; // } //https://www.luogu.com.cn/problem/P1865 // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // bool vis[N]; // signed main() // { // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // int n,m,num=0; cin>>n>>m; // vector<int>prime(N+1),s(m+1); // vis[1]=true; // for(int i=2;i<=N;i++){ // if(!vis[i]) prime[++num]=i; // for(int j=1;prime[j]<=N/i;j++){ // vis[prime[j]*i]=true; // if(!(i%prime[j])) break; // } // } // for(int i=1;i<=m;i++){ // s[i]=s[i-1]; // if(!vis[i]) s[i]++; // } // while(n--){ // int l,r; cin>>l>>r; // if(l<1||r>m) cout<<"Crossing the line"<<endl; // else cout<<s[r]-s[l-1]<<endl; // } // return 0; // } // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // int dp[N][21],lg[N]; // signed main() // { // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); // int n,m; cin>>n>>m; // lg[1]=0; // for(int i=2;i<=n;i++) lg[i]=lg[i>>1]+1; // for(int i=1;i<=n;i++) cin>>dp[i][0]; // for(int j=1;j<=lg[n];j++) // for(int i=1;i<=n-(1<<j)+1;i++) // dp[i][j]=min(dp[i][j-1],dp[i+(1<<(j-1))][j-1]); // for(int i=1;i<=n;i++){ // if(i==1){ // cout<<0<<endl; // continue; // } // if(i==2){ // cout<<dp[1][0]<<endl; // continue; // } // int l=max((int)1,i-m),r=i-1; // int pos=lg[r-l+1]; // cout<<min(dp[l][pos],dp[r-(1<<pos)+1][pos])<<endl; // } // return 0; // } //https://codeforces.com/problemset/problem/1925/B // #include <bits/stdc++.h> // #define int long long // using namespace std; // const int N=1e6+10,mod=1e9+7; // void solve(){ // int n,m,res; cin>>n>>m; // set<int>s; // for(int i=1;i<=sqrt(n);i++) // if(!(n%i)) s.insert(i),s.insert(n/i); // for(auto x:s){ // if(x*m<=n) res=x; // else break; // } // cout<<res<<endl; // } // signed main(){ // std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)solve(); // }