单位的网站的建设,个人网页制作策划书,企业网站建设需要哪些步骤,哪个公司的软件开发公司打div3翻车了 A.第一个操作是除二#xff0c;第二个操作视为两下操作之后除三#xff0c;第三个操作视为三下操作之后除五#xff0c;直接计算贡献 #include map
#include set
#include ctime
#include cmath
#include queue
#incl…打div3翻车了 A.第一个操作是除二第二个操作视为两下操作之后除三第三个操作视为三下操作之后除五直接计算贡献 #include map
#include set
#include ctime
#include cmath
#include queue
#include stack
#include vector
#include string
#include cstdio
#include cstdlib
#include cstring
#include sstream
#include iostream
#include algorithm
#include functional
using namespace std;
#define For(i, x, y) for(int ix;iy;i)
#define _For(i, x, y) for(int ix;iy;i--)
#define Mem(f, x) memset(f,x,sizeof(f))
#define Sca(x) scanf(%d, x)
#define Sca2(x,y) scanf(%d%d,x,y)
#define Sca3(x,y,z) scanf(%d%d%d,x,y,z)
#define Scl(x) scanf(%lld,x);
#define Pri(x) printf(%d\n, x)
#define Prl(x) printf(%lld\n,x);
#define CLR(u) for(int i0;iN;i)u[i].clear();
#define LL long long
#define ULL unsigned long long
#define mp make_pair
#define PII pairint,int
#define PIL pairint,long long
#define PLL pairlong long,long long
#define pb push_back
#define fi first
#define se second
typedef vectorint VI;
int read(){int x 0,f 1;char c getchar();while (c0 || c9){if (c -) f -1;c getchar();}
while (c 0c 9){x x * 10 c - 0;c getchar();}return x*f;}
const double eps 1e-9;
const int maxn 110;
const int INF 0x3f3f3f3f;
const int mod 1e9 7;
LL N;
int main(){int T; Sca(T);while(T--){Scl(N);int ans 0;while(!(N % 2)){N / 2;ans;}while(!(N % 3)){N / 3;ans 2;} while(!(N % 5)){N / 5;ans 3;}if(N ! 1) ans -1;Pri(ans);} return 0;
} A B.毫无疑问先把所有数模3整除的直接计入贡献余1的找余2的凑一对计入贡献最后剩下的三个凑一对计入贡献 #include map
#include set
#include ctime
#include cmath
#include queue
#include stack
#include vector
#include string
#include cstdio
#include cstdlib
#include cstring
#include sstream
#include iostream
#include algorithm
#include functional
using namespace std;
#define For(i, x, y) for(int ix;iy;i)
#define _For(i, x, y) for(int ix;iy;i--)
#define Mem(f, x) memset(f,x,sizeof(f))
#define Sca(x) scanf(%d, x)
#define Sca2(x,y) scanf(%d%d,x,y)
#define Sca3(x,y,z) scanf(%d%d%d,x,y,z)
#define Scl(x) scanf(%lld,x);
#define Pri(x) printf(%d\n, x)
#define Prl(x) printf(%lld\n,x);
#define CLR(u) for(int i0;iN;i)u[i].clear();
#define LL long long
#define ULL unsigned long long
#define mp make_pair
#define PII pairint,int
#define PIL pairint,long long
#define PLL pairlong long,long long
#define pb push_back
#define fi first
#define se second
typedef vectorint VI;
int read(){int x 0,f 1;char c getchar();while (c0 || c9){if (c -) f -1;c getchar();}
while (c 0c 9){x x * 10 c - 0;c getchar();}return x*f;}
const double eps 1e-9;
const int maxn 1010;
const int INF 0x3f3f3f3f;
const int mod 1e9 7;
int N,M,K;
int a[maxn];
int b[maxn];
int main(){int T; Sca(T);while(T--){Sca(N);b[0] b[1] b[2] 0;for(int i 1; i N ; i ){Sca(a[i]);a[i] % 3;b[a[i]];} if(b[1] b[2]) swap(b[1],b[2]);Pri(b[0] b[1] (b[2] - b[1]) / 3);}return 0;
} B C.比较套路的一个寻找子序列数量开6个计数器即可。最后答案就是字符串长度len - 匹配成功的子序列数量 * 6 #include map
#include set
#include ctime
#include cmath
#include queue
#include stack
#include vector
#include string
#include cstdio
#include cstdlib
#include cstring
#include sstream
#include iostream
#include algorithm
#include functional
using namespace std;
#define For(i, x, y) for(int ix;iy;i)
#define _For(i, x, y) for(int ix;iy;i--)
#define Mem(f, x) memset(f,x,sizeof(f))
#define Sca(x) scanf(%d, x)
#define Sca2(x,y) scanf(%d%d,x,y)
#define Sca3(x,y,z) scanf(%d%d%d,x,y,z)
#define Scl(x) scanf(%lld,x);
#define Pri(x) printf(%d\n, x)
#define Prl(x) printf(%lld\n,x);
#define CLR(u) for(int i0;iN;i)u[i].clear();
#define LL long long
#define ULL unsigned long long
#define mp make_pair
#define PII pairint,int
#define PIL pairint,long long
#define PLL pairlong long,long long
#define pb push_back
#define fi first
#define se second
typedef vectorint VI;
int read(){int x 0,f 1;char c getchar();while (c0 || c9){if (c -) f -1;c getchar();}
while (c 0c 9){x x * 10 c - 0;c getchar();}return x*f;}
const double eps 1e-9;
const int maxn 5e5 10;
const int INF 0x3f3f3f3f;
const int mod 1e9 7;
int N,M,K;
int a[maxn];
const int b[10] {0,4,8,15,16,23,42};
int dp[maxn];
int main(){Sca(N);for(int i 1; i N ; i ) Sca(a[i]);dp[0] INF;for(int i 1; i N ; i ){for(int j 1; j 6; j ){if(b[j] a[i] dp[j - 1]){dp[j - 1]--;dp[j];}}}Pri(N - dp[6] * 6);return 0;
} C D.将所有数从大到小排序然后扫描遇到的当前最大的数如果是素数说明是一个小素数变过来的否则说明他要变成他最大的因子。 直接递推即可。 #include map
#include set
#include ctime
#include cmath
#include queue
#include stack
#include vector
#include string
#include cstdio
#include cstdlib
#include cstring
#include sstream
#include iostream
#include algorithm
#include functional
using namespace std;
#define For(i, x, y) for(int ix;iy;i)
#define _For(i, x, y) for(int ix;iy;i--)
#define Mem(f, x) memset(f,x,sizeof(f))
#define Sca(x) scanf(%d, x)
#define Sca2(x,y) scanf(%d%d,x,y)
#define Sca3(x,y,z) scanf(%d%d%d,x,y,z)
#define Scl(x) scanf(%lld,x);
#define Pri(x) printf(%d\n, x)
#define Prl(x) printf(%lld\n,x);
#define CLR(u) for(int i0;iN;i)u[i].clear();
#define LL long long
#define ULL unsigned long long
#define mp make_pair
#define PII pairint,int
#define PIL pairint,long long
#define PLL pairlong long,long long
#define pb push_back
#define fi first
#define se second
typedef vectorint VI;
int read(){int x 0,f 1;char c getchar();while (c0 || c9){if (c -) f -1;c getchar();}
while (c 0c 9){x x * 10 c - 0;c getchar();}return x*f;}
const double eps 1e-9;
const int maxn 3e6 10;
const int INF 0x3f3f3f3f;
const int mod 1e9 7;
int N,M,K;
int a[maxn];
int prime[maxn];
int pos[maxn];
bool isprime[maxn];
void init(){for(int i 2 ; i 2750131; i ) isprime[i] 1;int cnt 0;for(int i 2 ; i 2750131; i ){if(!isprime[i]) continue;prime[cnt] i;pos[i] cnt;for(int j i i; j 2750131; j i) isprime[j] 0;}
}
int delnum[maxn];
int find(int x){for(int i 2; i x; i ){if(!(x % i)) return max(i,x / i);}return 1;
}
int main(){Sca(N); init();for(int i 1; i N * 2 ; i ) Sca(a[i]);sort(a 1,a 1 N * 2);for(int i N * 2; i 1; i --){if(delnum[a[i]]){delnum[a[i]]--;continue;}if(isprime[a[i]]){delnum[pos[a[i]]];printf(%d ,pos[a[i]]);}else{int n find(a[i]);delnum[n];printf(%d ,a[i ]);}}return 0;
} D E.一看是个最小点覆盖仔细看看发现没有要求最小只是找一个点覆盖。 对原图进行一手黑白染色然后白点集合和黑点集合必定有一个符合答案取集合元素数量较小的那个集合输出。 #include map
#include set
#include ctime
#include cmath
#include queue
#include stack
#include vector
#include string
#include cstdio
#include cstdlib
#include cstring
#include sstream
#include iostream
#include algorithm
#include functional
using namespace std;
#define For(i, x, y) for(int ix;iy;i)
#define _For(i, x, y) for(int ix;iy;i--)
#define Mem(f, x) memset(f,x,sizeof(f))
#define Sca(x) scanf(%d, x)
#define Sca2(x,y) scanf(%d%d,x,y)
#define Sca3(x,y,z) scanf(%d%d%d,x,y,z)
#define Scl(x) scanf(%lld,x);
#define Pri(x) printf(%d\n, x)
#define Prl(x) printf(%lld\n,x);
#define CLR(u) for(int i0;iN;i)u[i].clear();
#define LL long long
#define ULL unsigned long long
#define mp make_pair
#define PII pairint,int
#define PIL pairint,long long
#define PLL pairlong long,long long
#define pb push_back
#define fi first
#define se second
typedef vectorint VI;
int read(){int x 0,f 1;char c getchar();while (c0 || c9){if (c -) f -1;c getchar();}
while (c 0c 9){x x * 10 c - 0;c getchar();}return x*f;}
const double eps 1e-9;
const int maxn 2e5 10;
const int INF 0x3f3f3f3f;
const int mod 1e9 7;
int N,M,K;
struct Edge{int to,next;
}edge[maxn * 2];
int head[maxn],tot;
int color[maxn];
vectorintw[2];
void init(){for(int i 0 ; i N ; i ){color[i] head[i] -1;}w[0].clear(); w[1].clear();tot 0;
}
void add(int u,int v){edge[tot].to v;edge[tot].next head[u];head[u] tot;
}
void dfs(int t){for(int i head[t]; ~i ; i edge[i].next){int v edge[i].to;if(color[v] ! -1) continue;color[v] 1 ^ color[t];dfs(v);}
}
int main(){int T; Sca(T);while(T--){Sca2(N,M); init();for(int i 1; i M ; i ){int u,v; Sca2(u,v);add(u,v); add(v,u);}for(int i 1; i N ; i ){if(color[i] -1){color[i] 0;dfs(i);}}for(int i 1; i N ; i ) w[color[i]].push_back(i);if(w[0].size() w[1].size()) swap(w[0],w[1]);Pri(w[0].size());for(int i 0 ; i w[0].size(); i ){printf(%d ,w[0][i]);}puts();}return 0;
} E 转载于:https://www.cnblogs.com/Hugh-Locke/p/11140861.html