构造...
#include <bits/stdc++.h> #define all(a) a.begin(),a.end() #define pb push_back using namespace std; using ll = long long ; void solve() { ll p; cin>>p; for(ll i=2;i*i<=p;i++){ if(p%i==0){ cout<<i<<" "<<p<<"\n"; return ; } } cout<<2<<" "<<p-1<<"\n"; } int main() { ios::sync_with_stdio(false); int t=1; cin>>t; while(t--) solve(); return 0; }
贪心...
#include <bits/stdc++.h> #define all(a) a.begin(),a.end() #define pb push_back using namespace std; using ll = long long ; bool vis[200010]; void solve() { int n; cin>>n; for(int i=0;i<=n;i++) vis[i]=0; string a,b; cin>>a>>b; int ans=0; for(int i=0;i<n;i++){ if(b[i]=='0')continue; if(i-1>=0&&!vis[i-1]&&a[i-1]=='1'){ vis[i-1]=true,ans++; }else if(a[i]=='0'&&!vis[i]){ vis[i]=true,ans++; }else if(i+1<n&&!vis[i+1]&&a[i+1]=='1'){ vis[i+1]=true,ans++; } } cout<<ans<<"\n"; return ; } int main() { ios::sync_with_stdio(false); int t=1; cin>>t; while(t--) solve(); return 0; }
思路: 只记录入度即可
#include <bits/stdc++.h> #define all(a) a.begin(),a.end() #define pb push_back using namespace std; using ll = long long ; int jing[200010]; int in[200010]; void solve() { int n,m; cin>>n>>m; for(int i=0,u,v;i<m;i++){ cin>>u>>v; if(u>v)jing[v]++; else if(u<v)jing[u]++; } long long int ans=0; for(int i=1;i<=n;i++) if(jing[i]==0)ans++; int q; cin>>q; while(q--){ int u,v; int op; cin>>op; if(op==1){ cin>>u>>v; if(u>v){ jing[v]++; if(jing[v]==1)ans--; }else{ jing[u]++; if(jing[u]==1)ans--; } }else if(op==2){ cin>>u>>v; if(u>v){ jing[v]--; if(jing[v]==0)ans++; }else{ jing[u]--; if(jing[u]==0)ans++; } } else{ cout<<ans<<"\n"; } } } int main() { ios::sync_with_stdio(false); int t=1; // cin>>t; while(t--) solve(); return 0; }