AtCoder ABC198

本期F为群论题,很有难度。

C - Compass Walking

为了避免精度问题,采用二分推算。但是要小心结果为1的地方。
R 2 ∗ k 2 ≥ x 2 + y 2 R^2*k^2\geq x^2+y^2 R2k2x2+y2

# -*- coding: utf-8 -*-
# @time     : 2023/6/2 13:30
# @file     : atcoder.py
# @software : PyCharmimport bisect
import copy
import sys
from itertools import permutations
from sortedcontainers import SortedList
from collections import defaultdict, Counter, deque
from functools import lru_cache, cmp_to_key
import heapq
import math
sys.setrecursionlimit(100010)def main():items = sys.version.split()fp = open("in.txt") if items[0] == "3.10.6" else sys.stdinr, x, y = map(int, fp.readline().split())d = x ** 2 + y ** 2r = r ** 2# r^2 * k^2 >= d^2  (first k)lo, hi = 0, 100000001while lo < hi:mi = (lo + hi) >> 1if mi ** 2 * r >= d:hi = mielse:lo = mi + 1if hi == 1:if r != d:hi = 2print(hi)if __name__ == "__main__":main()

D - Send More Money

还不错的搜索题,硬做就好了。
一开始思路不好,半小时写了个搜索WA,
因为没有想到答案应该有long long类型。

#define _CRT_SECURE_NO_WARNINGS#include <iostream>
#include <string>
#include <cstring>
#include <climits>
#include <cstdlib>
#include <map>
#include <cmath>
#include <set>
#include <vector>
#include <queue>
#include <unordered_map>
#include <algorithm>
#define LT(x) (x * 2)
#define RT(x) (x * 2 + 1)using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
const ll inf = ll(1e15);
const ld pi = 3.1415926535897932384626;string sa, sb, sc;
int na, nb, nc, n;
bool vis[10];
int dig[256];
set<char> ss;
bool ac;
int ansa, ansb, ansc;void gene() {if (dig[sa[sa.size() - 1]] == 0 || dig[sb[sb.size() - 1]] == 0 || dig[sc[sc.size() - 1]] == 0){ac = 0;return;}for (int i = 0; i < sa.size(); ++ i) {char c = sa[sa.size() - 1 - i];ansa = ansa * 10 + dig[c];}for (int i = 0; i < sb.size(); ++ i) {char c = sb[sb.size() - 1 - i];ansb = ansb * 10 + dig[c];}for (int i = 0; i < sc.size(); ++ i) {char c = sc[sc.size() - 1 - i];ansc = ansc * 10 + dig[c];}
}void dfs(int pos, int row, int c) {if (pos == n) {if (c == 0) {ac = 1;gene();}return;}if (ac)return;if (row == 0) {int da = pos < na ? dig[sa[pos]] : 0;if (da == -1) {for (int i = 0; i < 10; ++i) {if (!vis[i]) {vis[i] = 1;dig[sa[pos]] = i;dfs(pos, row + 1, c + i);dig[sa[pos]] = -1;vis[i] = 0;}}}else {dfs(pos, row + 1, c + da);}}else if (row == 1) {int db = pos < nb ? dig[sb[pos]] : 0;if (db == -1) {for (int i = 0; i < 10; ++i) {if (!vis[i]) {vis[i] = 1;dig[sb[pos]] = i;dfs(pos, row + 1, c + i);dig[sb[pos]] = -1;vis[i] = 0;}}}else {dfs(pos, row + 1, c + db);}}else {int dc = pos < nc ? dig[sc[pos]] : 0;if (dc == -1) {int next_c = c / 10;dc = c % 10;if (!vis[dc]) {dig[sc[pos]] = dc;vis[dc] = 1;dfs(pos + 1, 0, next_c);vis[dc] = 0;dig[sc[pos]] = -1;}}else {int tc = c % 10, next_c = c / 10;if (tc == dc) {dfs(pos + 1, 0, next_c);}}}
}int main() {//freopen("in.txt", "r", stdin);cin >> sa >> sb >> sc;sa = string(sa.rbegin(), sa.rend());sb = string(sb.rbegin(), sb.rend());sc = string(sc.rbegin(), sc.rend());na = sa.length(), nb = sb.length(), nc = sc.length();n = max(max(na, nb), nc);memset(dig, 0xff, sizeof(dig));for (char x : sa)ss.insert(x);for (char x : sb)ss.insert(x);for (char x : sc)ss.insert(x);if (ss.size() > 10) {printf("UNSOLVABLE\n");return 0;}dfs(0, 0, 0);if (!ac) {printf("UNSOLVABLE\n");}else {printf("%d\n%d\n%d\n", ansa, ansb, ansc);}return 0;
}

后来看了题解,发现有简便的permutation做法。
p数组是每个字母代表的数字。

#define _CRT_SECURE_NO_WARNINGS#include <iostream>
#include <string>
#include <cstring>
#include <climits>
#include <cstdlib>
#include <map>
#include <cmath>
#include <set>
#include <vector>
#include <queue>
#include <unordered_map>
#include <algorithm>
#define LT(x) (x * 2)
#define RT(x) (x * 2 + 1)using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
const ll inf = ll(1e15);
const ld pi = 3.1415926535897932384626;string sa, sb, sc;
set<char> ss;int main() {//freopen("in.txt", "r", stdin);cin >> sa >> sb >> sc;for (char x : sa)ss.insert(x);for (char x : sb)ss.insert(x);for (char x : sc)ss.insert(x);if (ss.size() > 10) {printf("UNSOLVABLE\n");return 0;}vector<char> v(ss.begin(), ss.end());int mp[256] = { 0 };for (int i = 0; i < v.size(); ++i) {mp[v[i]] = i;}vi p;for (int i = 0; i < 10; ++i) p.push_back(i);do {bool ac = 1;ll a = 0, b = 0, c = 0;for (int i = 0; i < sa.size(); ++i) {a = a * 10 + p[mp[sa[i]]];if (i == 0 && p[mp[sa[i]]] == 0) ac = 0;}for (int i = 0; i < sb.size(); ++i) {b = b * 10 + p[mp[sb[i]]];if (i == 0 && p[mp[sb[i]]] == 0) ac = 0;}for (int i = 0; i < sc.size(); ++i) {c = c * 10 + p[mp[sc[i]]];if (i == 0 && p[mp[sc[i]]] == 0) ac = 0;}if (ac && a + b == c) {printf("%lld\n%lld\n%lld\n", a, b, c);return 0;}} while (next_permutation(p.begin(), p.end()));printf("UNSOLVABLE\n");return 0;
}

E - Unique Color

搜索
记录一个当前搜索到的颜色数量vis

#define _CRT_SECURE_NO_WARNINGS#include <iostream>
#include <string>
#include <cstring>
#include <climits>
#include <cstdlib>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <unordered_map>
#include <algorithm>
#define LT(x) (x * 2)
#define RT(x) (x * 2 + 1)using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;int n;
int a[100020];
vi g[100020];
int vis[100020];
int ans = 0;
vi ansl;void dfs(int u, int fa) {if (vis[a[u]] == 0) {ansl.push_back(u);ans++;}vis[a[u]] ++;for (int v : g[u]) {if (v == fa) continue;dfs(v, u);}vis[a[u]] --;
}int main() {//freopen("in.txt", "r", stdin);scanf("%d", &n);for (int i = 1; i <= n; ++i) {scanf("%d", &a[i]);}for (int i = 0; i < n - 1; ++i) {int u, v;scanf("%d%d", &u, &v);g[u].push_back(v);g[v].push_back(u);}dfs(1, 0);//printf("%d\n", ans);sort(ansl.begin(), ansl.end());for (int x : ansl)printf("%d\n", x);return 0;
}

F - Cube

Polya定理,暂无

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/628573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅析企业微电网能效系统建设——安科瑞赵嘉敏

一 案例介绍 随着新型电力系统进程加快&#xff0c;新能源装机占比逐步提高&#xff0c;发电侧波动性、随机性导致可靠容量降低。加之极端天气带动负荷快速增长&#xff0c;造成电力供需紧张、电网尖峰负荷屡创新高&#xff0c;对现有能源供应带来巨大挑战。 国家电投五凌电力…

【数据结构 | 直接选择排序】

直接选择排序 基本思路直接插入排序SelectSort 基本思路 直接插入排序&#xff08;StraightInsertionSort&#xff09;的基本操作是将一个记录插入到已经排好序的有序表中&#xff0c;从而得到一个新的、记录数增1的有序表。 我们可以同时从数组的头部和尾部同时进行排序工作…

UE4使用技巧

打开蓝图编辑器时不是打开一个新窗口&#xff0c;而是作为主窗口 适用于全部的打开新窗口的操作 蓝图编译时自动保存 开始游戏后立即捕获鼠标

Linux 内核被冬季风暴 “封印“

Linus Torvalds在内核邮件列表上宣布&#xff0c;由于他所在的美国俄勒冈州波特兰地区受到严重冬季风暴的影响&#xff0c;导致网络和电力中断。波特兰及其周边地区气温急降至零下 -10C&#xff0c;因此他不得不临时中断对Linux 6.8内核的合并窗口操作。 Linus于1月7日发布了Li…

PyTorch损失函数(二)

损失函数 5、nn.L1Loss nn.L1Loss是一个用于计算输入和目标之间差异的损失函数&#xff0c;它计算输入和目标之间的绝对值差异。 主要参数&#xff1a; reduction&#xff1a;计算模式&#xff0c;可以是none、sum或mean。 none&#xff1a;逐个元素计算损失&#xff0c;返…

MongoDB 启动提示错误code=killed, signal=ABRT

1.停止MongoDB sudo systemctl stop mongod 2.检查数据损坏 sudo mongod --repair --dbpath /var/lib/mongodb 3.赋权限 chown -R mongodb:mongodb /var/lib/mongodb chown mongodb:mongodb /tmp/mongodb-27017.sock 如果不赋权限&#xff0c;启动的时候则会提示 4.启动Mo…

静态路由添加404页面

静态路由添加404页面 引入404页面路由代码&#xff1a; {path: *,name: 404,component: () > import(/views/page404)}404页面样式

【架构详细解读】缓存、限流、降级和熔断、负载均衡、灾备和故障转移——

目录 架构基础 # 如何理解架构的演进&#xff1f; # 如何理解架构的服务化趋势&#xff1f; # 架构中有哪些技术点&#xff1f; 缓存 # 谈谈架构中的缓存应用&#xff1f; # 在开发中缓存具体如何实现&#xff1f; # 使用缓存的经验&#xff1f; 限流 # 什么是限流&#…

meter报OOM错误,如何解决?

根据在之前的压测过程碰到的问题&#xff0c;今天稍微总结总结&#xff0c;以后方便自己查找。 一、单台Mac进行压测时候&#xff0c;压测客户端Jmeter启动超过2000个线程&#xff0c;Jmeter报OOM错误&#xff0c;如何解决&#xff1f; 解答&#xff1a;单台Mac配置内存为8G&…

HR岗位的OKR制定案例

目标一&#xff1a;提升员工满意度 ● 关键结果一&#xff1a;90%的员工对HR的服务表示满意。 ● 关键结果二&#xff1a;实施员工满意度调查&#xff0c;每季度进行一次。 分析&#xff1a;员工满意度是组织文化和员工关系管理的重要指标。为了达到90%的员工满意度&#xff0c…

小红书青年文化洞察:新“旷野文学”兴起,用户回归人间清醒?

社交媒体的“议程设置”能够影响用户的关注焦点&#xff0c;乃至影响舆论风向&#xff0c;但是以UGC生态为主的小红书&#xff0c;受众手中的话语权影响力变大&#xff0c;用户能识别、参与&#xff0c;甚至抵抗议程设置。 用户越来越清醒&#xff0c;不再是“电视喂什么&…

MySQL的单表查询

单表查询的素材&#xff1a; 一、单表查询 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 floa…

从零学Java File

Java File 文章目录 Java File常用方法File 表示文件时File 表示目录时 常用案例1 递归显示文件夹和文件2 递归删除 概念&#xff1a;代表物理盘符中的一个文件或者文件夹。 常用方法: createNewFile()//创建一个新文件 mkdirs()//创建一个新目录 delete()//删除文件或空目录 …

在linux环境下安装lnmp

lnmp官网&#xff1a;https://lnmp.org 一&#xff1a;lnmp安装 参考&#xff1a;https://lnmp.org/install.html 1&#xff1a;下载lnmp安装包 wget https://soft.lnmp.com/lnmp/lnmp2.0.tar.gz -O lnmp2.0.tar.gz 2&#xff1a;解压lnmp安装包 tar zxf lnmp2.0.tar.gz …

01章【JAVA开发入门】

计算机基本概念 计算机组成原理 计算机组装 计算机&#xff1a;电子计算机&#xff0c;俗称电脑。是一种能够按照程序运行&#xff0c;自动、高速处理海量数据的现代化智能电子设备。由硬件和软件所组成&#xff0c;没有安装任何软件的计算机称为裸机。常见的形式有台式计算机、…

leetcode-344. 反转字符串、9. 回文数

题目1&#xff1a; 解题方法 直接用reverse()即可 代码&#xff1a; class Solution(object):def reverseString(self, s):""":type s: List[str]:rtype: None Do not return anything, modify s in-place instead."""return s.reverse()如果不…

动态规划day09(打家劫舍,树形dp)

目录 198.打家劫舍 看到题目的第一想法 看到代码随想录之后的想法 自己实现过程中遇到的困难 213.打家劫舍II 看到题目的第一想法 看到代码随想录之后的想法 自己实现过程中遇到的困难 337.打家劫舍 III(树形dp) 看到题目的第一想法 看到代码随想录之后的想法 自己实…

PLC绝对定位指令DDRVA往复运动(三菱FX系列简单状态机编程)

有关状态机的具体介绍,专栏有很多文章,大家可以通过下面的链接查看: https://rxxw-control.blog.csdn.net/article/details/125488089https://rxxw-control.blog.csdn.net/article/details/125488089三菱FX系列回原功能块介绍 https://rxxw-control.blog.csdn.net/article…

【MATLAB】 HANTS滤波算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 1 基本定义 HANTS滤波算法是一种时间序列谐波分析方法&#xff0c;它综合了平滑和滤波两种方法&#xff0c;能够充分利用遥感图像存在时间性和空间性的特点&#xff0c;将其空间上的分布规律和时间上的变化规律联系起来…

代码随想录训练营第三十期|第七天|哈希表part02|454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结

454. 四数相加 II - 力扣&#xff08;LeetCode&#xff09; class Solution {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {Map<Integer, Integer> map new HashMap<>();for (int n1 : nums1) {for (int n2 : nums2) {int sum…