/img/dodola.png

一只小菜鸡的Blog

Codeforces Round 933(div3)

A-Rudolf and the Ticket

左边口袋有一些面值为$b_1,b_2,b_3,…,b_n$的硬币,右边有一些面值为$c_1,c_2,c_3,…,c_m$的硬币,问有多少个$(f,s)$可以使得$b_f+c_s\le k$成立

$t(1≤t≤100)$

$n,m(1≤n,m≤100)$

$k(1\le k\le 2000)$

$b_i,c_i(1\le b_i,c_i\le 1000)$

双层循环遍历

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
void solve() {
    ll n, m, k;cin >> n >> m >> k;
    vector<ll>b(n), c(m);
    for (ll i = 0; i < n; i++) cin >> b[i];
    for (ll i = 0; i < m; i++) cin >> c[i];
    ll ans = 0;
    sort(b.begin(), b.end());
    sort(c.begin(), c.end());
    for (ll i = 0;i < n;i++) {
        for (ll j = 0;j < m;j++) {
            if (b[i] + c[j] <= k) {
                ans++;
            }
            else { break; }
        }
    }
    cout<<ans<<endl;
}

B-Rudolf and 121

可以对一个数组执行如下操作:

一个Vue项目的基础模板||PC端+移动端适配

1
2
3
4
npm create vite@latest dodola -- --template vue-ts
cd dodola
npm install
npm run dev

转到根目录下后

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
├── dist/
└── src/
    ├── api
    │   └── ... // 抽取出API请求
    ├── assets/                    // 静态资源目录
    ├── common/                    // 通用类库目录
    ├── components/                // 公共组件目录
    ├── routers/                   // 路由配置目录
    ├── store/                     // pinia 状态管理目录
        ├── index.ts               // 导出 store 的地方
        ├── home.ts                // 模块
        └── user.ts                // 模块
    ├── style/                     // 通用 CSS 目录
    ├── utils/                     // 工具函数目录
    ├── views/                     // 页面组件目录
    ├── App.vue
    ├── main.ts
    ├── vite-env.d.ts
├── index.html
├── tsconfig.json                  // TypeScript 配置文件
├── vite.config.ts                 // Vite 配置文件
└── package.json

vite.config.ts中,设置@指向src、服务器启动端口、打包路径、代理等等设置

Educational Codeforces Round 162(div2)

A-Moving Chips

每个单元格为空闲或有一个芯片,芯片可以向左移动到最近的空闲处(如果存在空闲格)。

现在有一排单元格,求问进行多少次移动,才能使得所有芯片集中在一起(中间没有空格)。

$t(1≤t≤1000)$

$n(2≤n≤50)$​

$a_i(a_i∈{1,0})$

统计数组中第一个1和最后一个1之间的0的数目。

Codeforces Round 929(div3)

A-Turtle Puzzle: Rearrange and Negate

对一个数组执行两个操作:

  1. 对数组进行重新排序或保持元素顺序不变
  2. 选择连续的一段,对该段中的元素取相反数,也可以不选择任何一段,即保持所有的元素符号不变。

求进行上述操作之后数组的最大和是多少。

Codeforces Round 927(div3)

A-Thorns and Coins

长度为$n$的单元格路径,每个单元格有空、有金币、荆棘三种可能,人物从最左边开始向右移动,每次步长不多于2格,求能获得的最多金币数。

$t(1≤t≤1000)$

$n(1≤n≤50)$​

.代表空,*代表荆棘,@代表金币

从左往右,寻找第一个含有2个以上**连通块,其前的金币都可以达到。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
void solve() {
    int n;cin >> n;
    string s;cin >> s;
    int cnt = 0;
    bool f = true;
    for (int i = 0;i < n;i++) {
        if (s[i] == '@')cnt++;
        if (i > 0 && s[i] == '*' && s[i - 1] == '*'){
            break;
        }
    }
    cout << cnt << '\n';
}

B-Chaya Calendar

查亚部落相信世界末日有$n$个征兆,第$i$个征兆每隔$a_i$年出现一次,当观测到第$i-1$个征兆后才会等待第$i$个征兆。给出每个征兆的出现间隔,询问观测到所有$n$个征兆所需要的年数。

2024牛客寒假营6||补题

在$[l,r]$中寻找某个恰好是三个不同素数的乘积的数,并输出任意一个合法答案即可。

$1\leq l\leq r \leq 100$

数据小,模拟即可

 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
void solve() {
    vector<bool>isprime(101, true);    // 判断素数
    isprime[0] = isprime[1] = false;
    for (int i = 2;i <= 100;i++) {
        if (isprime[i]) {
            for (int j = i + i;j <= 100;j += i) {
                isprime[j] = false;
            }
        }
    }

    int l, r;
    cin >> l >> r;
    for (int i = 2;i <= r;i++) {
        for (int j = 2;j <= r;j++) {
            for (int k = 2;k <= r;k++) {
                if (isprime[i] && isprime[j] && isprime[k] && i != j && j != k && i != k) {
                    if (i * j * k >= l && i * j * k <= r) {
                        cout << i * j * k;return;
                    }
                }
            }
        }
    }
    cout << -1;
}

定义两个等长数组的亲密值:$|a_i-b_i|(1\leq i\leq n)$的最小值。给定2个数组,可以任意排列$a$数组的元素顺序,输出一个亲密度最小的方案(数组$a$的操作结果)。