题目链接

Problem A. Drill Wood to Make Fire

S * V >= n即可

#include<bits/stdc++.h>

#define int long long
#define endl '\n' using namespace std; const int N = 2010,mod = 1e9 + 7;
int n,s,v; void solve() {
cin >> n >> s >> v;
if(s * v >= n)
cout << 1 << endl;
else cout << 0 << endl;
} int32_t main() {
ios::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
int h_h = 1;
cin >> h_h;
while(h_h--)solve();
return 0;
}

Problem B. Wonderful Array

发现 = 的个数就是看有多少 ai mod m = 0,< 的个数不好求,那么就考 虑求 > 的个数。 先将所有 ai 对 m 取模,不会影响答案。因为 0 ⩽ bi+1 − bi < m

      bi mod m > bi+1 mod m ⇐⇒ ⌊bi/m⌋ < ⌊bi+1/m⌋

整体考虑的话就会发现,> 的个数就是 ⌊ bn / m ⌋

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define inf 0x3f3f3f3f using namespace std;
const int N = 2e3 + 10; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<int, int > mp;
int n,m,t,k;
priority_queue <int,vector<int>,greater<int> > Q;
void solve()
{
cin >> k;
vector<int> a(k);
for(int i = 0;i < k;i++)
cin >> a[i];
int x;
cin >> n >> m >> x;
for(int i = 0;i < k;i++)
a[i] %= m;
int sum = x % m;
int num = 0;
for(int i = 0;i < k;i++)
num += a[i];
sum += n / k * num;
for(int i = 0;i < n % k;i++)
sum += a[i];
cout << n - sum / m << endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
int Ke_scholar = 1;
//cin >> Ke_scholar;
while(Ke_scholar--)
solve();
return 0;
} /* */

Problem I. Tree

我们对每个点直接维护答案,发现对于操作 1,路径上两个端点之外的点 答案不变。因此操作 1 直接对两个端点异或上这个数,操作 2 直接输出 即可。

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 1e6+10, mod = 1e9 + 7; //typedef long long ll;
typedef pair<int,int> PII;
int n,m,t,k;
map<int,int> mp;
priority_queue<int> QQ;
deque<int> Q;
void solve() {
cin >> n >> m;
vector<PII> a[n + 1];
vector<int> sum(n + 1,0);
for(int i = 1;i < n;i++){
int x,y,z;
cin >> x >> y >> z;
a[x].push_back({y,z});
a[y].push_back({x,z});
}
for(int i = 1;i <= n;i++){
for(auto j : a[i])
sum[i] ^= j.second;
}
while(m--){
int op;
cin >> op;
if(op == 1){
int x,y,z;
cin >> x >> y >> z;
sum[x] ^= z;
sum[y] ^= z;
}
else{
int x;
cin >> x;
cout << sum[x] << endl;
}
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int Ke_scholar = 1;
//cin >> Ke_scholar;
while(Ke_scholar--)
solve();
return 0;
}
/* */

Problem J. Function

给出一个正整数 n(1 ⩽ n ⩽ 105 ) 和 n 个二次项系数为 1 的二次函数,第 i 个函数形如 y = (x − i) 2 + bi(1 ⩽ bi ⩽ n)

然后给出一个正整数 m(1 ⩽ m ⩽ 105 ),表示操作总数。

操作共有两种,第一种是添加一个二次项系数为 1 的二次函数,形如 y = (x − a) 2 + b(1 ⩽ a, b ⩽ n)。第二种是询问所有二次函数在 x = a(1 ⩽ a ⩽ n) 处的最小函数值

。 具体的,每次操作会先给出操作的类型,如果是 0 表示是第一种操作,如 果是 1 表示是第二种操作。对于第一种操作,会再给出两个正整数 a, b。 对于第二种操作,则会再给出一个正整数 a。

查询 x = a 时函数的最小值,容易发现可能为最小值的函数只可能在左右 根号的范围内。 那么只要在左右根号的范围内枚举所有函数,找出最优的即可。

#include  <map>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long
#define LB long double using namespace std; const int N = 1000000000, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<char, int > mp;
//priority_queue <LB,vector<LB>,less<LB> > Q;
int n,m,t,k;
/* */
string s;
void solve()
{
cin >> n;
vector<int> b(n + 1);
for(int i = 1;i <= n;i++)
cin >> b[i];
int sn = sqrt(n);
int q;
cin >> q;
while(q--){
int op;
cin >> op;
if(op){
int x;
cin >> x;
int res = LONG_LONG_MAX;
for(int i = x - sn; i <= sn + x + 1;i ++){
if(i >= 0 && i < n && b[i])
res = min(res, (i - x) * ( i - x) + b[i]);
}
cout << res << endl;
}
else{
int x,y;
cin >> x >> y;
if(b[x])
b[x] = min(y, b[x]);
else
b[x] = y;
}
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
int Ke_scholar = 1;
// cin >> Ke_scholar ;
while(Ke_scholar--)
solve();
return 0;
}

Problem K. Split

实际上就是先对n个数的差进行预处理,排序后求一个前缀和,操作0时对于这个差值是不会产生任何改变的,操作1时给一个整数k,则n - k - 1的前缀和.

#include<bits/stdc++.h>
using namespace std; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr),cout.tie(nullptr);
int n;
cin >> n;
vector<int> a(n);
for(int i = 0;i < n;i ++)
cin >> a[i];
int q;
vector<int> ve;
for(int i = 1;i < n;i ++){
int x = abs(a[i] - a[i - 1]);
ve.push_back(x);
}
sort(ve.begin(),ve.end());
map<int,int> mp;
for(int i = 0;i < ve.size();i++){
if(i == 0)
mp[i] = ve[i];
else
mp[i] = ve[i] + mp[i - 1];
}
cin >> q;
while(q--){
int op;
cin >> op;
if(!op){
int x;
cin >> x;
a[x - 1] = a[x] + a[x - 2] - a[x - 1];
}
else{
int k;
cin >> k;
cout << mp[n - k - 1] << endl;
}
}
return 0;
}
/* */

Problem L. Zhang Fei Threading Needles - Thick with Fine

输出n - 1即可

#include  <map>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 1e9 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<char, int > mp;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/* */
string s;
vector<PII> a,ans;
void solve()
{
cin >> n;
cout << n - 1 << endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int Ke_scholar = 1;
//cin >> Ke_scholar ;
while(Ke_scholar--)
solve();
return 0;
}

SMU Spring 2023 Contest Round 5(2023 (ICPC) Jiangxi Provincial Contest -- Official Contest)的更多相关文章

  1. HYNB Round 8: 2016 ICPC Amritapuri Regionals

    HYNB Round 8: 2016 ICPC Amritapuri Regionals A - Tim and BSTs 做法 经典的树 DP 问题. \(dp[u][i]\) 表示考虑以 u 为根 ...

  2. Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest

    Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest(dp+线段树) 题目链接 题意: 给定3个人互不相同的多个数字,可以 ...

  3. The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - L Doki Doki Literature Club

    Doki Doki Literature Club Time Limit: 1 Second      Memory Limit: 65536 KB Doki Doki Literature Club ...

  4. 2018浙江省赛(ACM) The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple

    我是铁牌选手 这次比赛非常得爆炸,可以说体验极差,是这辈子自己最脑残的事情之一. 天时,地利,人和一样没有,而且自己早早地就想好了甩锅的套路. 按理说不开K就不会这么惨了啊,而且自己也是毒,不知道段错 ...

  5. zoj The 12th Zhejiang Provincial Collegiate Programming Contest Capture the Flag

    http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5503 The 12th Zhejiang Provincial ...

  6. zoj The 12th Zhejiang Provincial Collegiate Programming Contest Team Formation

    http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5494 The 12th Zhejiang Provincial ...

  7. zoj The 12th Zhejiang Provincial Collegiate Programming Contest Beauty of Array

    http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5496 The 12th Zhejiang Provincial ...

  8. zoj The 12th Zhejiang Provincial Collegiate Programming Contest Lunch Time

    http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5499 The 12th Zhejiang Provincial ...

  9. zoj The 12th Zhejiang Provincial Collegiate Programming Contest Convert QWERTY to Dvorak

    http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5502  The 12th Zhejiang Provincial ...

  10. zoj The 12th Zhejiang Provincial Collegiate Programming Contest May Day Holiday

    http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5500 The 12th Zhejiang Provincial ...

随机推荐

  1. Unity 编辑器中获取选中的文件夹、文件路径

    编辑器中获取选中的文件夹.文件路径 using UnityEditor; using UnityEngine; using Object = UnityEngine.Object; public cl ...

  2. Linux开机启动三种方式

    有的时候,我们开机启动一些命令或者是一段脚本,又或者是开机启动自定义的服务. 下面归纳了2种实现的方式. 方式1-开机启动命令 vim /etc/rc.local #添加你想执行的命令 chmod + ...

  3. STM32 CubeMX 学习:06-配置DMA

    --- title: mcu-stm32-cube-06-配置DMA date: 2020-05-31 16:39:05 categories: tags: - stm32 - cubeMx - dm ...

  4. C++ 史上首次超越 C,Python 第二!

    TIOBE 公布了 2024 年 6 月的编程语言排行榜--C++ 史上首次超越 C,跃至榜二,仅次于 Python. C++ 是一种广泛应用于嵌入式系统.游戏开发和金融交易软件等领域的语言,在本月成 ...

  5. PaddleNLP UIE -- 药品说明书信息抽取(名称、规格、用法、用量)

    目录 创建项目 环境配置 上传代码 训练定制 代码结构 数据标注 准备语料库 数据标注 导出数据 数据转换 doccano Label Studio 模型微调 模型评估 定制模型--预测 效果 Pad ...

  6. 基于 .net core 8.0 的 swagger 文档优化分享-根据命名空间分组显示

    前言 公司项目是是微服务项目,网关是手撸的一个.net core webapi 项目,使用 refit 封装了 20+ 服务 SDK,在网关中进行统一调用和聚合等处理,以及给前端提供 swagger ...

  7. .Net Core 访问 appsettings.json

    1.添加 NuGet 包 Microsoft.Extensions.Configuration 2.通过注入获取 Configuration 注意:注入获取的必须提前在 StartUp 里面提前注册 ...

  8. OpenWrt中的LuCi和Lua一些总结

    Lua.LuCi Lua是一种小巧的脚本语言,和Python一样,Lua脚本的运行需要Lua解释器: UCI(Unified Configuration Interface)是OpenWrt实现所有系 ...

  9. 2. 标签上 title 与 alt 属性的区别是什么?

    1. alt 是给搜索引擎识别,在图像无法显示时的替代文本2. title 是关于元素的注释信息,主要是给用户解读.3.当鼠标放到文字或是图片上时有 title 文字显示.(因为 IE 不标准)在 I ...

  10. CRC 循环冗余效验

    CRC循环冗余效验 利用多项式 x6 + x4 + x3,实际为使用模2除法来做的加密 常用crc多项式有 名称 生成多项式 数值式 简记式 标准引用 CRC-4 x4+x+1 0x1'3 0x3 I ...