前言
这场状态绝对不对劲,rk倒1没啥可说的。
A. A-Mazing Puzzle
这题绝对能做!等我抽空回来补!(不挂在这的话,说不定就摆烂了)
J. Simple Solitaire
题意
英语阅读理解。自己读去。解法也不写了,纯暴力模拟。
认罪认罚具结书
好像是第一次当战犯吧。大约3个半小时的时候,我自告奋勇做这个题,然后读错题意反复WA on 3,后来队友来帮忙,由于题太难读,我直接告诉了他错误的题意,于是我俩一起坐牢直到比赛结束……
不说了,直接上代码。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N = 105;
const ll P = 998244353;
string s;
struct node{
char u, v;
}p[N];
int tp;
int main(){
for(int i = 1; i <= 52; i++){
cin >> s;
tp++;
p[tp].u = s[0];
p[tp].v = s[1];
int j = tp;
while(j >= 4){
while(j >= 4){
if(p[j].u == p[j - 3].u){
for(int k = j - 3; k <= tp - 4; k++){
p[k] = p[k + 4];
}
tp -= 4;
j = tp;
continue;
}
j--;
}
j = tp;
while(j >= 4){
if(p[j].v == p[j - 3].v){
p[j - 3] = p[j - 2];
p[j - 2] = p[j - 1];
for(int k = j - 1; k <= tp - 2; k++){
p[k] = p[k + 2];
}
tp -= 2;
j = tp;
break;
}
j--;
}
}
}
cout << tp;
for(int i = 1; i <= tp; i++){
cout << " " << p[i].u << p[i].v;
}
return 0;
}
L. Which Warehouse?
题意
给定n个仓库,每两个仓库都直接相连(但是,假设有两个仓库s和t,从s直接到t的路程,不一定等于从t到s的路程)。有m种产品,每个仓库都存放了一定数量的每种产品。如果从仓库s到t的路程是k,那么把n个产品从u转移到v的花费就是n*k。现在要把每一种产品都全部转移到某一个仓库,两种产品聚集到的仓库不能相同。换句话说,聚集之后应该有m个仓库各有一种产品,其他仓库全是空的。问最小花费。
解法
如果了解过二分图最大权完美匹配,那这题几乎就是个裸板。首先跑最短路预处理出所有的把某一种产品聚集到某一个点的最小花费。然后跑一次KM即可,左侧为仓库,右侧为产品种类,两点相连意为当前仓库用来聚集当前产品。注意到KM算法要求两侧点数相等,所以要在右侧补上n-m个点,这些点和左侧每个点的边权都为0,表示左侧这n-m个仓库不用来聚集任何产品。
代码
目前还不是很理解KM,只能当个黑盒子来用……
反复WA on 15中,红温了,敬请期待
标签:include,Central,题意,仓库,tp,int,2022,America
From: https://www.cnblogs.com/qjsswz/p/18392415