• Codeforces Round 882 (Div. 2)


    目录

    A. The Man who became a God 

    题目分析:

    B. Hamon Odyssey

    题目分析:

    C. Vampiric Powers, anyone?

    题目分析: 


    A. The Man who became a God 

    题目分析:

    n个人分成k组,每一组的力量都是|a_{i+1}-a_i|这样的,那么如果分成k组那么就会有k-1个力量不被统计,将力量总和减去前k-1个最大的力量就是最小的结果

    1. #include
    2. #pragma GCC optimize("Ofast")
    3. #define INF 0x3f3f3f3f
    4. #define IOS ios::sync_with_stdio(false);cin.tie(0);
    5. #define int long long
    6. #define pb push_back
    7. #define vct vector
    8. #define checkbit __builtin_popcount
    9. #define gcd __gcd
    10. #define use int T;cin>>T;while(T--)
    11. template<class T> bool mmax(T &u, T v) { return u < v ? (u = v, 1) : 0; }
    12. template<class T> bool mmin(T &u, T v) { return u > v ? (u = v, 1) : 0; }
    13. #define lowbit(x) (x&(-x))
    14. #define yes cout<<"YES"<
    15. #define no cout<<"NO"<
    16. using namespace std;
    17. typedef pair<int,int>pii;
    18. const int N =105;
    19. int a[N],sb[N];
    20. bool cmp(int a,int b){
    21. return a>b;
    22. }
    23. signed main()
    24. {IOS
    25. use{
    26. int n,k;cin>>n>>k;cin>>a[1];
    27. for(int i=2;i<=n;i++){
    28. cin>>a[i];
    29. sb[i-1]=abs(a[i]-a[i-1]);
    30. }
    31. sort(sb+1,sb+n,cmp);int sum=0;
    32. for(int i=k;i
    33. sum+=sb[i];
    34. }cout<
    35. }
    36. return 0;
    37. }

    B. Hamon Odyssey

     

    题目分析:

    将数组分组,每个组内进行按位与运算,若想让每个组的结果加和最小,最多可以分几个组

    按位与运算,是一个单调递减的过程,如果一个数字的某一位为0,那么无论多少数该位为1 ,结果都为0,对于题目来说,我们需要尽可能的将一个组的结果变为零,也即让所有的0尽可能的发挥作用,故,如果当前数按位与为零之后,将其分为一组.

    1. #include
    2. #pragma GCC optimize("Ofast")
    3. #define INF 0x3f3f3f3f
    4. #define IOS ios::sync_with_stdio(false);cin.tie(0);
    5. #define int long long
    6. #define pb push_back
    7. #define vct vector
    8. #define checkbit __builtin_popcount
    9. #define gcd __gcd
    10. #define use int T;cin>>T;while(T--)
    11. template<class T> bool mmax(T &u, T v) { return u < v ? (u = v, 1) : 0; }
    12. template<class T> bool mmin(T &u, T v) { return u > v ? (u = v, 1) : 0; }
    13. #define lowbit(x) (x&(-x))
    14. #define yes cout<<"YES"<
    15. #define no cout<<"NO"<
    16. using namespace std;
    17. typedef pair<int,int>pii;
    18. const int N =2e5+7;
    19. signed main()
    20. {IOS
    21. use{
    22. int fi=0,ans=0,x,n;cin>>n;
    23. for(int i=1;i<=n;i++){
    24. cin>>x;
    25. if(fi==0)fi=x,ans++;
    26. fi&=x;
    27. }
    28. if(!fi)ans++;
    29. cout<<max(1ll,ans-1)<
    30. }
    31. return 0;
    32. }

    C. Vampiric Powers, anyone?

    题目分析: 

    给一个数组,可以在数组的末尾加上从i~n异或和,求出数组最大的数可能是多少。

    已知可以将i~n的异或和(qwq)提取出来,那么从1~i-1的异或和(awa)就可以通过AllXOR^qwq=awa;

    我们可以利用前缀和的思想,存下前i项的异或和,我们可以通过XOR前面的异或和来获得各个小区间的异或和,最终遍历取最大值即可;

    1. #include
    2. #pragma GCC optimize("Ofast")
    3. #define INF 0x3f3f3f3f
    4. #define IOS ios::sync_with_stdio(false);cin.tie(0);
    5. #define int long long
    6. #define pb push_back
    7. #define vct vector
    8. #define checkbit __builtin_popcount
    9. #define gcd __gcd
    10. #define use int T;cin>>T;while(T--)
    11. #define LEN length()
    12. #define all(a) a.begin(),a.end()
    13. template<class T> bool mmax(T &u, T v) { return u < v ? (u = v, 1) : 0; }
    14. template<class T> bool mmin(T &u, T v) { return u > v ? (u = v, 1) : 0; }
    15. #define lowbit(x) (x&(-x))
    16. #define yes cout<<"YES"<
    17. #define no cout<<"NO"<
    18. using namespace std;
    19. typedef pair<int,int>pii;
    20. signed main()
    21. {IOS
    22. use{
    23. int n;cin>>n;
    24. vector<int> a(n+1);
    25. for(int i=1;i<=n;i++)
    26. {
    27. cin>>a[i];
    28. a[i]^=a[i-1];
    29. }
    30. vct<bool>st((1<<8|1),0);
    31. st[0]=1;
    32. int ans=0;
    33. for(int i=1;i<=n;i++)
    34. {
    35. for(int j=0;j<(1<<8);j++)
    36. {
    37. if(st[j]) ans=max(ans,j^a[i]);
    38. }
    39. st[a[i]]=1;
    40. }
    41. cout<
    42. }
    43. return 0;
    44. }

  • 相关阅读:
    WEB自动化测试,一定得掌握的8个核心知识点
    [附源码]计算机毕业设计JAVAjsp体检中心健康管理系统
    「案例分享」DevExpress XAF (WinForms UI)赋能医疗管理系统,让操作更自动化!
    yolov7使用onnx推理
    js-gerenator-async异步迭代器错误处理及+promise
    《深入PostgreSQL的存储引擎:原理与性能》
    一个简单HTML5期末考核大作业,学生个人html静态网页制作代码
    【图像处理】使用各向异性滤波器和分割图像处理从MRI图像检测脑肿瘤(Matlab代码实现)
    解放双手,根据代码自动生成时序图,这款IDEA插件真香~
    浏览器复制功能
  • 原文地址:https://blog.csdn.net/Enjoy10ve/article/details/134206380