A.直接暴力就行了,先把能组合的按线性组合掉,再枚举剩下相邻没用过的。

#include<bits/stdc++.h>
using namespace std; string s;
int vis[] = {}; int main()
{
ios::sync_with_stdio(false);
cin >> s;
int ans = ;
for(int i = ;i < s.length();i++)
{
if(vis[i-] || vis[i]) continue;
if(s[i-] == 'V' && s[i] == 'K')
{
ans++;
vis[i-] = ;
vis[i] = ;
}
}
for(int i = ;i < s.length();i++)
{
if(vis[i-] || vis[i]) continue;
if(s[i-] == 'V' || s[i] == 'K')
{
ans++;
break;
}
}
cout << ans << endl;
return ;
}

B.若存在,直接令y等于z就可以了。

#include<bits/stdc++.h>
using namespace std; string s1,s2; int main()
{
ios::sync_with_stdio(false);
cin >> s1 >> s2;
string s3;
int flag = ;
for(int
i = ;i < s1.length();i++)
{
if(s2[i] <= s1[i]) s3 = s3+s2[i];
else
{
flag = ;
}
}
if(flag) cout << -<< endl;
else cout << s3 << endl; return ;
}

C.二分,先判断是否能永久运行,若不行,二分答案。

#include<bits/stdc++.h>
using namespace std; int n,p,a[],b[]; bool ok(double x)
{
double sum = ;
for(int i = ;i <= n;i++)
{
if(a[i]*x > b[i]) sum += a[i]*x-b[i];
}
if(sum < p*x) return ;
return ;
}
int main()
{
ios::sync_with_stdio(false);
cin >> n >> p;
long long sum = ;
for(int i = ;i <= n;i++)
{
cin >> a[i] >> b[i];
sum += a[i];
}
if(sum <= p)
{
cout << - << endl;
return ;
}
double l = ,r = 1e18;
while(abs(l-r) > 1e-)
{
double mid = (l+r)/;
if(ok(mid)) l = mid;
else r = mid;
}
cout << l << endl;
return ;
}

D.枚举每一组相邻3个顶点,取中间点到两边点构成直线的距离的最小值,再除以2。

#include<bits/stdc++.h>
using namespace std; int n;
double a[],b[]; double f(double x1,double y1,double x2,double y2,double x3,double y3)
{
double aa = y2-y1,bb = x1-x2,cc = x2*y1-x1*y2;
return abs(aa*x3+bb*y3+cc)/sqrt(aa*aa+bb*bb);
}
int main()
{
ios::sync_with_stdio(false);
cin >> n;
for(int i = ;i <= n;i++) cin >> a[i] >> b[i];
double ans = 1e18;
for(int i = ;i <= n;i++)
{
int j = i+,k = j+;
if(j > n) j -= n;
if(k > n) k -= n;
ans = min(ans,f(a[i],b[i],a[j],b[j],a[k],b[k]));
ans = min(ans,f(a[i],b[i],a[k],b[k],a[j],b[j]));
ans = min(ans,f(a[j],b[j],a[k],b[k],a[i],b[i]));
}
cout << fixed << setprecision() << ans/ << endl;
return ;
}

E.令p[i]为第i次出现的前i个元素积(%m),问题是如何构造最长的p序列。

设元素i,j,则①i可以向j转移的条件是gcd(m, i)丨gcd(m, j)

      ②i,j可以互相转移的条件是gcd(m, i)=gcd(m, j)

于是,我们把每一个gcd看成点,同一个gcd间的元素可以相互转化,然后构成图,dfs找最长路线。

有了p序列,pi-1*x%p==pi(P0=1),求解每一个x输出即可,这个可以用扩展欧几里德解决。

0这个点可以放到最后特殊处理。

#include<bits/stdc++.h>
#define LL long long
using namespace std; int n,m,cantbe[] = {},vis[] = {},dp[],nextt[];
vector<int> v[]; LL ex_gcd(LL a,LL b,LL &x,LL &y)
{
int d = a;
if(!b)
{
x = ;
y = ;
}
else
{
d = ex_gcd(b,a%b,y,x);
y -= (a/b)*x;
}
return d;
} LL f(LL a,LL b,LL n)
{
LL d,x,y;
d = ex_gcd(a,n,x,y);
x = (x%n+n)%n;
return (x*b/d)%n;
} int dfs(int now)
{
if(dp[now] > ) return dp[now];
dp[now] = v[now].size();
for(int i = now*;i < m;i += now)
{
if(v[i].size() == ) continue;
int t = dfs(i);
if(dp[now] < v[now].size()+t)
{
dp[now] = t+v[now].size();
nextt[now] = i;
}
}
return dp[now];
} int main()
{
ios::sync_with_stdio(false);
cin >> n >> m;
for(int i = ;i <= n;i++)
{
int x;
cin >> x;
cantbe[x] = ;
}
for(int i = ;i < m;i++)
{
if(!cantbe[i]) v[__gcd(i,m)].push_back(i);
}
memset(dp,,sizeof(dp));
memset(nextt,-,sizeof(nextt));
dfs();
int now = max_element(dp,dp+m)-dp;
cout << dp[now]+(cantbe[] == ) << endl;
int last = ;
while(now != -)
{
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i];
cout << f(last,t,m) << " ";
last = t;
}
now = nextt[now];
}
if(cantbe[] == ) cout << << endl;
else cout << endl;
return ;
}

Codeforces_801的更多相关文章

随机推荐

  1. 怎样使我们的用户不再抵触填写Form表单?

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/8-tips-for-an-awesome-sign ...

  2. bootstrap:按钮下拉菜单

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  3. 基于Jenkins的持续交付全流程设计与实践

    1 从理论开始 什么是DevOps? 近年来,随着DevOps理念的逐渐深入人心,企业逐渐意识到从看似重复的手工劳动中实现自动化流程处理,对于提高企业劳动生产力已经非常重要,尤其是面向互联网的开发者, ...

  4. ArcEngine 数据编辑(IWorkspaceFactory)

    数据编辑做过很多次,没怎么出现问题,今天出现了问题,浪费了大半天,记录一下. 问题:修改Featrue的属性,修改后停止编辑,但是没有提示是否保存修改 原因:在编辑数据的时候没有加StartEditO ...

  5. python递归(函数)

    递归:一个过程或函数调用自身的一种方法. 1. 效果图 2. 代码 def factorial(n): ''' 该函数用来求任意数的阶乘 参数: n 要求阶乘的数字 ''' # 基线条件 判断n是否为 ...

  6. const和volitale

    1. const只读变量 const修饰的变量是只读的,本质还是变量 const修饰的局部变量在栈上分配空间(可以通过指针修改) const修饰的全局变量在全局数据区分配空间(指针也修改不了) con ...

  7. 使用rabbitmq手动确认消息的,定时获取队列消息实现

    描述问题 最近项目中因为有些数据,需要推送到第三方系统中,因为数据会一直增加,并且需要与第三方系统做相关交互. 相关业务 本着不影响线上运行效率的思想,我们将增加的消息放入rabbitmq,使用另一个 ...

  8. echarts 使用时,常见配置

    1.隐藏x轴,y轴,网格线 "yAxis": [ { //就是一月份这个显示为一个线段,而不是数轴那种一个点点 "show" : true, "bou ...

  9. margin和 padding 以及 float :left和float :right的介绍

    1.margin和padding的介绍 margin是外边距,padding是内边距,用CSS时首先要做的就是把所有标签的margin和padding清空.这样更容易控制布局和兼容浏览器. p li等 ...

  10. 不止开源,不止跨平台。微软的 .NET Core 还有哪些强大之处值得我们学习?

    自从 2016 年微软发布了 .NET Core 1.0,至今 4 年的时间里,.NET Core 历经 7 个正式版本和几十个 Preview 版本..NET Core 作为最通用的框架,和其他软件 ...