================================================================================
确定是否有办法将编号为 1 到 N 的 N 人并排排成一行,以满足以下格式中的所有 M 个条件。条件: A i A_i Ai和 B i B_i Bi是相邻的。
#include<bits/stdc++.h>
#include<atcoder/all>
#define fi first
#define se second
#define eb emplace_back
using namespace std;
using namespace atcoder;
using ll = long long;
int main() {
int N, M; cin >> N >> M;
vector cnt(N);
dsu d(N); //并查集
for (int i = 0; i < M; ++i) {
int a, b; cin >> a >> b; --a; --b;
++cnt[a];
++cnt[b];
if (cnt[a] > 2 || cnt[b] > 2 || d.same(a, b)) {
cout << “No” << endl;
return 0;
}
d.merge(a, b);
}
cout << “Yes” << endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,m,tot=0,qwq=0;
int f[1000005];
int pre[1000005];//并查集
int Find(int x){
if(pre[x]!=x) pre[x]=Find(pre[x]);
return pre[x];
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) pre[i]=i;//初始化
for(int i=1,x,y;i<=m;i++){
scanf(“%d%d”,&x,&y);
int fx=Find(x),fy=Find(y);
if(fx==fy) return printf(“No”),0;
pre[fx]=fy;
f[x]++,f[y]++;
}
for(int i=1;i<=n;i++){
if(f[i]>2) return printf(“No”),0;
}
printf(“Yes”);
return 0;
}
=======================================================================================
仅使用这些硬币支付价值 X 日元的产品时,用于付款并作为找零退回的硬币的最少总数是多少?
准确地说,当 Y 是至少为 X 的整数时,求精确表示 Y 日元所需的硬币数量和精确表示 Y-X 日元所需的硬币数量的最小总和。
#include “bits/stdc++.h”
using namespace std;
typedef long long ll;
int n;
vector a;
map<pair<ll,int>,ll> mp;
ll solve(ll x, int k) {
if (mp.find({x,k}) != mp.end()) return mp[{x,k}];
cerr << x << " " << k << endl;
if (k == n-1) return mp[{x,k}] = x;
ll b = a[k+1]/a[k];
return mp[{x,k}] = min(solve(x/b,k+1)+x%b,solve(x/b+1,k+1)+b-x%b);
}
int main() {
ll x;cin >> n >> x;
a.resize(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cout << solve(x,0) << endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll inf = 1e18 + 10;
const int maxl = 105;
ll x;
ll c[maxl], n, a[maxl], d[maxl];
ll f[maxl][2];
int main() {
cin >> n >> x;
for (int i = n; i >= 1; i–) {
cin >> a[i];
}
for (int i = 1; i <= n; i++) {
d[i] = x / a[i];
x %= a[i];
}
for (int i = 1; i <= n; i++) {
if (i == 1) {
f[i][0] = d[i];
f[i][1] = d[i] + 1;
} else {
ll k = a[i-1] / a[i];
f[i][0] = d[i] + f[i-1][0];
f[i][0] = min(f[i][0], k - d[i] + f[i-1][1]);
f[i][1] = d[i] + 1 + f[i-1][0];
f[i][1] = min(f[i][1], k - d[i] - 1 + f[i-1][1]);
}
}
cout << f[n][0] << endl;
return 0;
}
==================================================================================
Snuke 计划给高桥和青木各送一件礼物。
礼物有 N 个候选人。 高桥对第 i 个候选人的印象是 A i A_i Ai ,青木对第 i 个候选人的印象是 B i B_i Bi
两人非常嫉妒。 如果高桥对青木收到的礼物的印象大于高桥对高桥收到的礼物的印象,高桥就会嫉妒青木并开始打架,反之亦然。
在 N 2 N^2 N2 种可能的送礼方式中,有多少不会导致战斗?
#include<bits/stdc++.h>
#define SZ 200005
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
int tree[SZ];
void add(int pos, int val) {
++pos;
while (pos < SZ) {
tree[pos] += val;
pos += (pos&-pos);
}
}
int sum(int pos) {
++pos;
int ret = 0;
while (pos > 0) {
ret += tree[pos];
pos &= (pos-1);
}
return ret;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin >> N;
vector v(N);
for (auto& e : v) {
cin >> e.first;
}
vector coor;
for (auto& e : v) {
int x;
cin >> x;
e.second = x;
coor.push_back(x);
}
sort(coor.begin(),coor.end());
for (auto& e : v) {
e.second = coor.begin()-lower_bound(coor.begin(), coor.end(), e.second);
}
sort(v.begin(), v.end());
long long ans = N;
int prev = -100;
int prevx = -100;
int accu = 1;
for (auto& e : v) {
int a = e.first;
int x = -e.second;
if (a == prev && x == prevx) {
ans += sum(SZ-1)-sum(x-1) + accu;
accu++;
} else {
accu = 1;
ans += sum(SZ-1)-sum(x-1);
}
add(x,1);
prev = a;
prevx = x;
}
cout << ans << ‘\n’;
return 0;
}
=====================================================================================
#include <bits/stdc++.h>
using namespace std;
const long long MOD=998244353;
long long dp[1001];
long long f(long long x, long long n){
if(n==0) return 1LL;
if(n&1) return x*f(x,n-1)%MOD;
long long h=f(x,n/2);
return h*h%MOD;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
总结
阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了
1、JAVA面试核心知识整理(PDF):包含JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。
2、Redis学习笔记及学习思维脑图
3、数据面试必备20题+数据库性能优化的21个最佳实践
ptr);
int n;
总结
阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了
[外链图片转存中…(img-Rsq4FcnI-1721129086057)]
1、JAVA面试核心知识整理(PDF):包含JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。
[外链图片转存中…(img-e5c3w0mz-1721129086058)]
2、Redis学习笔记及学习思维脑图
[外链图片转存中…(img-c7JtZUYa-1721129086058)]
3、数据面试必备20题+数据库性能优化的21个最佳实践
[外链图片转存中…(img-qOJyFJhZ-1721129086058)]