[20151014]SCZ训练

T1:

给出一个数列 an ,求 n1n1aixoraj

Solution :
数一数每一个位子上1的个数即可

Code:

/*************************************************************************
    > File Name: alien.cpp
    > Author: Archer
 ************************************************************************/

#include <bits/stdc++.h>
#include <ext/pb_ds/priority_queue.hpp>
using namespace std;

typedef long long ll;
const int N = 1111111;
int n, a[N], cnt[2];
ll ans, p;
inline void setIO(){
    freopen("alien.in", "r", stdin);
    freopen("alien.out", "w", stdout);
}
inline int read(){
    int x = 0, f = 1; char ch = getchar();
    while (!isdigit(ch)) {if (ch == '-') f = -1; ch = getchar();}
    while (isdigit(ch)) {x = x * 10 + ch - '0'; ch = getchar(); }
    return x * f;
}

int main(){
    setIO();

    n = read();
    for (int i = 1; i <= n; i++) a[i] = read();
    sort(a + 1, a + 1 + n);

    ans = 0ll; p = 1ll;
    while (a[n] > 0){
        cnt[0] = 0; cnt[1] = 0;
        for (int i = 1; i <= n; i++)
            cnt[a[i] & 1]++, a[i] >>= 1;
        ans += 1ll * cnt[0] * cnt[1] * p;
        p <<= 1;
    }
    printf("%I64d\n", ans);

    return 0;
}

T2:

给出一些直线 yi=kix+bi ,抹去在x轴下方的部分,令 s(x)=n1yi ,求s的图像上有几个不为180的角

Solution:
直线叠加还是直线。
按零点排序即可。

Code:

/*************************************************************************
    > File Name: polyline.cpp
    > Author: Archer
 ************************************************************************/

#include <bits/stdc++.h>
#include <ext/pb_ds/priority_queue.hpp>
using namespace std;

typedef long long ll;
const int N = 111111;
struct L{ int k, b; } line[N];
int n, cnt;
ll sk;

#define WORK\
    if (line[cur].k < 0) sk -= line[cur].k * 1ll;\
    else sk += line[cur].k * 1ll;\
    cur++;\

inline void setIO(){
    freopen("polyline.in", "r", stdin);
    freopen("polyline.out", "w", stdout);
}
inline int read(){
    int x = 0, f = 1; char ch = getchar();
    while (!isdigit(ch)) {if (ch == '-') f = -1; ch = getchar(); }
    while (isdigit(ch)) {x = x * 10 + ch - '0'; ch = getchar(); }
    return x * f;
}
bool cmp(L l1, L l2){ 
    ll p = 1ll * l1.b * l2.k - 1ll * l2.b * l1.k;
    ll q = 1ll * l1.k * l2.k;
    if (q > 0) return p > 0;
    else return p < 0;
}

int main(){
    setIO();

    n = read(); cnt = 0; sk = 0;
    for (int i = 1; i <= n; i++){
        int t1 = read(), t2 = read();
        if (t1 == 0) continue;
        line[++cnt].k = t1; line[cnt].b = t2;
        if (line[cnt].k < 0) sk += line[cnt].k * 1ll;
    }

    sort(line + 1, line + 1 + cnt, cmp);
    int cur = 1, ans = 0;
    while (cur <= cnt){
        ll last = sk;
        WORK
        while (cur <= cnt && 1ll* line[cur].k * line[cur - 1].b - 1ll * line[cur].b * line[cur - 1].k == 0){
            WORK
        }
        if (sk != last) ans++;
    }
    printf("%d\n", ans);
    return 0;
}

T3:

搅屎题,没什么好说的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值