• NYIST计科ACM第四次招新赛( Round 2 )


    下一场是最后一场, 再招两男一女, 没进的同学再接再厉

    A题

    哈希表存一下每一个数字的出现次数, 然后答案+=每个数字出现的次数的平方

    介于有同学不理解哈希表是什么, 在此说明:

    例如数组a: 1 2 3 1 2 4 5  

    数组长度n=7

    将数组a存入哈希表

    1. for(int i=0;i
    2. {
    3. hash[ a[i] ]++;
    4. }

    哈希表中元素为

    下标: 0 1 2 3 4 5 6 7

    元素: 0 2 2 1 1 1 0 0

    可以直观的看见哈希表中每个元素存储了多少个

    例如 hash[2] 中存储了数组a中2的出现次数

    STL版代码: 使用map模拟哈希表

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #define ll long long
    7. using namespace std;
    8. const int N = 1e5+10;
    9. ll ans;
    10. mapmp;
    11. string str;
    12. int main()
    13. {
    14. cin>>str;
    15. // ans=1;
    16. for (int i = 0; i < str.length(); i ++ ) mp[str[i]]++;
    17. for (auto it:mp) ans+=pow(it.second ,2);
    18. cout<
    19. return 0;
    20. }

    c语言代码: 使用数组模拟哈希表

    1. #include
    2. #include
    3. using namespace std;
    4. typedef long long ll;
    5. const int N=1e6+10;
    6. char a[N];
    7. ll b[N];
    8. int main()
    9. {
    10. ll sum,nt=0;
    11. scanf("%s",a);
    12. int k=strlen(a);
    13. for(int i=0;i
    14. {
    15. if(a[i]>='0'&&a[i]<='9') b[a[i]-'0']++;
    16. else b[a[i]-'a'+10]++;
    17. }
    18. for(int i=0;i<=40;i++)
    19. {
    20. if(b[i]>0)
    21. {
    22. sum=b[i]*b[i];
    23. nt+=sum;
    24. }
    25. }
    26. cout<
    27. return 0;
    28. }

    B题

    简单思维题, 也是利用了哈希表的思想

    计算除了5以外其他数字出现的次数

    1. /*
    2. ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠸⣿⣿⣆⠹⣿⣿⢾⣟⣯⣿⣿⣿⣿⣿⣿⣽⣻⣿⣿⣿⣿⣿⣿⣿
    3. ⣿⣿⣿⣿⣿⣿⣻⣽⡿⣿⣎⠙⣿⣞⣷⡌⢻⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⡄⠹⣿⣿⡆⠻⣿⣟⣯⡿⣽⡿⣿⣿⣿⣿⣽⡷⣯⣿⣿⣿⣿⣿⣿
    4. ⣿⣿⣿⣿⣿⣿⣟⣷⣿⣿⣿⡀⠹⣟⣾⣟⣆⠹⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢠⡘⣿⣿⡄⠉⢿⣿⣽⡷⣿⣻⣿⣿⣿⣿⡝⣷⣯⢿⣿⣿⣿⣿
    5. ⣿⣿⣿⣿⣿⣿⣯⢿⣾⢿⣿⡄⢄⠘⢿⣞⡿⣧⡈⢷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣧⠘⣿⣷⠈⣦⠙⢿⣽⣷⣻⣽⣿⣿⣿⣿⣌⢿⣯⢿⣿⣿⣿
    6. ⣿⣿⣿⣿⣿⣿⣟⣯⣿⢿⣿⡆⢸⡷⡈⢻⡽⣷⡷⡄⠻⣽⣿⣿⡿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣏⢰⣯⢷⠈⣿⡆⢹⢷⡌⠻⡾⢋⣱⣯⣿⣿⣿⣿⡆⢻⡿⣿⣿⣿
    7. ⣿⣿⣿⣿⣿⣿⡎⣿⢾⡿⣿⡆⢸⣽⢻⣄⠹⣷⣟⣿⣄⠹⣟⣿⣿⣟⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⡇⢸⣯⣟⣧⠘⣷⠈⡯⠛⢀⡐⢾⣟⣷⣻⣿⣿⣿⡿⡌⢿⣻⣿⣿
    8. ⣿⣿⣿⣿⣿⣿⣧⢸⡿⣟⣿⡇⢸⣯⣟⣮⢧⡈⢿⣞⡿⣦⠘⠏⣹⣿⣽⢿⣿⣿⣿⣿⣯⣿⣿⣿⡇⢸⣿⣿⣾⡆⠹⢀⣠⣾⣟⣷⡈⢿⣞⣯⢿⣿⣿⣿⢷⠘⣯⣿⣿
    9. ⣿⣿⣿⣿⣿⣿⣿⡈⣿⢿⣽⡇⠘⠛⠛⠛⠓⠓⠈⠛⠛⠟⠇⢀⢿⣻⣿⣯⢿⣿⣿⣿⣷⢿⣿⣿⠁⣾⣿⣿⣿⣧⡄⠇⣹⣿⣾⣯⣿⡄⠻⣽⣯⢿⣻⣿⣿⡇⢹⣾⣿
    10. ⣿⣿⣿⣿⣿⣿⣿⡇⢹⣿⡽⡇⢸⣿⣿⣿⣿⣿⣞⣆⠰⣶⣶⡄⢀⢻⡿⣯⣿⡽⣿⣿⣿⢯⣟⡿⢀⣿⣿⣿⣿⣿⣧⠐⣸⣿⣿⣷⣿⣿⣆⠹⣯⣿⣻⣿⣿⣿⢀⣿⢿
    11. ⣿⣿⣿⣿⣿⣿⣿⣿⠘⣯⡿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣧⡈⢿⣳⠘⡄⠻⣿⢾⣽⣟⡿⣿⢯⣿⡇⢸⣿⣿⣿⣿⣿⣿⡀⢾⣿⣿⣿⣿⣿⣿⣆⠹⣾⣷⣻⣿⡿⡇⢸⣿
    12. ⣿⣿⣿⣿⣿⣿⣿⣿⡇⢹⣿⠇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠻⡇⢹⣆⠹⣟⣾⣽⣻⣟⣿⣽⠁⣾⣿⣿⣿⣿⣿⣿⣇⣿⣿⠿⠛⠛⠉⠙⠋⢀⠁⢘⣯⣿⣿⣧⠘⣿
    13. ⣿⣿⣿⣿⣿⣿⣿⣿⣿⡈⣿⡃⢼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⠌⣿⣆⠘⣿⣞⡿⣞⡿⡞⢠⣿⣿⣿⣿⣿⡿⠛⠉⠁⢀⣀⣠⣤⣤⣶⣶⣶⡆⢻⣽⣞⡿⣷⠈⣿
    14. ⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠘⠁⠉⠉⠉⠉⠉⠉⠉⠉⠉⠙⠛⠛⢿⣄⢻⣿⣧⠘⢯⣟⡿⣽⠁⣾⣿⣿⣿⣿⣿⡃⢀⢀⠘⠛⠿⢿⣻⣟⣯⣽⣻⣵⡀⢿⣯⣟⣿⢀⣿
    15. ⣿⣿⣿⣟⣿⣿⣿⣿⣶⣶⡆⢀⣿⣾⣿⣾⣷⣿⣶⠿⠚⠉⢀⢀⣤⣿⣷⣿⣿⣷⡈⢿⣻⢃⣼⣿⣿⣿⣿⣻⣿⣿⣿⡶⣦⣤⣄⣀⡀⠉⠛⠛⠷⣯⣳⠈⣾⡽⣾⢀⣿
    16. ⣿⢿⣿⣿⣻⣿⣿⣿⣿⣿⡿⠐⣿⣿⣿⣿⠿⠋⠁⢀⢀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣌⣥⣾⡿⣿⣿⣷⣿⣿⢿⣷⣿⣿⣟⣾⣽⣳⢯⣟⣶⣦⣤⡾⣟⣦⠘⣿⢾⡁⢺
    17. ⣿⣻⣿⣿⡷⣿⣿⣿⣿⣿⡗⣦⠸⡿⠋⠁⢀⢀⣠⣴⢿⣿⣽⣻⢽⣾⣟⣷⣿⣟⣿⣿⣿⣳⠿⣵⣧⣼⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣽⣳⣯⣿⣿⣿⣽⢀⢷⣻⠄⠘
    18. ⣿⢷⣻⣿⣿⣷⣻⣿⣿⣿⡷⠛⣁⢀⣀⣤⣶⣿⣛⡿⣿⣮⣽⡻⣿⣮⣽⣻⢯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢀⢸⣿⢀⡆
    19. ⠸⣟⣯⣿⣿⣷⢿⣽⣿⣿⣷⣿⣷⣆⠹⣿⣶⣯⠿⣿⣶⣟⣻⢿⣷⣽⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢀⣯⣟⢀⡇
    20. ⣇⠹⣟⣾⣻⣿⣿⢾⡽⣿⣿⣿⣿⣿⣆⢹⣶⣿⣻⣷⣯⣟⣿⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢀⡿⡇⢸⡇
    21. ⣿⣆⠹⣷⡻⣽⣿⣯⢿⣽⣻⣿⣿⣿⣿⣆⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⢸⣿⠇⣼⡇
    22. ⡙⠾⣆⠹⣿⣦⠛⣿⢯⣷⢿⡽⣿⣿⣿⣿⣆⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠎⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⢀⣿⣾⣣⡿⡇
    23. ⣿⣷⡌⢦⠙⣿⣿⣌⠻⣽⢯⣿⣽⣻⣿⣿⣿⣧⠩⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⢰⢣⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⢀⢀⢿⣞⣷⢿⡇
    24. ⣿⣽⣆⠹⣧⠘⣿⣿⡷⣌⠙⢷⣯⡷⣟⣿⣿⣿⣷⡀⡹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣈⠃⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢀⣴⡧⢀⠸⣿⡽⣿⢀
    25. ⢻⣽⣿⡄⢻⣷⡈⢿⣿⣿⢧⢀⠙⢿⣻⡾⣽⣻⣿⣿⣄⠌⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⢁⣰⣾⣟⡿⢀⡄⢿⣟⣿⢀
    26. ⡄⢿⣿⣷⢀⠹⣟⣆⠻⣿⣿⣆⢀⣀⠉⠻⣿⡽⣯⣿⣿⣷⣈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⢀⣠⠘⣯⣷⣿⡟⢀⢆⠸⣿⡟⢸
    27. ⣷⡈⢿⣿⣇⢱⡘⢿⣷⣬⣙⠿⣧⠘⣆⢀⠈⠻⣷⣟⣾⢿⣿⣆⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⣠⡞⢡⣿⢀⣿⣿⣿⠇⡄⢸⡄⢻⡇⣼
    28. ⣿⣷⡈⢿⣿⡆⢣⡀⠙⢾⣟⣿⣿⣷⡈⠂⠘⣦⡈⠿⣯⣿⢾⣿⣆⠙⠻⠿⠿⠿⠿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢋⣠⣾⡟⢠⣿⣿⢀⣿⣿⡟⢠⣿⢈⣧⠘⢠⣿
    29. ⣿⣿⣿⣄⠻⣿⡄⢳⡄⢆⡙⠾⣽⣿⣿⣆⡀⢹⡷⣄⠙⢿⣿⡾⣿⣆⢀⡀⢀⢀⢀⢀⢀⢀⢀⢀⢀⢀⢀⢀⣀⣠⣴⡿⣯⠏⣠⣿⣿⡏⢸⣿⡿⢁⣿⣿⢀⣿⠆⢸⣿
    30. ⣿⣿⣿⣿⣦⡙⣿⣆⢻⡌⢿⣶⢤⣉⣙⣿⣷⡀⠙⠽⠷⠄⠹⣿⣟⣿⣆⢙⣋⣤⣤⣤⣄⣀⢀⢀⢀⢀⣾⣿⣟⡷⣯⡿⢃⣼⣿⣿⣿⠇⣼⡟⣡⣿⣿⣿⢀⡿⢠⠈⣿
    31. ⣿⣿⣿⣿⣿⣷⣮⣿⣿⣿⡌⠁⢤⣤⣤⣤⣬⣭⣴⣶⣶⣶⣆⠈⢻⣿⣿⣆⢻⣿⣿⣿⣿⣿⣿⣷⣶⣤⣌⣉⡘⠛⠻⠶⣿⣿⣿⣿⡟⣰⣫⣴⣿⣿⣿⣿⠄⣷⣿⣿⣿
    32. */
    33. #include
    34. #include
    35. #include
    36. #include
    37. #include
    38. #include
    39. #include
    40. #include
    41. #include
    42. #include
    43. #include
    44. #include
    45. #include
    46. #include
    47. using namespace std;
    48. #define ll long long
    49. #define endl "\n"
    50. #define R cin>>
    51. #define S second
    52. #define F first
    53. #define ln cout<
    54. #define rep(i, a, b) for (ll i = (a); i <= (b); i++)
    55. #define repr(i, a, b) for (ll i = (a); i < (b); i++)
    56. #define rrep(i, a, b) for (ll i = (b); i >= (a); i--)
    57. #define rrepr(i, a, b) for (ll i = (b); i > (a); i--)
    58. #define mem(a) memset((a),0,sizeof (a));
    59. #define min(a,b) ((a)<(b)?(a):(b))
    60. #define max(a,b) ((a)>(b)?(a):(b))
    61. #define yes cout<<"YES"<
    62. #define no cout<<"NO"<
    63. #define debug cout<<"here!"<
    64. ll cnt,n,m,t,ans,ant;
    65. const int N=1e5+10;
    66. const int INF=0x3f3f3f3f;
    67. const ll llINF=0x3f3f3f3f3f3f3f3f;
    68. ll arr[N];
    69. string str;
    70. void solve()
    71. {
    72. cin>>str;
    73. for(int i=0;ilenght();i++)
    74. {
    75. if(str[i]!='5')
    76. {
    77. arr[str[i]]++;
    78. arr['5']++;
    79. }
    80. }
    81. for(int i='1';i<='9';i++) cout<' ';
    82. return;
    83. }
    84. int main()
    85. {
    86. solve();
    87. return 0;
    88. }

    C题

    快速幂的模板题, 记得对答案取模

    1. #include
    2. typedef long long ll;
    3. const ll p = 200907;
    4. using namespace std;
    5. ll ksm(ll a,ll k){
    6. int res = 1 % p,t = a;
    7. while(k){
    8. if(k & 1) res = res%p * t % p;
    9. t = t%p * t % p;
    10. k >>= 1;
    11. }
    12. return res;
    13. }
    14. int main(){
    15. int t;
    16. cin >> t;
    17. ll res,res2;
    18. ll a1,b1,c1,k1,a2,b2,c2,k2;
    19. while(t--){
    20. scanf("%lld%lld%lld%lld",&a1,&b1,&c1,&k1);
    21. if(b1 - a1 == c1 - b1){
    22. ll d = b1 - a1;
    23. res = a1%p + ((k1-1) * d%p )% p;
    24. }
    25. else {
    26. ll q = b1 / a1;
    27. res = a1 %p * ksm(q,k1-1);
    28. }
    29. cout << res % p << endl;
    30. }
    31. }

    D题

    前缀和处理+二分优化

    题目中给出的是每个楼梯的楼梯高度差, 我们需要自己转化为每个楼梯的高度, 并且需要用一个数组存储在当前第i个楼梯之前(包括第i个), 最大的高度差(因为路飞的腿要和最大高度差比较)

    然后在最大高度差中寻找第一个大于路飞腿长的高度, 输出当前楼梯总长度即可

    库函数版代码(二分库函数请在熟练使用二分的情况下再使用!)

    1. /*
    2. ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠸⣿⣿⣆⠹⣿⣿⢾⣟⣯⣿⣿⣿⣿⣿⣿⣽⣻⣿⣿⣿⣿⣿⣿⣿
    3. ⣿⣿⣿⣿⣿⣿⣻⣽⡿⣿⣎⠙⣿⣞⣷⡌⢻⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⡄⠹⣿⣿⡆⠻⣿⣟⣯⡿⣽⡿⣿⣿⣿⣿⣽⡷⣯⣿⣿⣿⣿⣿⣿
    4. ⣿⣿⣿⣿⣿⣿⣟⣷⣿⣿⣿⡀⠹⣟⣾⣟⣆⠹⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢠⡘⣿⣿⡄⠉⢿⣿⣽⡷⣿⣻⣿⣿⣿⣿⡝⣷⣯⢿⣿⣿⣿⣿
    5. ⣿⣿⣿⣿⣿⣿⣯⢿⣾⢿⣿⡄⢄⠘⢿⣞⡿⣧⡈⢷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣧⠘⣿⣷⠈⣦⠙⢿⣽⣷⣻⣽⣿⣿⣿⣿⣌⢿⣯⢿⣿⣿⣿
    6. ⣿⣿⣿⣿⣿⣿⣟⣯⣿⢿⣿⡆⢸⡷⡈⢻⡽⣷⡷⡄⠻⣽⣿⣿⡿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣏⢰⣯⢷⠈⣿⡆⢹⢷⡌⠻⡾⢋⣱⣯⣿⣿⣿⣿⡆⢻⡿⣿⣿⣿
    7. ⣿⣿⣿⣿⣿⣿⡎⣿⢾⡿⣿⡆⢸⣽⢻⣄⠹⣷⣟⣿⣄⠹⣟⣿⣿⣟⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⡇⢸⣯⣟⣧⠘⣷⠈⡯⠛⢀⡐⢾⣟⣷⣻⣿⣿⣿⡿⡌⢿⣻⣿⣿
    8. ⣿⣿⣿⣿⣿⣿⣧⢸⡿⣟⣿⡇⢸⣯⣟⣮⢧⡈⢿⣞⡿⣦⠘⠏⣹⣿⣽⢿⣿⣿⣿⣿⣯⣿⣿⣿⡇⢸⣿⣿⣾⡆⠹⢀⣠⣾⣟⣷⡈⢿⣞⣯⢿⣿⣿⣿⢷⠘⣯⣿⣿
    9. ⣿⣿⣿⣿⣿⣿⣿⡈⣿⢿⣽⡇⠘⠛⠛⠛⠓⠓⠈⠛⠛⠟⠇⢀⢿⣻⣿⣯⢿⣿⣿⣿⣷⢿⣿⣿⠁⣾⣿⣿⣿⣧⡄⠇⣹⣿⣾⣯⣿⡄⠻⣽⣯⢿⣻⣿⣿⡇⢹⣾⣿
    10. ⣿⣿⣿⣿⣿⣿⣿⡇⢹⣿⡽⡇⢸⣿⣿⣿⣿⣿⣞⣆⠰⣶⣶⡄⢀⢻⡿⣯⣿⡽⣿⣿⣿⢯⣟⡿⢀⣿⣿⣿⣿⣿⣧⠐⣸⣿⣿⣷⣿⣿⣆⠹⣯⣿⣻⣿⣿⣿⢀⣿⢿
    11. ⣿⣿⣿⣿⣿⣿⣿⣿⠘⣯⡿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣧⡈⢿⣳⠘⡄⠻⣿⢾⣽⣟⡿⣿⢯⣿⡇⢸⣿⣿⣿⣿⣿⣿⡀⢾⣿⣿⣿⣿⣿⣿⣆⠹⣾⣷⣻⣿⡿⡇⢸⣿
    12. ⣿⣿⣿⣿⣿⣿⣿⣿⡇⢹⣿⠇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠻⡇⢹⣆⠹⣟⣾⣽⣻⣟⣿⣽⠁⣾⣿⣿⣿⣿⣿⣿⣇⣿⣿⠿⠛⠛⠉⠙⠋⢀⠁⢘⣯⣿⣿⣧⠘⣿
    13. ⣿⣿⣿⣿⣿⣿⣿⣿⣿⡈⣿⡃⢼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⠌⣿⣆⠘⣿⣞⡿⣞⡿⡞⢠⣿⣿⣿⣿⣿⡿⠛⠉⠁⢀⣀⣠⣤⣤⣶⣶⣶⡆⢻⣽⣞⡿⣷⠈⣿
    14. ⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠘⠁⠉⠉⠉⠉⠉⠉⠉⠉⠉⠙⠛⠛⢿⣄⢻⣿⣧⠘⢯⣟⡿⣽⠁⣾⣿⣿⣿⣿⣿⡃⢀⢀⠘⠛⠿⢿⣻⣟⣯⣽⣻⣵⡀⢿⣯⣟⣿⢀⣿
    15. ⣿⣿⣿⣟⣿⣿⣿⣿⣶⣶⡆⢀⣿⣾⣿⣾⣷⣿⣶⠿⠚⠉⢀⢀⣤⣿⣷⣿⣿⣷⡈⢿⣻⢃⣼⣿⣿⣿⣿⣻⣿⣿⣿⡶⣦⣤⣄⣀⡀⠉⠛⠛⠷⣯⣳⠈⣾⡽⣾⢀⣿
    16. ⣿⢿⣿⣿⣻⣿⣿⣿⣿⣿⡿⠐⣿⣿⣿⣿⠿⠋⠁⢀⢀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣌⣥⣾⡿⣿⣿⣷⣿⣿⢿⣷⣿⣿⣟⣾⣽⣳⢯⣟⣶⣦⣤⡾⣟⣦⠘⣿⢾⡁⢺
    17. ⣿⣻⣿⣿⡷⣿⣿⣿⣿⣿⡗⣦⠸⡿⠋⠁⢀⢀⣠⣴⢿⣿⣽⣻⢽⣾⣟⣷⣿⣟⣿⣿⣿⣳⠿⣵⣧⣼⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣽⣳⣯⣿⣿⣿⣽⢀⢷⣻⠄⠘
    18. ⣿⢷⣻⣿⣿⣷⣻⣿⣿⣿⡷⠛⣁⢀⣀⣤⣶⣿⣛⡿⣿⣮⣽⡻⣿⣮⣽⣻⢯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢀⢸⣿⢀⡆
    19. ⠸⣟⣯⣿⣿⣷⢿⣽⣿⣿⣷⣿⣷⣆⠹⣿⣶⣯⠿⣿⣶⣟⣻⢿⣷⣽⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢀⣯⣟⢀⡇
    20. ⣇⠹⣟⣾⣻⣿⣿⢾⡽⣿⣿⣿⣿⣿⣆⢹⣶⣿⣻⣷⣯⣟⣿⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢀⡿⡇⢸⡇
    21. ⣿⣆⠹⣷⡻⣽⣿⣯⢿⣽⣻⣿⣿⣿⣿⣆⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⢸⣿⠇⣼⡇
    22. ⡙⠾⣆⠹⣿⣦⠛⣿⢯⣷⢿⡽⣿⣿⣿⣿⣆⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠎⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⢀⣿⣾⣣⡿⡇
    23. ⣿⣷⡌⢦⠙⣿⣿⣌⠻⣽⢯⣿⣽⣻⣿⣿⣿⣧⠩⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⢰⢣⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⢀⢀⢿⣞⣷⢿⡇
    24. ⣿⣽⣆⠹⣧⠘⣿⣿⡷⣌⠙⢷⣯⡷⣟⣿⣿⣿⣷⡀⡹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣈⠃⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢀⣴⡧⢀⠸⣿⡽⣿⢀
    25. ⢻⣽⣿⡄⢻⣷⡈⢿⣿⣿⢧⢀⠙⢿⣻⡾⣽⣻⣿⣿⣄⠌⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⢁⣰⣾⣟⡿⢀⡄⢿⣟⣿⢀
    26. ⡄⢿⣿⣷⢀⠹⣟⣆⠻⣿⣿⣆⢀⣀⠉⠻⣿⡽⣯⣿⣿⣷⣈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⢀⣠⠘⣯⣷⣿⡟⢀⢆⠸⣿⡟⢸
    27. ⣷⡈⢿⣿⣇⢱⡘⢿⣷⣬⣙⠿⣧⠘⣆⢀⠈⠻⣷⣟⣾⢿⣿⣆⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⣠⡞⢡⣿⢀⣿⣿⣿⠇⡄⢸⡄⢻⡇⣼
    28. ⣿⣷⡈⢿⣿⡆⢣⡀⠙⢾⣟⣿⣿⣷⡈⠂⠘⣦⡈⠿⣯⣿⢾⣿⣆⠙⠻⠿⠿⠿⠿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢋⣠⣾⡟⢠⣿⣿⢀⣿⣿⡟⢠⣿⢈⣧⠘⢠⣿
    29. ⣿⣿⣿⣄⠻⣿⡄⢳⡄⢆⡙⠾⣽⣿⣿⣆⡀⢹⡷⣄⠙⢿⣿⡾⣿⣆⢀⡀⢀⢀⢀⢀⢀⢀⢀⢀⢀⢀⢀⢀⣀⣠⣴⡿⣯⠏⣠⣿⣿⡏⢸⣿⡿⢁⣿⣿⢀⣿⠆⢸⣿
    30. ⣿⣿⣿⣿⣦⡙⣿⣆⢻⡌⢿⣶⢤⣉⣙⣿⣷⡀⠙⠽⠷⠄⠹⣿⣟⣿⣆⢙⣋⣤⣤⣤⣄⣀⢀⢀⢀⢀⣾⣿⣟⡷⣯⡿⢃⣼⣿⣿⣿⠇⣼⡟⣡⣿⣿⣿⢀⡿⢠⠈⣿
    31. ⣿⣿⣿⣿⣿⣷⣮⣿⣿⣿⡌⠁⢤⣤⣤⣤⣬⣭⣴⣶⣶⣶⣆⠈⢻⣿⣿⣆⢻⣿⣿⣿⣿⣿⣿⣷⣶⣤⣌⣉⡘⠛⠻⠶⣿⣿⣿⣿⡟⣰⣫⣴⣿⣿⣿⣿⠄⣷⣿⣿⣿
    32. */
    33. #include
    34. #include
    35. #include
    36. #include
    37. #include
    38. #include
    39. #include
    40. #include
    41. #include
    42. #include
    43. #include
    44. #include
    45. #include
    46. #include
    47. using namespace std;
    48. #define ll long long
    49. #define endl "\n"
    50. #define R cin>>
    51. #define S second
    52. #define F first
    53. #define ln cout<
    54. #define rep(i, a, b) for (ll i = (a); i <= (b); i++)
    55. #define repr(i, a, b) for (ll i = (a); i < (b); i++)
    56. #define rrep(i, a, b) for (ll i = (b); i >= (a); i--)
    57. #define rrepr(i, a, b) for (ll i = (b); i > (a); i--)
    58. #define mem(a) memset((a),0,sizeof (a));
    59. #define min(a,b) ((a)<(b)?(a):(b))
    60. #define max(a,b) ((a)>(b)?(a):(b))
    61. #define yes cout<<"YES"<
    62. #define no cout<<"NO"<
    63. #define debug cout<<"here!"<
    64. ll cnt,n,m,t,ans,ant;
    65. const int N=2e5+10;
    66. const int INF=0x3f3f3f3f;
    67. const ll llINF=0x3f3f3f3f3f3f3f3f;
    68. ll arr[N],f[N],te[N],pos[N];
    69. string str;
    70. void solve()
    71. {
    72. cin>>n>>m;
    73. ans=ant=cnt=0;
    74. f[0]=te[0]=0;
    75. for(int i=1;i<=n;i++)
    76. {
    77. cin>>arr[i];
    78. f[i]=f[i-1]+arr[i];
    79. te[i]=max(te[i-1],arr[i]);
    80. }
    81. for(int i=1;i<=m;i++)
    82. {
    83. R cnt;
    84. ans=upper_bound(te+1,te+1+n,cnt)-te-1;
    85. cout<' ';
    86. }
    87. cout<
    88. return;
    89. }
    90. int main()
    91. {
    92. cin>>t;
    93. while(t--)
    94. solve();
    95. return 0;
    96. }

    E题

    转载至Educational Codeforces Round 128 (Rated for Div. 2)(C、E) - 哔哩哔哩

    1. #include
    2. #define int long long
    3. using namespace std;
    4. const int N=2e5+10;
    5. string s;
    6. int sum[N];
    7. void solve()
    8. {
    9. int n;
    10. cin>>s;
    11. n=s.size();
    12. for(int i=1;i<=n;i++)sum[i]=sum[i-1]+(s[i-1]=='0');
    13. int cnt1=count(s.begin(),s.end(),'1');
    14. int ans=sum[n];
    15. for(int i=cnt1;i<=n;i++){
    16. ans=min(ans,sum[i]-sum[i-cnt1]);
    17. }
    18. cout<'\n';
    19. }
    20. signed main()
    21. {
    22. ios::sync_with_stdio(false),cin.tie(0);
    23. int t=1;
    24. cin>>t;
    25. while(t--)
    26. {
    27. solve();
    28. }
    29. return 0;
    30. } 作者:勤锡 https://www.bilibili.com/read/cv16609041/ 出处:bilibili

     

    1. #include
    2. #define int long long
    3. using namespace std;
    4. const int N=50+10;
    5. string s;
    6. void solve()
    7. {
    8. cin>>s;
    9. int n=s.size();
    10. int l=0,r=0,l2=0,r2=n-1;
    11. int ans=0,tot0=0,tot1=0;;
    12. for(int i=0; i
    13. ans+=(s[i]=='0');
    14. tot1+=(s[i]=='1');
    15. }
    16. while(l
    17. while(r
    18. tot0+=(s[r]=='0');
    19. tot1-=(s[r]=='1');
    20. r++;
    21. }
    22. ans=min(ans,max(tot0,tot1));
    23. tot0-=(s[l]=='0');
    24. tot1+=(s[l]=='1');
    25. l++;
    26. }
    27. cout<'\n';
    28. }
    29. signed main()
    30. {
    31. ios::sync_with_stdio(false),cin.tie(0);
    32. int t=1;
    33. cin>>t;
    34. while(t--)
    35. {
    36. solve();
    37. }
    38. return 0;
    39. } 作者:勤锡 https://www.bilibili.com/read/cv16609041/ 出处:bilibili

     F题

    蛇形矩阵的变式, 考察代码能力

    1. #include
    2. using namespace std;
    3. int q[105][105];
    4. int main(){
    5. int n;
    6. cin>>n;
    7. int op=1;
    8. int p=n*2-1;
    9. int a=1,b=1;
    10. q[a][b]=op;
    11. op++;
    12. for(int i=2;i2;i++){
    13. if(i<=n){
    14. if(i%2==0){
    15. b=i;
    16. a=1;
    17. for(int j=0;j
    18. q[a][b]=op;
    19. op++;
    20. a++;
    21. b--;
    22. }
    23. }else{
    24. a=i;
    25. b=1;
    26. for(int j=0;j
    27. q[a][b]=op;
    28. op++;
    29. a--;
    30. b++;
    31. }
    32. }
    33. }else{
    34. if(i%2==0){
    35. b=n;
    36. a=i+1-b;
    37. for(int j=0;j2-i;j++){
    38. q[a][b]=op;
    39. op++;
    40. a++;
    41. b--;
    42. }
    43. }else{
    44. a=n;
    45. b=i+1-a;
    46. for(int j=0; j2-i;j++){
    47. q[a][b]=op;
    48. op++;
    49. a--;
    50. b++;
    51. }
    52. }
    53. }
    54. }
    55. for(int i=1;i<=n;i++){
    56. for(int j=1;j<=n;j++){
    57. printf("%5d",q[i][j]);
    58. }
    59. cout<
    60. }
    61. }

    G题

    签到题, 统计最长的1, 遍历一遍就行

    1. #include
    2. using namespace std;
    3. int res, maxn;
    4. int sum[1000000];
    5. int main(){
    6. int len;
    7. string n;
    8. cin >> len >> n;
    9. for(int i = 0;i < len;i++){
    10. int j = i;
    11. if(n[i] == '1') maxn ++,res = max(maxn,res);
    12. else {
    13. maxn = 0;
    14. }
    15. }
    16. cout << res;
    17. return 0;
    18. }

    H题

    出过的原题...

    线性筛板子题

    1. #include
    2. using namespace std;
    3. long long A[1000];
    4. int main()
    5. {
    6. long long int n, i, j = 0;
    7. scanf("%lld", &n);
    8. if (n < 2)
    9. printf("0\n");
    10. for (i = 2; n > 1; i++)
    11. {
    12. if (n % i == 0)
    13. {
    14. while (n % i == 0)
    15. {
    16. A[j] = i;
    17. n = n / i;
    18. }
    19. j++;
    20. }
    21. }
    22. for (i = 0; i < j; i++)
    23. printf("%lld\n", A[i]);
    24. return 0;
    25. }

    I题

    数论, 遍历一遍求两个n/i和i的最小公倍数

    来自lk的题解

    C. Fadi and LCM Codeforces Round #613 (Div. 2)_jikelk的博客-CSDN博客

    J题

    签到题, 直接输出a+b-1即可

    K题

    线性筛和一个前缀和的思想

    1. #include
    2. #include
    3. #include
    4. #include
    5. #define ll long long
    6. using namespace std;
    7. const ll N=1e6+10;
    8. ll a[N];
    9. ll s[N];
    10. ll fp(ll a,ll b,ll c)
    11. {
    12. ll x=1;
    13. while(b>0)
    14. {
    15. if(b&1)
    16. {
    17. x=x*a%c;
    18. }
    19. b>>=1;
    20. a=a*a%c;
    21. }
    22. return x;
    23. }
    24. int main()
    25. {
    26. a[0]=1;
    27. a[1]=1;
    28. s[0]=1;
    29. s[1]=2;
    30. for(ll i=2;i
    31. {
    32. if(a[i]==0)
    33. {
    34. a[i]=-1;
    35. for(int j=2;i*j<=N;j++)
    36. {
    37. a[i*j]=1;
    38. }
    39. }
    40. s[i]=a[i]+s[i-1];
    41. }
    42. ll t;
    43. cin>>t;
    44. while(t--)
    45. {
    46. ll l,r;
    47. scanf("%lld%lld",&l,&r);
    48. cout<-1]<
    49. }
    50. }

    L题

    最签到的一题

    输出1到n的和

    M题

    把相邻的字母合成为1个

    换句话说, 遍历一遍, 如果i+1的字母和i的字母不同, 答案+1

    1. #include
    2. #include
    3. using namespace std;
    4. typedef long long ll;
    5. const int N=1e5+10;
    6. char a[N];
    7. int main()
    8. {
    9. int count=1;
    10. int n;
    11. cin>>n;
    12. scanf("%s",a);
    13. for(int i=1;i
    14. {
    15. if(a[i]!=a[i-1])count++;
    16. }
    17. cout<
    18. return 0;
    19. }
  • 相关阅读:
    灵魂一问:一个Java文件的执行全部过程你确定都清楚吗?
    Layui 主窗口调用 iframe 弹出框模块,获取控件的相应值
    关于ubuntu设置sh文件开机自启动python3和sudo python3问题
    superset study day01 (本地启动superset项目)
    javascript基础
    谷歌浏览器开发者工具操作手册
    【sgTileImage】自定义组件:瓦片图拖拽局部加载、实现以鼠标为中心缩放
    思科 Packet Tracer 实验八 DHCP基本配置(以路由为中继)
    Java毕业设计-二手物品交易市场
    基于ChatGPT的文本生成艺术框架—WordArt Designer
  • 原文地址:https://blog.csdn.net/Tanya_xiaomai/article/details/127830614