[关闭]
@baobaobear 2020-03-31T16:50:54.000000Z 字数 5290 阅读 228

练习8

practise


A Kevin7Zz

  1. #include <cstdio>
  2. //#include <iostream>
  3. #include <algorithm>
  4. #include <cstring>
  5. //#include <queue> //priority_queue 优先队列
  6. //#include <map>
  7. //#include <set> //multiset set<int,greater<int>>大到小
  8. //#include <vector>// ::iterator it;
  9. //#include <stack>
  10. //#include <cmath> // auto &Name : STLName Name.
  11. //#include <utility>
  12. //#include <sstream>
  13. //#include <string>
  14. #define mod 1000000007
  15. #define mod9 998244353
  16. typedef unsigned long long ull;
  17. typedef long long ll;
  18. typedef double db;
  19. typedef long double ld;
  20. const db eps=1e-10;
  21. const int INF = 0x3f3f3f3f;
  22. const ll inf=0x3f3f3f3f3f3f3f3f;
  23. const int N=1e3+5;
  24. using namespace std;
  25. int n,m,k=0;
  26. int main(){
  27. scanf("%d",&n);
  28. if(n%2) printf("%d\n",2*n);
  29. else printf("%d\n",n);
  30. return 0;
  31. }

B Kevin7Zz

  1. #include <cstdio>
  2. //#include <iostream>
  3. #include <algorithm>
  4. #include <cstring>
  5. //#include <queue> //priority_queue 优先队列
  6. //#include <map>
  7. //#include <set> //multiset set<int,greater<int>>大到小
  8. //#include <vector>// ::iterator it;
  9. //#include <stack>
  10. //#include <cmath> // auto &Name : STLName Name.
  11. //#include <utility>
  12. //#include <sstream>
  13. //#include <string>
  14. #define mod 1000000007
  15. #define mod9 998244353
  16. typedef unsigned long long ull;
  17. typedef long long ll;
  18. typedef double db;
  19. typedef long double ld;
  20. const db eps=1e-10;
  21. const int INF = 0x3f3f3f3f;
  22. const ll inf=0x3f3f3f3f3f3f3f3f;
  23. const int N=1e5+5;
  24. using namespace std;
  25. int t,n,m,k=0;
  26. int a[N]={0};
  27. int main(){
  28. scanf("%d",&t);
  29. for(int j=1;j<=t;j++){
  30. int sum=0;
  31. scanf("%d",&n);
  32. for(int i=1;i<=n;i++){
  33. scanf("%d",&a[i]);
  34. sum+=a[i];
  35. }
  36. sort(a+1,a+n+1);
  37. m=n/3;
  38. while(m--){
  39. sum-=a[n-2];
  40. n-=3;
  41. }
  42. printf("Case #%d: %d\n",j,sum);
  43. }
  44. return 0;
  45. }

C 6109118071

  1. #include<iostream>
  2. #include<set>
  3. #include<string.h>
  4. #include<cmath>
  5. #include<queue>
  6. #include<algorithm>
  7. using namespace std;
  8. typedef long long ll;
  9. typedef pair<int, int> P;
  10. ll n, d, x = 0, k = 2, tp;
  11. void gt(ll num, ll bas)
  12. {
  13. int sum = 0;
  14. while (num % bas == d && num > 0)
  15. {
  16. sum++;
  17. num /= bas;
  18. }
  19. if (x < sum || x == sum && bas < k)
  20. {
  21. x = sum;
  22. k = bas;
  23. }
  24. }
  25. signed main(){
  26. scanf("%lld%lld", &n, &d);
  27. tp = n - d;
  28. if (tp >= 0)
  29. for (int i = 2; i <= sqrt(tp); i++)
  30. {
  31. if (tp % i == 0)
  32. {
  33. gt(n, i);
  34. gt(n, tp / i);
  35. }
  36. }
  37. if (tp >= 2)
  38. gt(n, tp);
  39. if (n == d && n >= 1)
  40. {
  41. x = 1;
  42. k = n + 1;
  43. }
  44. for (int i = 2; i <= 20; i++) gt(n, i);
  45. if (n == 0 && d == 0) x = 1;
  46. printf("%lld %lld\n", k, x);
  47. }

D 1292224662

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef double db;
  4. int main(){
  5. db a,b,c;
  6. while(cin>>a>>b>>c){
  7. printf("%.5f\n",a/(a+b)*b/(a+b-c-1)+b/(a+b)*(b-1)/(a+b-c-1));
  8. }
  9. return 0;
  10. }

E Kevin7Zz

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <queue> //priority_queue 优先队列
  6. #include <map>
  7. #include <set> //multiset
  8. #include <vector>
  9. #include <stack>
  10. #include <cmath>
  11. #include <sstream>
  12. #include <string>
  13. #define mod 1000000007
  14. typedef unsigned long long ull;
  15. typedef long long ll;
  16. typedef double db;
  17. const db eps=1e-6;
  18. const int INF=0x3f3f3f3f;
  19. const int N=1e5+5;
  20. using namespace std;
  21. int x,y;
  22. ll n,k;
  23. int check1(ll x){
  24. x*=2;
  25. ll s=0,y=1,i;
  26. for(i=2;i*x<=n;i*=2){
  27. y*=2;
  28. s+=y;
  29. if(s+1>=k) return 1;
  30. }
  31. i/=2;
  32. s+=min(y*2,n-i*x+1);
  33. if(s+1>=k) return 1;
  34. else return 0;
  35. }
  36. int check(ll x){
  37. ll s=0,y=1,i;
  38. for(i=2;i*x<=n;i*=2){
  39. y*=2;
  40. s+=y;
  41. if(s>=k) return 1;
  42. }
  43. i/=2;
  44. s+=min(y*2,n-i*x+1);
  45. if(s>=k) return 1;
  46. else return 0;
  47. }
  48. //1 3 7 15
  49. //2 4 8 16
  50. int main(){
  51. cin>>n>>k;
  52. if(n==k){
  53. cout<<"1"<<endl;
  54. return 0;
  55. }
  56. if(k==1){
  57. cout<<n<<endl;
  58. return 0;
  59. }
  60. ll l=1,r=n,m,mm;
  61. while(l<=r){
  62. m=(l+r)/2;
  63. if(m%2) m++;
  64. if(m==mm) break;
  65. mm=m;
  66. if(check(m)){
  67. l=m;
  68. }else{
  69. r=m-1;
  70. }
  71. }
  72. if(check1(m+1)) cout<<m+1<<endl;
  73. else cout<<m<<endl;
  74. return 0;
  75. }

F 541907010220

  1. #include<iostream>
  2. #include<stack>
  3. #include<cstdio>
  4. #include<map>
  5. #include<set>
  6. #include<queue>
  7. #include<cstring>
  8. #include<cmath>
  9. #include<vector>
  10. #include<algorithm>
  11. using namespace std;
  12. typedef long long ll;
  13. #define me(a,b) memset(a,b,sizeof(a))
  14. #define inf 0x3f3f3f3f
  15. const int N=1111122;
  16. const int M=200005;
  17. int a[N],v[N];
  18. int main()
  19. {
  20. int m,i,j,n,k,r,l,maxx=0,s=0,r1,l1;
  21. cin>>n>>k;
  22. me(v,0);
  23. for(i=1;i<=n;i++)
  24. {
  25. scanf("%d",&a[i]);
  26. }
  27. r=1;l=1;
  28. while(1)
  29. {
  30. if(r>n)break;
  31. while(s<k)
  32. {
  33. if(!v[a[r]])
  34. {
  35. s++;
  36. v[a[r]]++;
  37. r++;
  38. }
  39. else
  40. {
  41. v[a[r]]++;
  42. r++;
  43. }
  44. if(r>n)break;
  45. }
  46. if(maxx<r-l)
  47. {
  48. maxx=r-l;
  49. l1=l;
  50. r1=r-1;
  51. }
  52. if(r>n)break;
  53. if(s>=k)
  54. {
  55. if(v[a[r]]>0)
  56. {
  57. v[a[r]]++;
  58. r++;
  59. if(maxx<r-l)
  60. {
  61. maxx=r-l;
  62. l1=l;
  63. r1=r-1;
  64. }
  65. }
  66. else
  67. {
  68. if(v[a[l]]>1)
  69. {
  70. v[a[l]]--;
  71. l++;
  72. }
  73. else if(v[a[l]]==1)
  74. {
  75. s--;
  76. v[a[l]]--;
  77. l++;
  78. }
  79. }
  80. }
  81. }
  82. cout<<l1<<" "<<r1<<endl;
  83. return 0;
  84. }

G 1292224662

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef double db;
  4. typedef long long ll;
  5. int n,m,vis[100010],x,y,z;
  6. vector<int> g[100010];
  7. void dfs(int now){
  8. vis[now]=1;
  9. for(auto to:g[now]){
  10. if(!vis[to]){
  11. dfs(to);
  12. }
  13. }
  14. return ;
  15. }
  16. int main(){
  17. scanf("%d%d",&n,&m);
  18. for(int i=1;i<=m;i++){
  19. scanf("%d%d%d",&x,&y,&z);
  20. g[x].push_back(y);
  21. g[y].push_back(x);
  22. }
  23. int ans=0;
  24. for(int i=1;i<=n;i++){
  25. if(!vis[i]){
  26. ans++;
  27. dfs(i);
  28. }
  29. }
  30. printf("%d\n",ans);
  31. return 0;
  32. }

H 1292224662

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef double db;
  4. typedef long long ll;
  5. int n,m,u,v;
  6. vector<int> g[200010];
  7. int edg[200010][2],vis[200010],cr[200010];
  8. void dfs(int now,int color){
  9. vis[now]=1;
  10. cr[now]=color;
  11. for(auto to:g[now]){
  12. if(!vis[to]){
  13. dfs(to,1-color);
  14. }
  15. }
  16. }
  17. vector<int> ans;
  18. int main(){
  19. cin>>n>>m;
  20. for(int i=1;i<=m;i++){
  21. scanf("%d%d",&u,&v);
  22. g[v].push_back(u);
  23. g[u].push_back(v);
  24. edg[i][0]=u;edg[i][1]=v;
  25. }
  26. dfs(1,0);
  27. for(int i=1;i<=m;i++){
  28. if(cr[edg[i][0]]==cr[edg[i][1]]){
  29. puts("NO");
  30. return 0;
  31. }
  32. ans.push_back(cr[edg[i][0]]);
  33. }
  34. puts("YES");
  35. for(auto to:ans){
  36. printf("%d",to);
  37. }putchar('\n');
  38. return 0;
  39. }

I 1292224662

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef double db;
  4. typedef long long ll;
  5. const ll mod=1e9+7;
  6. ll n,a[300010],ans;
  7. ll cnt[2][64],p,sv[64],pow2[64];
  8. int main(){
  9. cin>>n;
  10. pow2[0]=1;
  11. for(int i=1;i<=62;i++){
  12. pow2[i]=2ll*pow2[i-1]%mod;
  13. }
  14. for(int i=1;i<=n;i++){
  15. scanf("%lld",&a[i]);
  16. }
  17. for(int i=n;i>=1;i--){
  18. p=0;memset(sv,0,sizeof(sv));
  19. while(a[i]){
  20. sv[++p]=a[i]%2ll;
  21. a[i]/=2ll;
  22. }
  23. for(int i=1;i<=62;i++){
  24. ans=(ans+pow2[i-1]*cnt[1-sv[i]][i]%mod)%mod;
  25. }
  26. for(int i=1;i<=62;i++){
  27. cnt[sv[i]][i]++;
  28. }
  29. }
  30. printf("%lld\n",ans);
  31. return 0;
  32. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注