头像

乌云里有星星吗




离线:2个月前


最近来访(1)
用户头像
Coinisi.

活动打卡代码 AcWing 4455. 出行计划

//这里填你的代码^^
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <map>
#include <cmath>
#include <cstring>
#include <unordered_map>
#include <unordered_set>

// #pragma GCC optimize(2)
// #pragma GCC optimize(3)
#define IOS std::ios::sync_with_stdio(false)
#define inf 0x3f3f3f3f
#define YES cout << "YES" << endl
#define NO cout << "NO" << endl
#define int long long
#define x first
#define y second
#define cmp [&](PII a, PII b){return a.y < b.y;}

const int N = 5e5+10, mod = 1e9+7, M = 5e7+5, K = 2e5+10, Z = 1e5+7, X = 3e5+3;

using namespace std;
typedef long long LL;
typedef priority_queue<int> PQI;
typedef priority_queue <int, vector<int>, greater<>> PQGI;
typedef pair<int, int> PII;

int s[K];

void solve()
{
    int n, m, k; cin >> n >> m >> k;
    for(int i = 1; i <= n; i ++)
    {
        int t, c; cin >> t >> c;
        int r = max(0LL, t - k), l = max(0LL, t - k - c + 1);
        s[l] ++, s[r + 1] --;
    }

    for (int i = 1; i < (K - 10); i ++) s[i] += s[i - 1];

    while( m -- )
    {
        int q; cin >> q;
        cout << s[q] << endl;
    }
    return;
}

signed main()
{
    IOS; int T = 1;
    cin.tie(nullptr); 
    cout.tie(nullptr);
    // cin >> T;
    while( T -- ) solve();
    return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4700. 何以包邮?

//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4699. 如此编码

//这里填你的代码^^
6666
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4509. 归一化处理

//这里填你的代码^^
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;

const int N = 1007;

int a[N];
double d;

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    // cout << d[0] << endl;
    int n, sum = 0; cin >> n;
    for(int i = 1; i <= n; i ++)
    {
        cin >> a[i];
        sum = sum + a[i];
    }

    double av = (double)sum / (double)n;
    // printf("%.14lf", av);
    // for(int i = 1; i <= n; i ++)
    // {
    //     d[i] = (n * d[i - 1] + pow(a[i] - av, 2)) * (1.0 / (double)n);
    // }

    for(int i = 1; i <= n; i ++)
        d = d + pow(a[i] - av, 2);
    d = d * (1 / (double)n), d = sqrt(d);
    // printf("%.14lf", d);
    for(int i = 1; i <= n; i ++)
        printf("%.16lf\n", ((double)a[i] - av) / d);

}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4454. 未初始化警告

//这里填你的代码^^
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <unordered_map>
#include <unordered_set>

#define IOS std::ios::sync_with_stdio(false)
#define inf 0x3f3f3f3f
#define YES cout << "YES" << endl
#define yes cout << "yes" << endl
#define no cout << "no" << endl
#define NO cout << "NO" << endl
#define int long long
#define x first
#define y second
//#define cmp [&](PII a, PII b){ return a.y < b.y; }

const int N = 5e5+10, mod = 1e9+7, M = 1e6+5, K = 1e5+10, Z = 2e5+7;

using namespace std;
typedef long long LL;
typedef priority_queue<int> PQI; 
typedef priority_queue <int, vector<int>, greater<>> PQGI;
typedef pair<int, int> PII;

int a[K], res;

void solve()
{
    int n, m; cin >> n >> m;

    for(int i = 1; i <= m; i ++)
    {
        int x, y; cin >> x >> y;
        if(!a[y] && y != 0) res ++;
        a[x] ++;
    }

    cout << res << endl;
}

signed main()
{
    IOS; int T = 1;
//    cin >> T;
    while( T -- ) solve();
    return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4656. 技能升级

//这里填你的代码^^
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <unordered_map>
#include <unordered_set>

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#define IOS std::ios::sync_with_stdio(false)
#define inf 0x3f3f3f3f
#define YES cout << "YES" << endl
#define NO cout << "NO" << endl
#define int long long
#define x first
#define y second
//#define cmp [&](PII a, PII b){ return a.y < b.y; }

const int N = 5e5+10, mod = 1e9+7, M = 1e6+5, K = 1e5+10, Z = 2e5+7;

using namespace std;
typedef long long LL;
typedef priority_queue<int> PQI;
typedef priority_queue <int, vector<int>, greater<>> PQGI;
typedef pair<int, int> PII;

int n, m;
int l, r = 1e6;
int mid, now, cnt, ans;
int a[K], b[K];

int sum (int r, int n, int t)
{
    int l = r - t * (n - 1);
    return (l + r) * n >> 1;
}

bool check (int x)
{
    long long res = 0;
    for (int i = 1; i <= n; i ++)
        if (a[i] > x)
            res += ceil ((double) (a[i] - x) / b[i]);
    if(res <= m) return true;
    else return false;
}

void solve()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i ++) cin >> a[i] >> b[i];

    while (l < r)
    {
        mid = (l + r) >> 1;
        if (check (mid)) r = mid;
        else l = mid + 1;
    }

    for (int i = 1; i <= n; i ++)
        if (a[i] > l)
        {
            now = ceil ((double) (a[i] - l) / b[i]), cnt += now;
            ans += sum (a[i], now, b[i]);
        }

    cout << ans + l * (m - cnt);
    return;
}

// 优先队列暴力算法,在时间范围内只能通过40%的样例。能全过的算法还要使用已发布题解的那些大佬的二分算法优化,其他的依旧使用优先队列的暴力就可以。
// priority_queue<PII> s;
// int sum = 0;

// void solve()
// {
//  int n, m; cin >> n >> m;
//  for(int i = 1; i <= n; i ++)
//  {
//      int a, b; cin >> a >> b;
//      s.push({a, b});
//  }
//  for(int i = 1; i <= m; i ++)
//  {
//      sum = sum + s.top().x;
//      int h1 = s.top().x - s.top().y, h2 = s.top().y;
//      s.pop(); s.push({h1, h2});
//  }
//  cout << sum << endl;
// }

signed main()
{
    IOS; int T = 1;
//    cin >> T;
    while( T -- ) solve();
    return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4644. 求和

#include <iostream>
#define N 200005
using namespace std;

int n, a[N];
long long sum, ans;

int main ()
{
    cin >> n;
    for (int i = 1; i <= n; i ++)
    {
        cin >> a[i], sum += a[i]; // 输入每个数,预处理总和
    }
    for (int i = 1; i <= n; i ++)
    {
        ans += a[i] * (sum - a[i]); // 将答案累计上 a[i] * (sum - a[i])
    }
    cout << ans / 2; // 最后答案要除以 2
    return 0;



活动打卡代码 AcWing 4645. 选数异或

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e6 + 7;
typedef long long ll;
const int mod = 1e9 + 9;
int n , m , x;
int a[maxn] , b[maxn];
int sum[maxn] , res1[maxn], res2[maxn] , pr[maxn];
struct node{
    int l , r , id;
}num[maxn];
bool cmp(node a,node b){
    return a.r < b.r;
}
void update(int pos , int val , int l,int r,int rt){
    if(l == r){
        sum[rt] += val;
        return ;
    }
    int mid = (l + r) / 2;
    if(pos <= mid) update(pos , val , l , mid , rt << 1 );
    if(pos > mid) update(pos , val , mid + 1 , r , rt << 1 | 1);
    sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];

}
int query(int L, int R,int l,int r,int rt){
    int ans = 0;
    if(L <= l && R >= r){
        return sum[rt];
    }
    int mid = (l + r) / 2;
    if(L <= mid) ans += query(L , R , l , mid , rt << 1);
    if(R > mid) ans += query(L , R , mid + 1 , r , rt << 1 | 1);
    return ans;
}
int main(){
    scanf("%d%d%d",&n , &m , &x);
    for(int i = 1; i <= n; i ++){
        scanf("%d",&a[i]);
        b[i] = a[i] ^ x;
    }
    for(int i = 1; i <= m; i ++){
        scanf("%d%d",&num[i].l,&num[i].r);
        num[i].id = i;
    }
    sort(num + 1,num + m + 1 , cmp);
    int now = 1;
    for(int i = 1; i <= m; i ++){
        for(int j = now; j <= num[i].r; j ++){
            if(res1[a[j]]){
                update(res1[a[j]] , 1 , 1 , n , 1);
            }
            if(res2[b[j]]){
                update(res2[b[j]] , 1 , 1 , n , 1);
            }
            res2[a[j]] = j;
            res1[b[j]] = j;
        }
        now = num[i].r + 1;
        pr[num[i].id] = query(num[i].l , num[i].r , 1 , n , 1);
    }
    for(int i = 1; i <= m; i ++){
        if(pr[i]) printf ("yes\n");
        else printf ("no\n");
    }
    return 0;
}

作者:yxc的小迷妹
链接:https://www.acwing.com/solution/content/158009/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4653. 数位排序

//这里填你的代码^^
#include<iostream>
#include <map>
#include <vector>
using namespace std;
int n, m;
map<int, vector<int>> Dic;
int fun(int a){
    int res = 0;
    while (a){
        res += a % 10;
        a /= 10;
    }
    return res;
}
int main(){
    cin >> n >> m;
    for (int i = 1; i <= n; ++i){
        int t = fun(i);
        if (Dic.find(t) == Dic.end())
            Dic.insert(pair<int, vector<int>>(t, vector<int>(0)));
        Dic.at(t).push_back(i);
    }
    for (const auto &i: Dic){
        if (m > i.second.size())    m -= i.second.size();
        else{
            cout << i.second.at(m - 1);
            break;
        }
    }
    return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 4655. 重新排序

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 5;
int n;
ll a[N];
int num[N] = {0};
ll sum[N] = {0};
int main(){
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        sum[i] = sum[i-1] + a[i];
    }
    int m;
    cin >> m;
    ll sum1 = 0;
    int left, right;
    for (int i = 0; i < m; i++) {
        cin >> left >> right;
        sum1 += sum[right] - sum[left-1];
        num[left]++;
        num[right + 1]--;
    }
    for (int i = 1; i <= n; i++)    num[i] += num[i-1];
    sort(a + 1, a + n + 1);
    sort(num + 1, num + n + 1);
    ll sum2 = 0;
    for (int i = 1; i <= n; i++)    sum2 += a[i] * num[i];
    cout << sum2 - sum1 << endl;
    return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~