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. Python 超级玛丽代码实现:人物行走和碰撞检测

    功能介绍 人物行走 人物的行走速度这边分成水平方向(X轴)和竖直方向(Y轴),水平方向的速度要考虑加速度和摩擦力,竖直方向的速度要考虑重力加速度. 水平方向:设定X轴向右走的速度为大于0,向左走的速度 ...

  2. Windows和Linux下与VMware虚拟机通过内网IP通讯

    首先分两种情况:一种是你的电脑已经在一个内网的环境下且有额外的内网IP地址,和另一种只是想给自己电脑上的虚拟机分配个内网IP来通讯. ①有可用的内网IP 找到一个空闲的IP地址(这里以192.168. ...

  3. Could not find a version that satisfies the requirement numpy>=1.7.0 (from pan das==0.17.0) (from versions: ) No matching distribution found for numpy>=1.7.0 (from pandas==0.17.0)

    今天晚上一直在安装pandas,天杀的,真的是太难了.后来发现提示: Could not find a version that satisfies the requirement numpy> ...

  4. [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause报错问题的解决

    run SQL: select version(),@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','' ...

  5. 一个DNS数据包的惊险之旅

    踏上旅程 “小子,快去查一下www.paypal.com的IP地址,我急用,晚了我弄你!”,暴躁老哥一把关上了门,留我一个DNS数据包在冷冰冰的房间. 过了一会儿,一位大叔打开了门,带着我来到了一座叫 ...

  6. cogs 397. [USACO Oct09] 热浪 Dijkstra

    397. [USACO Oct09] 热浪 ★☆   输入文件:heatwvx.in   输出文件:heatwvx.out   简单对比时间限制:1 s   内存限制:128 MB 德克薩斯純樸的民眾 ...

  7. Spring-cloud微服务实战【三】:eureka注册中心(中)

      回忆一下,在上一篇文章中,我们创建了两个springboot项目,并且在consumer项目中通过restTemplate进行HTTP通信,成功访问到了producer提供的接口,思考一下这样的实 ...

  8. poj 2253 最短路 or 最小生成树

    Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sit ...

  9. Scheme实现数字电路仿真(2)——原语

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/12045295.html 作者:窗户 ...

  10. minikube 设置CPU和内存

    安装minikube之后,第一次sudo minikube start 时,设置参数--cpus int  --memory int . 如果需要更改设置,需要将缓存文件$HOME/.minikube ...