网站建设 作用,cdn资源访问出现问题怎么办,河北建筑网站,类似微分销的平台题解#xff1a;ABC320C - Slot Strategy 2 (Easy)
题目
链接#xff1a;Atcoder。
链接#xff1a;洛谷。
难度
算法难度#xff1a;C。
思维难度#xff1a;C。
调码难度#xff1a;B。
综合评价#xff1a;普及-。
算法
枚举模拟。
思路
先遍历最后每个转…题解ABC320C - Slot Strategy 2 (Easy)
·题目
链接Atcoder。
链接洛谷。
·难度
算法难度C。
思维难度C。
调码难度B。
综合评价普及-。
·算法
枚举模拟。
·思路
先遍历最后每个转盘上的数如果这个数记作i分别在a、b、c中出现过就说明最后有可能是这个数。接下来遍历每一秒按照优先级优先级高的如果还没有停止转动并且现在停止显示数字正好为i就停止他否则看下一个优先级次高的。优先级直接复制粘贴6个循环。
·代价
O(m)其他的遍历全是常数只有对于每种情况答案的遍历最坏情况下为3m。
·细节
求答案的循环里判断出口用“三个转盘是否都停止了”来判断。
·代码
#includebits/stdc.h
using namespace std;
string a,b,c;
int m0;
bool x[10]{},y[10]{},z[10]{};
int main(){scanf(%d,m);cinabc;for(int i0;im;i){x[a[i]-0]true;y[b[i]-0]true;z[c[i]-0]true;}//输入并记录每个数在相应转盘上是否出现int tans130;for(int i0;i10;i){if(x[i]truey[i]truez[i]true){//都出现过有可能作为最后答案int ans0;bool ffalse,gfalse,hfalse;//ans本次所用时间f、g、h分别记录每个转盘是否已经停止ans0;ffalse,gfalse,hfalse;for(int j0;ffalse||gfalse||hfalse;j){//遍历每一秒if(a[j%m]i0ffalse){ftrue;//最高优先级先判断}else if(b[j%m]i0gfalse){gtrue;//次高}else if(c[j%m]i0hfalse){htrue;//最低}ansj;//更新答案}tansmin(tans,ans);//答案取最优值后同理ans0;ffalse,gfalse,hfalse;for(int j0;ffalse||gfalse||hfalse;j){if(a[j%m]i0ffalse){ftrue;}else if(c[j%m]i0hfalse){htrue;}else if(b[j%m]i0gfalse){gtrue;}ansj;}tansmin(tans,ans);ans0;ffalse,gfalse,hfalse;for(int j0;ffalse||gfalse||hfalse;j){if(c[j%m]i0hfalse){htrue;}else if(a[j%m]i0ffalse){ftrue;}else if(b[j%m]i0gfalse){gtrue;}ansj;}tansmin(tans,ans);ans0;ffalse,gfalse,hfalse;for(int j0;ffalse||gfalse||hfalse;j){if(c[j%m]i0hfalse){htrue;}else if(b[j%m]i0gfalse){gtrue;}else if(a[j%m]i0ffalse){ftrue;}ansj;}tansmin(tans,ans);ans0;ffalse,gfalse,hfalse;for(int j0;ffalse||gfalse||hfalse;j){if(b[j%m]i0gfalse){gtrue;}else if(a[j%m]i0ffalse){ftrue;}else if(c[j%m]i0hfalse){htrue;}ansj;}tansmin(tans,ans);ans0;ffalse,gfalse,hfalse;for(int j0;ffalse||gfalse||hfalse;j){if(b[j%m]i0gfalse){gtrue;}else if(c[j%m]i0hfalse){htrue;}else if(a[j%m]i0ffalse){ftrue;}ansj;}tansmin(tans,ans);}}if(tans130){tans-1;}//特判没有答案的情况printf(%d\n,tans);return 0;
}
·注意
循环内部要用if{}else if{}else{}否则会出现一秒停多个转盘的情况。