「ABC 193A」Discount

Link.

略。

#include<cstdio>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%.2f\n",(1.0-(double)b/(double)a)*100.0);
return 0;
}

「ABC 193B」Play Snuke

Link.

排序。

#include<cstdio>
#include<algorithm>
using namespace std;
struct node
{
int tim,pay,ps;
}nodes[100010];
bool cmp(node one,node ano)
{
return one.pay<ano.pay;
}
int ans=-1;
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d %d %d",&nodes[i].tim,&nodes[i].pay,&nodes[i].ps);
sort(nodes+1,nodes+n+1,cmp);
for(int i=1;i<=n;++i)
{
if(((int)((double)nodes[i].tim-0.5)+1)<nodes[i].ps)
{
ans=nodes[i].pay;
break;
}
}
printf("%d\n",ans);
return 0;
}

「ABC 193C」Unexpressed

Link.

可以容斥,也可以暴力枚举 std::set 去重。

#include<set>
#include<iostream>
#define int long long
using namespace std;
set<int> app;
signed main()
{
int n,ians=0;
cin>>n;
for(int i=2;i*i<=n;++i)
{
for(int j=i*i;j<=n;j*=i)
{
if(!app.count(j))
{
++ians;
app.insert(j);
}
}
}
cout<<n-ians;
return 0;
}

「ABC 193D」Poker

Link.

开个答案+单位贡献的结构体,然后模拟。

#include<iostream>
#include<iomanip>
using namespace std;
#define int long long
#define ID(c) ((c)-'0')
int k,num[20];
char s[20],t[20];
struct node
{
int iths[20],sum,c[20];
int spow(int fur)
{
int res=1;
for(int i=1;i<=fur;++i) res*=10;
return res;
}
void getscor(char x[])
{
for(int i=1;i<=4;++i) ++c[ID(x[i])];
for(int i=1;i<=9;++i)
{
iths[i]=i*spow(c[i]);
sum+=iths[i];
}
}
void Op(int pos,int delta)
{
c[pos]+=delta;
sum-=iths[pos];
if(~delta) iths[pos]*=10;
else iths[pos]/=10;
sum+=iths[pos];
}
}tak,aok;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>k>>(s+1)>>(t+1);
for(int i=1;i<=9;++i) num[i]=k;
for(int i=1;i<=4;++i) --num[ID(s[i])],--num[ID(t[i])];
tak.getscor(s);
aok.getscor(t);
int winans=0,allans=0;
for(int i=1;i<=9;++i)
{
for(int j=1;j<=9;++j)
{
tak.Op(i,1);
aok.Op(j,1);
if(tak.sum>aok.sum)
{
if(i^j) winans+=num[i]*num[j];
else winans+=num[i]*(num[j]-1);
}
tak.Op(i,-1);
aok.Op(j,-1);
}
}
for(int i=1;i<=9;++i)
{
for(int j=1;j<=9;++j)
{
if(i^j) allans+=num[i]*num[j];
else allans+=num[i]*(num[j]-1);
}
}
cout<<fixed<<setprecision(6)<<(double)winans/(double)allans<<endl;
return 0;
}

「ABC 193E」Oversleeping

Link.

开始想到计算几何去了,打了很久。

实际上因为 \(500\) 的范围,你可以直接枚举余数然后 exCRT 合并。

#include<cstdio>
#include<climits>
#include<algorithm>
using namespace std;
typedef long long LL;
const LL INF=LONG_LONG_MAX;
namespace NumbTheo
{
LL ftimes(LL bas,LL fur,LL mod)
{
LL res=0;
while(fur)
{
if(fur&1) res=(res+bas)%mod;
bas=(bas+bas)%mod,fur>>=1;
}
return res;
}
LL exGCD(LL one,LL ano,LL &x,LL &y)
{
if(ano==0) return (x=1,y=0,one);
else
{
LL tmp=exGCD(ano,one%ano,y,x);
y-=(one/ano)*x;
return tmp;
}
}
LL exCRT(LL n,LL one[],LL ano[])
{
LL x,y,res=one[1],M=ano[1];
for(int i=2;i<=n;++i)
{
LL a=M,b=ano[i],c=(one[i]-res%b+b)%b,tmp=exGCD(a,b,x,y),d=b/tmp;
if(c%tmp) return -1;
x=ftimes(x,c/tmp,d);
res+=x*M,M*=d,res=(res%M+M)%M;
}
return (res%M+M)%M;
}
};
int t;
LL one[10],ano[10],ans;
int main()
{
scanf("%d",&t);
while(t--)
{
LL X,Y,P,Q;
scanf("%lld %lld %lld %lld",&X,&Y,&P,&Q);
ans=INF;
for(LL i=X;i<X+Y;++i)
{
for(int j=P;j<P+Q;++j)
{
using namespace NumbTheo;
one[1]=i,ano[1]=((X+Y)<<1),one[2]=j,ano[2]=P+Q;
LL tmp=exCRT(2,one,ano);
if(~tmp) ans=min(ans,tmp);
}
}
if(ans==INF) printf("infinity\n");
else printf("%lld\n",ans);
}
return 0;
}

「ABC 193F」Zebraness

Link.

把 \(i+j\) 为奇数的地方反转一下,然后连边求最小割。

#include<queue>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;
#define getID(x,y) (((x)-1)*n+(y))
namespace MaxFlow
{
queue<int> q;
const LL INF=1e9;
int S,T,head[10010],Cur[10010],cntot=1,all,vis[10010];
LL dep[10010];
struct Edge
{
int to,nxt;
LL c;
Edge(int A=0,int B=0,LL C=0){to=A,nxt=B,c=C;}
}as[500010];
bool bfs()
{
for(int i=1;i<=all;++i) vis[i]=0,dep[i]=INF;
q.push(S),dep[S]=0,vis[S]=1;
while(!q.empty())
{
int now=q.front();
q.pop(),vis[now]=0;
for(int i=head[now];i;i=as[i].nxt)
{
int y=as[i].to;
LL c=as[i].c;
if(c&&dep[y]>dep[now]+1)
{
dep[y]=dep[now]+1;
if(!vis[y]) q.push(y),vis[y]=1;
}
}
}
return dep[T]<INF;
}
LL dfs(int x,LL lav)
{
if(x==T) return lav;
LL used=0;
vis[x]=1;
for(int &i=Cur[x];i;i=as[i].nxt)
{
int y=as[i].to;
LL c=as[i].c;
if(c&&dep[y]==dep[x]+1&&!vis[y])
{
LL tmp=dfs(y,min(lav-used,c));
as[i].c-=tmp,as[i^1].c+=tmp,used+=tmp;
if(lav==used) break;
}
}
if(used<lav) dep[x]=INF;
vis[x]=0;
return used;
}
LL Dinic()
{
LL res=0;
while(bfs())
{
for(int i=1;i<=all;++i) vis[i]=0,Cur[i]=head[i];
res+=dfs(S,INF);
}
return res;
}
}using namespace MaxFlow;
int n;
int rop()
{
char res=getchar();
while((res^'B')&&(res^'W')&&(res^'?')) res=getchar();
if(res=='?') return -1;
else if(res=='B') return 1;
else return 0;
}
void addEdge(int one,int ano,int lav)
{
as[++cntot]=Edge(ano,head[one],lav);
head[one]=cntot;
as[++cntot]=Edge(one,head[ano],0);
head[ano]=cntot;
}
int main()
{
scanf("%d",&n),all=n*n;
S=(++all),T=(++all);
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
int x=rop();
if(~x)
{
if((i+j)&1) x^=1;
if(x) addEdge(S,getID(i,j),INF);
else addEdge(getID(i,j),T,INF);
}
}
}
for(int i=1;i<n;++i)
{
for(int j=1;j<=n;++j) addEdge(getID(i,j),getID(i+1,j),1),addEdge(getID(i+1,j),getID(i,j),1);
}
for(int i=1;i<=n;++i)
{
for(int j=1;j<n;++j) addEdge(getID(i,j),getID(i,j+1),1),addEdge(getID(i,j+1),getID(i,j),1);
}
printf("%lld\n",2*n*(n-1)-Dinic());
return 0;
}

Solution Set -「ABC 193」的更多相关文章

  1. Solution Set -「ABC 217」

      大家好屑兔子又来啦! [A - Lexicographic Order]   说个笑话,\(\color{black}{\text{W}}\color{red}{\text{alkingDead} ...

  2. Diary / Solution Set -「WC 2022」线上冬眠做噩梦

      大概只有比较有意思又不过分超出能力范围的题叭.   可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics   任意一个 ...

  3. Solution Set -「ARC 107」

    「ARC 107A」Simple Math   Link.   答案为: \[\frac{a(a+1)\cdot b(b+1)\cdot c(c+1)}{8} \] 「ARC 107B」Quadrup ...

  4. Solution -「ABC 219H」Candles

    \(\mathcal{Description}\)   Link.   有 \(n\) 支蜡烛,第 \(i\) 支的坐标为 \(x_i\),初始长度为 \(a_i\),每单位时间燃烧变短 \(1\) ...

  5. Solution -「ABC 215H」Cabbage Master

    \(\mathcal{Description}\)   Link.   有 \(n\) 种颜色的,第 \(i\) 种有 \(a_i\) 个,任意两球互不相同.还有 \(m\) 个盒子,每个盒子可以被放 ...

  6. Solution -「ABC 213G」Connectivity 2

    \(\mathcal{Description}\)   Link.   给定简单无向图 \(G=(V,E)\),点的编号从 \(1\) 到 \(|V|=n\).对于 \(k=2..n\),求 \(H= ...

  7. Solution -「ABC 213H」Stroll

    \(\mathcal{Description}\)   Link.   给定一个含 \(n\) 个结点 \(m\) 条边的简单无向图,每条边的边权是一个常数项为 \(0\) 的 \(T\) 次多项式, ...

  8. Solution -「ABC 217」题解

    D - Cutting Woods 记录每一个切割点,每次求前驱后驱就好了,注意简单判断一下开闭区间. 考场上采用的 FHQ_Treap 无脑莽. #include <cstdio> #i ...

  9. 「ABC 249Ex」Dye Color

    考虑停时定理. 初始势能为 \(\sum \Phi(cnt_i)\),末势能为 \(\Phi(n)\),我们希望构造这样一个 \(\Phi:Z\to Z\) 函数,使得每一次操作期望势能变化量为常数. ...

  10. Note -「Lagrange 插值」学习笔记

    目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...

随机推荐

  1. 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中

    2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数. 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中 ...

  2. 用CSS实现带动画效果的单选框

    预览一下效果:http://39.105.101.122/myhtml/CSS/singlebox2/singleRadio.html 布局结构为: 1 <div class="rad ...

  3. Java 访问控制权限修饰符

    1.访问控制权限修饰符来控制元素的访问范围 2.访问控制权限修饰符包括: public 表示公开的,任何位置都可以可以访问 protected 同包,子类 缺省 同包 private 表示私有的,只能 ...

  4. 自然语言处理 Paddle NLP - 任务式对话系统-理论

    什么是任务型对话: 任务型:用于帮助用户完成某领域的特定任务,例如订餐.查天气.订票等 闲聊型:也称作开放域对话系统,目标是让用户持续的参与到交互过程,提供情感陪伴 问答型:提供知识满足,具体类型比较 ...

  5. 如何将mp4文件解复用并且解码为单独的.yuv图像序列以及.pcm音频采样数据?

    一.初始化解复用器 在音视频的解复用的过程中,有一个非常重要的结构体AVFormatContext,即输入文件的上下文句柄结构,代表当前打开的输入文件或流.我们可以将输入文件的路径以及AVFormat ...

  6. 在VS Code 中调试远程服务器的PHP代码

    背景 对于PHP的调试,一般来说我们用 echo 和 var_dump 就够用了. 有时会碰到要解决复杂的逻辑或需要确认代码的运行顺序,这里用var_dump效率就比较低了,这时建议用断点的方式进行代 ...

  7. python学习笔记:第九章异常

    1.1 异常是什么 python使用异常对象来表示异常状态,并在遇到错误时引发异常.异常对象未被处理,程序将终止并显示一条错误信息. 我们可以通过各种方法引发和捕获错误,并采取对应措施. 1.2 将& ...

  8. 【调制解调】PM 调相

    说明 学习数字信号处理算法时整理的学习笔记.同系列文章目录可见 <DSP 学习之路>目录,代码已上传到 Github - ModulationAndDemodulation.本篇介绍 PM ...

  9. Java服务刚启动时,一小波接口超时排查全过程

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明. 简介 我们组有一个流量较大的Java服务,每次发代码时,服务都会有一小波接口超时,之前简单分析过,发现这些超时的 ...

  10. ITIL4与Devops(一)

    目录 一.服务管理与ITIL 1.1 服务管理现状 1.2 服务管理原则 1.3 ITIL版本发展历程 ITIL2 服务支持 服务交付 服务战略 ITIL3 框架 职能 ITIL 2011 流程的基本 ...