一行一个数字N(N<=99)
标签:数据规模 submit res pid 相互 请求 front lsp while
三道比较简单的题,还以为是八校考试的题目,但是并不是,无语了,第三题其实看了挺久的,一看到图,就想到了二分图,网络流之类的算法,但是尽力往这个方向想了好久都没什么思路,
最后从简单入手,然而没什么结果,第一题是真的水,一推就知道了。
1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #include<iostream> 5 #include<iostream> 6 using namespace std; 7 8 int n; 9 10 int main() 11 { 12 scanf("%d",&n); 13 if (n<=4) printf("YES\n"); 14 else printf("XLSB\n"); 15 }
题意什么的不要了
1 #include<cstring> 2 #include<algorithm> 3 #include<iostream> 4 #include<cmath> 5 #include<cstdio> 6 using namespace std; 7 8 int n; 9 int a[37]={0}; 10 char s[100007]; 11 12 bool cmp(int x,int y){return x>y;} 13 long long C(int m,int n) 14 { 15 long long res=1; 16 for (int i=m-n+1;i<=m;i++) 17 res=(long long)(res*i); 18 for (int i=1;i<=n;i++) 19 res=(long long)(res/i); 20 return res; 21 } 22 int main() 23 { 24 scanf("%s%d",s,&n); 25 int len=strlen(s); 26 for (int i=0;i<len;i++) 27 a[s[i]-‘a‘+1]++; 28 sort(a+1,a+26+1,cmp); 29 long long res=0; 30 for (int i=1;i<=n;i++) 31 res+=a[i]; 32 printf("%lld ",res); 33 int l=n,r=n; 34 while (l>=1&&a[l]==a[n]) l--; 35 l++; 36 while (r<=26&&a[r]==a[n]) r++; 37 r--; 38 long long ans; 39 ans=C(r-l+1,min(n-l+1,r-n)); 40 printf("%lld\n",ans); 41 }
满分代码
宿管有一套神奇的控制系统来控制寝室的灯的开关:
这道题就是求√n以内的质数,这样比√n大的质数两两之间已经超过了n因此不会相互影响,可以发信啊每个开关只开一次是有意义的,多开没意义。
1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #include<iostream> 5 #include<cstring> 6 #include<queue> 7 using namespace std; 8 9 const int INF=1e9+7,NN=1007; 10 11 int n,m,ans,k; 12 int boo[NN],prime[NN]; 13 14 bool cmp(int x,int y){return x<y;} 15 void dfs(int ci) 16 { 17 if (ci==k) 18 { 19 int x=0,num; 20 queue<int>q; 21 while(!q.empty()) q.pop(); 22 for (int i=k+1;i<=m;i++) 23 { 24 num=0; 25 for (int j=prime[i];j<=n;j+=prime[i]) 26 if (boo[j]==0) num++; 27 else num--; 28 if (num>0) 29 { 30 q.push(i); 31 for (int j=prime[i];j<=n;j+=prime[i]) 32 boo[j]^=1; 33 } 34 } 35 for (int i=1;i<=n;i++) 36 if (boo[i]) x++; 37 ans=max(ans,x); 38 while (!q.empty()) 39 { 40 int i=q.front(); 41 q.pop(); 42 for (int j=prime[i];j<=n;j+=prime[i]) 43 boo[j]^=1; 44 } 45 } 46 else 47 { 48 ci++; 49 dfs(ci); 50 for (int i=prime[ci];i<=n;i+=prime[ci]) 51 boo[i]^=1; 52 dfs(ci); 53 for (int i=prime[ci];i<=n;i+=prime[ci]) 54 boo[i]^=1; 55 } 56 } 57 void solve() 58 { 59 ans=-INF; 60 memset(boo,0,sizeof(boo)); 61 dfs(0); 62 printf("%d\n",ans); 63 } 64 int main() 65 { 66 int Cas; 67 scanf("%d",&Cas); 68 while (Cas--) 69 { 70 scanf("%d%d",&n,&m); 71 for (int i=1;i<=m;i++) 72 scanf("%d",&prime[i]); 73 sort(prime+1,prime+m+1,cmp); 74 k=m; 75 while (prime[k]>(int)sqrt(n)) k--; 76 solve(); 77 } 78 }
标签:数据规模 submit res pid 相互 请求 front lsp while
原文地址:http://www.cnblogs.com/fengzhiyuan/p/7241598.html