首页 > 其他分享 >2024.1.20

2024.1.20

时间:2024-01-20 18:33:26浏览次数:39  
标签:tmp 2024.1 20 cout int ll cin long

                                                         关于STL中二分函数的用法

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e7+5;
ll w[N];
ll n,k;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>k;
    for(int i = 1 ;i <= n ; i++)
        cin>>w[i];
    int pos1 = lower_bound(w+1,w+1+n,k)-w;  //大于等于
    int pos2 = upper_bound(w+1,w+1+n,k)-w;  //大于
    cout<<pos1<<" "<<w[pos1]<<"\n";
    cout<<pos2<<" "<<w[pos2]<<"\n";
    sort(w+1,w+1+n,greater<ll>());  //逆排序
    int pos3 = lower_bound(w+1,w+1+n,k,greater<ll>())-w; //小于等于
    int pos4 = upper_bound(w+1,w+1+n,k,greater<ll>())-w; //小于
    cout<<pos3<<" "<<w[pos3]<<"\n";
    cout<<pos4<<" "<<w[pos4]<<"\n";
    return 0;
}

                                                                                                          Problem - B - Codeforces

   

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n;
ll a[1010][1010];
ll f[1010];
int main() {
    int t ;
    cin >> t;
    while(t--) {
        cin >> n;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++) {
                  cin>>a[i][j];
            }
        for(int i = 1 ; i <= 1010 ; i++)
            f[i] = pow(2,30)-1;   //2^30次方二进制全是1
        for(int i = 1; i <= n ; i++)
            for(int j = 1 ; j <= n ; j++)
            {
                if(i != j)
                {
                    f[i] = (f[i] & a[i][j]);  //根据给的数组a,判断哪些位上必须是1,两个相同,做最坏情况
                }
            }
        int flag = 1 ;
        for(int i = 1 ; i <= n ; i++)
        {
            for(int j = 1 ; j <= n ; j++)
            {
                if(i!=j)
                {
                    if(a[i][j] != (f[i]|f[j]))  //最坏情况都不能满足,说明无法解决
                        flag = 0;
                }
                if(flag==0)
                    break;
            }
            if(flag == 0)
                break;
        }
        if(flag) {
            cout << "Yes" << "\n";
            for(int i = 1; i <= n ; i++)
                cout<<f[i]<<" ";
                cout<<"\n";
        }
        else
            cout<<"No"<<"\n";
    }
    return 0;
}

总结:位运算,根据两个数按位或的结果,可以反推理想情况,就是两个数相同,它们在二进制下结果值有1他们就有1,所以可以用二进制位全是1的2^30-1去和结果做一个按位与从而看结果哪些位为1

 

 

                                Problem - C - Codeforces

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e5+5;
ll f[N];
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    ll t ;
    cin >> t;
    while(t--)
    {
        ll n;
        cin >> n;
        for(int i = 1 ; i <= n ; i++)
            cin>>f[i];
        ll ans = 0;
        ll tmp = 0;
        for(int i = n ; i >= 1; i--) //反向比较
        {
             tmp+=f[i];
             if(i == 1 || tmp > 0)
                 ans+=tmp;
        }
        cout<<ans<<"\n";
 
    }
    return 0;
}

总结:本题是根据权重分配相关的题目,越往后面权重划分越重,所以我们必须从后往前看,一旦后面的后缀和大于0就立马分组,再用一个tmp去累加,就不用考虑乘数如何去取的问题了。

                                      Problem - C - Codeforces

 

标签:tmp,2024.1,20,cout,int,ll,cin,long
From: https://www.cnblogs.com/yuanshen77/p/17976936

相关文章

  • P4747 [CERC2017] Intrinsic Interval 题解
    题目链接:IntrinsicInterval讲讲析合树如何解决这种问题,其实这题很接近析合树的板题的应用。增量法进行析合树建树时,需要用ST表预处理出\(max\)和\(min\)以便\(O(1)\)查询极差,然后线段树去维护\([l,r]\)上的极差减区间端点做差即\(diff-(r-l)\),当这玩意等于\(0\)时......
  • LG1020
    题意给定\(n\)颗依次飞来的导弹的高度,现在有一个拦截系统,它的特点是:第一次拦截的导弹可以任意高度,但以后任何一次都不能高于上一次。现在要求这套系统最多能拦截多少颗导弹,以及要拦截所有导弹最少需要多少套这样的系统。分析题目要求两个不同的问题的答案,我们可以分开处理。......
  • CSP2022 & NOIP2022
    before\(\text{inf}\)days据说今年GD参赛的人数特别多,很慌。8.01按照往年的惯例,又是一年集训时。去年没学好,只好重头开始。今年这一届的队友tql。算是基本上把深进给复习了一遍吧。8.22集训终于结束了。烦人的初赛又来了。CSP模拟套题接连不断。平均分\(70\)左......
  • 1月20日 刷题随笔1 双指针1
    1.反转字符(力扣344)https://leetcode.cn/problems/reverse-string/description/编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题利用i,j两个指针,i指......
  • NOIP2021
    NOIP2021来啦!Day0为了方便,我们提前一天便到了考点附近。出发之前,我们又在机房里呆了两个小时,大家都在忙着复习着诸如线段树等模板。两个小时的车程后,我们吃过饭,老师又把我们集中开会,跟我们讲了一堆注意事项。讲完之后,大家都睡了。Day1第一次打联赛,不免有些小紧张,毕竟这些题目......
  • P8112 [Cnoi2021] 符文破译 题解
    题目传送门思路先看数据范围,我们发现两个字符串的长度最大会达到\(5\times10^7\)。这立刻打消了我用暴力的想法。于是,我选择了用KMP模式匹配,这一个能够在线性时间内判定字符串\(A\)是否是字符串\(B\)的字串,并求出字符串\(A\)在字符串\(B\)中各次出现的位置。如......
  • AT_codefestival_2016_final_b
    根据题意,很容易得知要使得它们的最大值最小,就要从最小的\(1\)开始用。转化一下题意,不难发现,我们只需求出最小的\(k\),使得\[\\sum_{i=1}^ki\\gen\]于是思路便产生了:对\(1\),\(2\),\(3\),⋯\(k\)求和,直到上述式子成立。可以很容易地看出来一个规律:\[(\\sum_{i=1}^ki\)......
  • Ubuntu20.04部署docker环境
    1.卸载旧的docker版本forpkgindocker.iodocker-docdocker-composepodman-dockercontainerdrunc;doapt-getremove$pkg;done2.切换国内的软件源cat>/etc/apt/sources.list<<EOFdebhttps://mirrors.aliyun.com/ubuntu/focalmainrestricteduniversemultiv......
  • Check for balanced parentheses using stack【1月20日学习笔记】
    点击查看代码//Checkforbalancedparenthesesusingstack#include<iostream>#include<stack>//stackfromstandardtemplatelibrary(STL)#include<string>usingnamespacestd;boolarepair(charopening,charclosing){ if(opening=='(&#......
  • 昆虫科学院 AtCoder Race Ranking 2023 Autumn
    概况为提高选手们的训练/比赛热情,我们(昆虫科学院)通过商讨,在\(2023-5-25\)仿照AtCoderRaceRanking(WTF)机制,设立了“昆虫科学院AtCoderRaceRanking2023”。该排行榜为\(2023\sim2024\)赛季的第二轮排行。校内参赛选手(按照学号排序)AtCoder用户名学号......