世界视点!AtCoder Beginner Contest 284(A~F)

A - Sequence of Strings

Original Link

题目大意

输入 N个字符串,倒序输出。

思想


【资料图】

签到题。

代码

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)#define re register#define fi first#define se second#define endl "\n"typedef long long LL;typedef pair PII;typedef pair PLL;const int N = 1e6 + 3;const int INF = 0x3f3f3f3f, mod = 1e9 + 7;const double eps = 1e-6, PI = acos(-1);string s[N];void solve(){    int n; cin >> n;    for(int i = 0; i < n; i ++) cin >> s[i];    for(int i = n - 1; i >= 0; i --) cout << s[i] << endl;}int main(){    IOS;    int _ = 1;    // cin >> _;    while(_ --){        solve();    }    return 0;}

B - Multi Test Cases

Original Link

题目大意

统计一组数中的奇数个数。

思想

签到题。

代码

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)#define re register#define fi first#define se second#define endl "\n"typedef long long LL;typedef pair PII;typedef pair PLL;const int N = 1e6 + 3;const int INF = 0x3f3f3f3f, mod = 1e9 + 7;const double eps = 1e-6, PI = acos(-1);void solve(){    int n; cin >> n;    int cnt = 0;    for(int i = 0; i < n; i ++){        int x; cin >> x;        if(x % 2 != 0) cnt ++;    }    cout << cnt << endl;}int main(){    IOS;    int _ = 1;    cin >> _;    while(_ --){        solve();    }    return 0;}

C - Count Connected Components

Original Link

题目大意

给定一个无向图。求连通块数量。

思想

并查集。

代码

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)#define re register#define fi first#define se second#define endl "\n"typedef long long LL;typedef pair PII;typedef pair PLL;// const int N = 1e6 + 3;const int INF = 0x3f3f3f3f, mod = 1e9 + 7;const double eps = 1e-6, PI = acos(-1);const int N = 500;int g[N]; int n, m;int cnt = 0;int find(int u){    if(g[u] != u) g[u] = find(g[u]);    return g[u];}void solve(){    cin >> n >> m;    for(int i = 1; i <= n; i ++) g[i] = i;  //初始化    for(int i = 1; i <= m; i ++){        int a, b; cin >> a >> b;        g[find(a)] = find(b);    }    for(int i = 1; i <= n; i ++){        if(g[i] == i) cnt ++;    }    cout << cnt << endl;}int main(){    IOS;    int _ = 1;    // cin >> _;    while(_ --){        solve();    }    return 0;}

D - Happy New Year 2023

Original Link

题目大意

给定一个整数 N。保证 N=p^2q,其中 p,q 均为质数且 p\ne q。求满足条件的 p,q。

思想

算术基本定理:任何一个大于1的自然数 N,如果 N 不为质数,那么 N 可以唯一分解成有限个质数的乘积 N=p_1^{a_1}\times p_2^{a_2}\dots\times p_i^{a_k},且最多只有一个大于 \sqrt{n} 的质因子。

法一

可以选择线性筛预处理素数表,然后从小到大枚举不超过 \sqrt[3]{N} 的素数判断即可。

法二

从 i=2 开始枚举因子,当枚举到 N % i == 0 时,i 必为 N 的一个因子。则 i 不是 N 的质因子 q 就是平方因子 q。当 (N / i) % i == 0 时,说明 i 为平方因子 q,否则为质因子 p。

代码

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)#define re register#define fi first#define se second#define endl "\n"typedef long long LL;typedef pair PII;typedef pair PLL;const int N = 1e6 + 3;const int INF = 0x3f3f3f3f, mod = 1e9 + 7;const double eps = 1e-6, PI = acos(-1);void solve(){    LL x; cin >> x;    for(LL i = 2; i < x ; i ++){        if(x % i == 0){            if((x / i) % i == 0) cout << i << " " << x / (i * i) << endl;            else cout << (LL)sqrtl(x / i) << " " << i << endl;            return ;        }    }}int main(){    IOS;    int _ = 1;    cin >> _;    while(_ --){        solve();    }    return 0;}

E - Count Simple Paths

Original Link

题目大意

给定一个 N 个顶点,M 条边的无向图。求从点 1 开始,简单路径(没有重复顶点的路径)的数量 K。答案取 min(K, 1\times 10^6)。

思想

图的深度优先遍历。遇到可走的路径,数量增加 1。超过 10^6 退出,

代码

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)#define re register#define fi first#define se second#define endl "\n"typedef long long LL;typedef pair PII;typedef pair PLL;const int N = 2e5 + 3;const int INF = 0x3f3f3f3f, mod = 1e9 + 7;const double eps = 1e-6, PI = acos(-1);vector g[N];bool vis[N];LL cnt = 0;void dfs(int u){    if(cnt > 1e6) return ;    vis[u] = 1;    cnt ++;    for(int i = 0; i < g[u].size(); i ++){        if(vis[g[u][i]]) continue;        vis[g[u][i]] = 1;        dfs(g[u][i]);        vis[g[u][i]] = 0;    }}void solve(){    int n, m; cin >> n >> m;    for(int i = 0; i < m; i ++){        int a, b; cin >> a >> b;        g[a].push_back(b);        g[b].push_back(a);    }    dfs(1);    cout << min(cnt, (LL)1000000) << endl;}int main(){    IOS;    int _ = 1;    // cin >> _;    while(_ --){        solve();    }    return 0;}

F - ABCBAC

Original Link

题目大意

已知一个长度为 N 的字符串 S 和一个整数 i(0\le i \le N)。定义运算 f_i(S) 链接的字符串如下: S 的前 i 个字符。 S 的翻转。 S 的最后 (N-i) 个字符。 若 S = "abc", i = 2,则 现给出某个字符串 S 的长度 N 和经过 f_i(S) 的结果。求原始字符串 S 和 i 的值。

思想

字符串哈希。枚举 i,判断 1 \sim i 和 i + N + 1 \sim 2\times N 拼接成的字符串与 i + 1 \sim N + i 翻转后的字符串是否相同即可。

代码

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)#define re register#define fi first#define se second#define endl "\n"typedef long long LL;typedef unsigned long long ULL;typedef pair PII;typedef pair PLL;// const int N = 1e6 + 3;// const int INF = 0x3f3f3f3f, mod = 1e9 + 7;const double eps = 1e-6, PI = acos(-1);const ULL N = 2e6 + 9;const int hash_cnt = 2; //哈希次数int n;string s;ULL Prime[] = {1998585857ul,23333333333ul};ULL base[] = {131, 146527, 19260817, 91815541}; // 字符集大小,进制数ULL mod[] = {1000000007, 29123,998244353,1000000009,4294967291ull}; // 模数ULL h1[N][hash_cnt], h2[N][hash_cnt], p[N][hash_cnt];//初始化哈希void initHash(ULL n, ULL cnt){    p[0][cnt] = 1;    for(int i = 1; i <= n; ++ i) p[i][cnt] = p[i - 1][cnt] * base[cnt] % mod[cnt];    for(int i = 1; i <= n; ++ i) h1[i][cnt] = (h1[i - 1][cnt] * base[cnt] % mod[cnt] + s[i]) % mod[cnt]; // 正序hash    for(int i = n; i >= 1; -- i) h2[i][cnt] = (h2[i + 1][cnt] * base[cnt] % mod[cnt] + s[i]) % mod[cnt]; // 逆序hash}//正序HASHULL getHash1(ULL id, ULL l, ULL r){    return (h1[r][id] - h1[l - 1][id] * p[r - l + 1][id] % mod[id] + mod[id]) % mod[id];}//逆序HASHULL getHash2(ULL id, ULL l, ULL r){    return (h2[l][id] - h2[r + 1][id] * p[r - l + 1][id] % mod[id] + mod[id]) % mod[id];}//判断区间正逆序是否相等,如果区间正逆序哈希值一样,则回文;bool isRe(ULL id, ULL l,ULL r){    return getHash1(id, l, r) == getHash2(id, l, r);}void solve(){    cin >> n >> s;    s = " " + s;    initHash(2 * n, 0);    for(int i = 0; i <= n; i ++ ){        ULL sum1 = ((getHash1(0, 1, i) * p[n - i][0] % mod[0] + getHash1(0, n + i + 1, 2 * n)) % mod[0]);        ULL sum2 = getHash2(0, i + 1, n + i);        if(sum1 == sum2){            string st = s.substr(i + 1, n);            reverse(st.begin(), st.end());            cout << st << endl;            cout << i << endl;            return;        }    }    cout << -1 << endl;}int main(){    IOS;    int _ = 1;    // cin >> _;    while(_ --){        solve();    }    return 0;}

标签: 编程算法

最近更新

世界视点!AtCoder Beginner Contest 284(A~F)
2023-02-21 01:14:51
【独家焦点】离岸人民币是什么意思_离岸人民币释义
2023-02-20 21:49:40
【热闻】郑氏点银:黄金反弹只是修正,不改变短期回调下行
2023-02-20 19:11:22
环球要闻:按观点看可见加仓后应持股看涨
2023-02-20 16:47:46
全球今头条!遗憾 歌词_遗憾歌词
2023-02-20 14:54:02
全球时讯:怎么通过键盘快速复制粘贴_怎么通过键盘快速复制粘贴文件
2023-02-20 12:50:03
全球短讯!一品红:子公司获得托拉塞米注射液注册证书
2023-02-20 11:01:23
环球快资讯丨恩威医药(301331)2月17日主力资金净买入474.33万元
2023-02-20 09:10:08
世界百事通!ky是什么意思饭圈_ky粉是什么意思
2023-02-20 06:44:28
环球热文:美国历史重大事件_美国历史
2023-02-20 01:45:05
今日热议:港媒:港大禁止学生使用ChatGPT等AI工具并以“抄袭”论处,为全港大学首例
2023-02-19 21:46:57
速递![AI绘画鉴赏]赛博朋克 Part III
2023-02-19 18:01:14
【世界速看料】正面硬刚大众ID.4系列,日产艾睿雅补贴6万元是否值得出手?
2023-02-19 14:50:54
世界快看点丨国内车迷再一次看红了眼?马自达CX-90刚走,CX-80又来了!
2023-02-19 12:04:58
每日时讯!yy群是什么_yy群
2023-02-19 09:55:52
环球热头条丨循环小数的概念教学_循环小数的概念
2023-02-19 06:08:38
前沿热点:照片大小怎么改到2mb_照片大小怎么改到2m
2023-02-19 01:19:44
全球热文:公分是厘米吗_厘米是不是国际单位
2023-02-18 21:14:51
世界视讯!02月18日15时辽宁朝阳疫情数据 阳了以后为什么会腰疼?应该怎么办?
2023-02-18 18:03:37
精彩看点:翔鹰帝国论坛吧_翔鹰帝国论坛
2023-02-18 15:52:20
当前信息:永恒之塔天族包裹怎么扩充_永恒之塔天族背包任务
2023-02-18 12:54:25
天天热点评!强思政之基,筑国防之魂!湛江机电学校开学第一课开讲啦!
2023-02-18 09:51:27
【天天聚看点】俄方要求美公布“北溪”天然气管道爆炸相关信息
2023-02-18 07:37:32
天天快消息!卫生间尺寸及布局图_卫生间尺寸及布局
2023-02-18 03:10:38
天天短讯!长春市举办第三届地质行业地层实测剖面绘图竞赛
2023-02-17 23:01:03
环球热消息:象屿股份旗下象道物流与天池能源首趟“疆煤外运”保供专列开通
2023-02-17 20:51:10
环球视讯!重庆两江新区中医院揭牌 礼嘉新院区今年6月动工
2023-02-17 18:11:14
世界热资讯!国外多项研究聚焦新冠重复感染 或将增加患严重疾病风险
2023-02-17 16:46:13
每日短讯:日本秋田庆祝传统冰雪节 雪洞被蜡烛照亮
2023-02-17 13:02:39
天天滚动:招商基金雷敏:FOF投资主要靠选资产和选人,长久期带来更从容的配置策略
2023-02-17 10:51:02