[关闭]
@baobaobear 2020-05-05T12:57:25.000000Z 字数 2802 阅读 243

练习 13

practise


A OUHE_csc

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. int main()
  6. {
  7. int a, b;
  8. scanf("%d%d", &a, &b);
  9. printf("%d", (a | b) - (a & b));
  10. return 0;
  11. }

B OUHE_csc

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int N = 2e6 + 10;
  6. int a[N];
  7. int main()
  8. {
  9. int n;
  10. while(~scanf("%d", &n))
  11. {
  12. for(int i = 1; i <= n * 2; i ++) scanf("%d", &a[i]);
  13. sort(a + 1, a + n * 2 + 1);
  14. printf("%d\n", a[n]);
  15. }
  16. return 0;
  17. }

C OUHE_csc

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. typedef long long LL;
  6. const int N = 1e6 + 10;
  7. int p[10];
  8. LL a[N];
  9. int main()
  10. {
  11. for(int i = 1; i < 10; i ++)
  12. {
  13. p[i] = 1;
  14. for(int j = 0; j < 5; j ++) p[i] *= i;
  15. }
  16. for(int i = 2; i < N; i ++)
  17. {
  18. a[i] = a[i - 1];
  19. int x = i, sum = 0;
  20. while(x) sum += p[x % 10], x /= 10;
  21. if(sum == i) a[i] += i;
  22. }
  23. int t;
  24. scanf("%d", &t);
  25. while(t --)
  26. {
  27. int n;
  28. scanf("%d", &n);
  29. printf("%lld\n", a[n]);
  30. }
  31. return 0;
  32. }

D OUHE_csc

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. typedef long long LL;
  6. const int N = 210;
  7. int a[N];
  8. LL f[N][N];
  9. int main()
  10. {
  11. int n;
  12. scanf("%d", &n);
  13. for(int i = 1; i <= n; i ++) scanf("%d", &a[i]);
  14. for(int len = 3; len <= n; len ++)
  15. for(int i = 1; i + len - 1 <= n; i ++)
  16. {
  17. int j = i + len - 1;
  18. f[i][j] = 1e18;
  19. for(int k = i + 1; k < j; k ++)
  20. f[i][j] = min(f[i][j], f[i][k] + f[k][j] + (LL)a[i] * a[k] * a[j]);
  21. }
  22. printf("%lld", f[1][n]);
  23. return 0;
  24. }

H 15291200127

  1. #include <set>
  2. #include <map>
  3. #include <deque>
  4. #include <queue>
  5. #include <stack>
  6. #include <cmath>
  7. #include <ctime>
  8. #include <bitset>
  9. #include <cstdio>
  10. #include <string>
  11. #include <vector>
  12. #include <cstdlib>
  13. #include <cstring>
  14. #include <cassert>
  15. #include <iostream>
  16. #include <algorithm>
  17. #define mem(a,b) memset(a,b,sizeof (a))
  18. #define gcd(a,b) __gcd(a,b)
  19. #define all(a) a.begin(),a.end()
  20. #define in(a) insert(a)
  21. #define sz() size()
  22. #include<cstdlib>
  23. #define endl '\n'
  24. #define pb push_back
  25. using namespace std;
  26. typedef long long ll;
  27. const int maxn=100010;
  28. const ll inf=1e18;
  29. const ll mod=1e9+7;
  30. const double pi=3.14159265358979;
  31. const double ep=0.0;
  32. vector<vector<pair<ll,ll>>>vec;
  33. ll n,m;
  34. void dfs(ll v,ll t,vector<ll>&d,vector<ll>&w)
  35. {
  36. if (w[v]!=-1)
  37. return ;
  38. if (t==v)
  39. {
  40. w[v]=1;
  41. return ;
  42. }
  43. w[v]=0;
  44. for (auto i:vec[v])
  45. {
  46. ll u=i.first,r=i.second;
  47. if (d[u]+r==d[v])
  48. {
  49. dfs(u,t,d,w);
  50. w[v]=(w[v]+w[u])%mod;
  51. }
  52. }
  53. }
  54. void dij(ll s,vector<ll>&d,vector<ll>&w)
  55. {
  56. d.resize(n,mod*mod);
  57. w.resize(n,-1);
  58. d[s]=0;
  59. set<pair<ll,ll>>se;
  60. se.insert({d[s],s});
  61. while (!se.empty())
  62. {
  63. ll v=se.begin()->second;
  64. se.erase(se.begin());
  65. for (auto i:vec[v])
  66. {
  67. ll u=i.first,r=i.second;
  68. if (d[u]>d[v]+r)
  69. {
  70. se.erase({d[u],u});
  71. d[u]=d[v]+r;
  72. se.insert({d[u],u});
  73. }
  74. }
  75. }
  76. for (ll i=0;i<n;i++)
  77. dfs(i,s,d,w);
  78. }
  79. int main()
  80. {
  81. ll s,t;
  82. cin>>n>>m>>s>>t;
  83. s--;
  84. t--;
  85. vec.resize(n);
  86. for (ll i=0;i<m;i++)
  87. {
  88. ll v,u,w;
  89. cin>>v>>u>>w;
  90. v--;
  91. u--;
  92. vec[v].pb({u,w});
  93. vec[u].pb({v,w});
  94. }
  95. vector<ll>ds,ws,dt,wt;
  96. dij(s,ds,ws);
  97. dij(t,dt,wt);
  98. ll ans=ws[t]*wt[s],al=ds[t];
  99. for (ll i=0;i<n;i++)
  100. {
  101. if (ds[i]+dt[i]!=al)
  102. continue;
  103. if (ds[i]==dt[i])
  104. ans=(ans-ws[i]*wt[i]%mod*ws[i]%mod*wt[i]%mod+mod)%mod;
  105. }
  106. for (ll i=0;i<n;i++)
  107. for (auto j:vec[i])
  108. {
  109. ll u=j.first,w=j.second;
  110. if (ds[i]+dt[u]+w!=al)
  111. continue;
  112. if (w>abs(dt[u]-ds[i]))
  113. ans=(ans-ws[i]*wt[u]%mod*ws[i]%mod*wt[u]%mod+mod)%mod;
  114. }
  115. cout<<ans<<endl;
  116. return 0;
  117. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注