第一题直接算就行了为了追求手速忘了输出yes导致wa了一发。。。

第二题技巧题,直接sort,然后把最大的和其他的相减就是构成一条直线,为了满足条件就+1

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#define MIN(a,b) a<b ? a:b using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; ll a[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie();
ll n,sum=;
cin>>n;
for(int i=;i<n;i++)
{
cin>>a[i];
sum+=a[i];
}
sort(a,a+n);
cout<<*a[n-]-sum+<<endl;
return ;
}

B

第三题没来的及写就打另一场去了。。。发现是道dp(我估计写了也写不对)用dp[i][0]表示i到i+2能否截取,dp【i】【1】表示i到i+3能否截取

然后从后向前扫一遍

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=,inf=0x3f3f3f; bool dp[N][];
set<string>ans;
int main()
{
ios::sync_with_stdio(false);
cin.tie();
string s;
cin>>s;
for(int i=s.size()-;i>=;i--)
{
if(i+==s.size())
{
dp[i][]=;
ans.insert(s.substr(i,));
continue;
}
if(i+==s.size())
{
dp[i][]=;
ans.insert(s.substr(i,));
continue;
}
if(dp[i+][]||(dp[i+][]&&s.substr(i,)!=s.substr(i+,)))
{
dp[i][]=;
ans.insert(s.substr(i,));
}
if(dp[i+][]||(dp[i+][]&&s.substr(i,)!=s.substr(i+,)))
{
dp[i][]=;
ans.insert(s.substr(i,));
}
}
cout<<ans.size()<<endl;
set<string>::iterator it;
for(it=ans.begin();it!=ans.end();it++)
cout<<*it<<endl;
return ;
}

C

D题给一个有向有环图,从中找四个点,每个点之间的距离是最短路,求这四个点距离的最大值

先吧每个点跑一边spfa记录下i到j的最小距离,然后枚举b到c,找点a和点c,使得路径最长,但是直接全部枚举是O(n^4)会爆掉,所以用vector存一下到每个点的最长的3个距离(因为已经枚举了两个点)

然后复杂度就降到O(9n^2)了

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; struct edge{
int to,Next,w;
}e[maxn];
int head[N],cnt;
int n,m;
int d[N],ans[N][N];
void add(int u,int v)
{
e[cnt].to=v;
e[cnt].w=;
e[cnt].Next=head[u];
head[u]=cnt++;
}
void spfa(int x)
{
bool vis[N];
memset(vis,,sizeof vis);
vis[x]=;
memset(d,inf,sizeof d);
d[x]=;
queue<int>q;
q.push(x);
while(!q.empty()){
int s=q.front();
q.pop();
vis[s]=;
for(int i=head[s];~i;i=e[i].Next)
{
int W=e[i].w,To=e[i].to;
if(d[s]+W<d[To])
{
d[To]=d[s]+W;
if(!vis[To])
{
vis[To]=;
q.push(To);
}
}
}
}
for(int i=;i<=n;i++)
ans[x][i]=min(ans[x][i],d[i]);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
cin>>n>>m;
cnt=;
memset(head,-,sizeof head);
for(int i=;i<m;i++)
{
int x,y;
cin>>x>>y;
add(x,y);
}
memset(ans,inf,sizeof ans);
for(int i=;i<=n;i++)ans[i][i]=;
for(int i=;i<=n;i++)
spfa(i);
/* for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<ans[i][j]<<" ";
cout<<endl;
}*/
int cur=,a,b,c,d;
//求每一个点的最远距离
vector<pair<int,int> >v1[N],v2[N];
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(i==j)continue;
if(ans[i][j]<inf)v1[i].push_back(make_pair(ans[i][j],j));
if(ans[j][i]<inf)v2[i].push_back(make_pair(ans[j][i],j));
}
sort(v1[i].begin(),v1[i].end());
reverse(v1[i].begin(),v1[i].end());
sort(v2[i].begin(),v2[i].end());
reverse(v2[i].begin(),v2[i].end());
}
for(int i=;i<=n;i++)//b
{
for(int j=;j<=n;j++)//c
{
if(i==j||ans[i][j]>=inf)continue;
for(int k=;k<&&k<v2[i].size();k++)//a
{
int ccc=v2[i][k].second;
if(ccc==i||ccc==j)continue;
for(int l=;l<&&l<v1[j].size();l++)//d
{
int ddd=v1[j][l].second;
if(ddd==i||ddd==j||ddd==ccc)continue;
if(cur<ans[i][j]+v1[j][l].first+v2[i][k].first)
{
cur=ans[i][j]+v1[j][l].first+v2[i][k].first;
a=ccc,b=i,c=j,d=ddd;
}
}
}
}
}
//cout<<cur<<endl;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
return ;
}

D

E待补

Codeforces Round #349 (Div. 2)的更多相关文章

  1. Codeforces Round #349 (Div. 1) B. World Tour 最短路+暴力枚举

    题目链接: http://www.codeforces.com/contest/666/problem/B 题意: 给你n个城市,m条单向边,求通过最短路径访问四个不同的点能获得的最大距离,答案输出一 ...

  2. Codeforces Round #349 (Div. 2) D. World Tour (最短路)

    题目链接:http://codeforces.com/contest/667/problem/D 给你一个有向图,dis[i][j]表示i到j的最短路,让你求dis[u][i] + dis[i][j] ...

  3. Codeforces Round #349 (Div. 1) B. World Tour 暴力最短路

    B. World Tour 题目连接: http://www.codeforces.com/contest/666/problem/B Description A famous sculptor Ci ...

  4. Codeforces Round #349 (Div. 1) A. Reberland Linguistics 动态规划

    A. Reberland Linguistics 题目连接: http://www.codeforces.com/contest/666/problem/A Description First-rat ...

  5. Codeforces Round #349 (Div. 1) A. Reberland Linguistics dp

    题目链接: 题目 A. Reberland Linguistics time limit per test:1 second memory limit per test:256 megabytes 问 ...

  6. Codeforces Round #349 (Div. 2) C. Reberland Linguistics (DP)

    C. Reberland Linguistics time limit per test 1 second memory limit per test 256 megabytes input stan ...

  7. Codeforces Round #349 (Div. 1)E. Forensic Examination

    题意:给一个初始串s,和m个模式串,q次查询每次问你第l到第r个模式串中包含\(s_l-s_r\)子串的最大数量是多少 题解:把初始串和模式串用分隔符间隔然后建sam,我们需要找到在sam中表示\(s ...

  8. Codeforces Round #349 (Div. 2) D. World Tour 暴力最短路

    D. World Tour   A famous sculptor Cicasso goes to a world tour! Well, it is not actually a world-wid ...

  9. Codeforces Round #349 (Div. 2) C. Reberland Linguistics DP+set

    C. Reberland Linguistics     First-rate specialists graduate from Berland State Institute of Peace a ...

随机推荐

  1. Android Studio Tips

    1. 可以通过ctrl+shift+a,然后输入reformat,就能看到对应的快捷键. 如果记不得快捷键了,都可以通过ctrl+shift+a来查找. 2. [Androidstudio]的坑之[@ ...

  2. Java游戏服务器成长之路——弱联网游戏篇(源码分析)

    前言 前段时间由于公司的一款弱联网游戏急着上线,没能及时分享,现在基本做的差不多,剩下的就是测试阶段了(本来说元旦来分享一下服务器技术的).公司的这款游戏已经上线一年多了,在我来之前一直都是单机版本, ...

  3. 一步一步学EF系列三【数据迁移】

    我们每篇的内容都不多,所以希望在学习的过程中最后能亲自敲一下代码 这样更有利于掌握. 我们现在接着上篇的例子,我们现在给随便的表增加一个字段 CreateTime 创建日期 运行一下 看看会怎么样 修 ...

  4. PKU 3318 Matrix Multiplication(神奇的输入)

    #include<cstdio> using namespace std; ][]; ][],C[][]; int Read() { ; ; while((ch=getchar())==' ...

  5. vue跳转页面传值怎么传?

    这是路由跳转: this.$router.push( { name: 'holderResult', params: { meetingId:self.$route.params.meetingId} ...

  6. Mysql 5.7 主从复制

    配置思路1. 修改master和slave的配置文件,使用二进制日志,指定serverid目的是让各自都有了自己的唯一标示,并以二进制文件格式进行交流2. master中创建授权用户,查看二进制日志文 ...

  7. 分布式存储系统 Ceph

    你了解Ceph吗? Ceph是一种分布式存储系统,它可以将多台服务器组成一个超大集群,把这些机器中的磁盘资源整合到一块儿,形成一个大的资源池(PB级别),然后按需分配给应用使用. 那么你知道Ceph的 ...

  8. Js答辩总结

    JS项目总结   在做完项目后,我又学到了很多知识,有些知识在书中或许都学不到,这就是动手实践的效果与好处. 这次项目能做完,可以说不是我一个人的正真成果,因为JS是一门较难的课,做项目时往往会遇到很 ...

  9. 谷歌技术"三宝"之MapReduce(转)

    原文地址:http://blog.csdn.net/opennaive/article/details/7514146 江湖传说永流传:谷歌技术有"三宝",GFS.MapReduc ...

  10. Pentester中的XSS详解

    本次做的是Web For Pentester靶机里面的XSS题目,一共有9道题目. 关于靶机搭建参考这篇文章:渗透测试靶机的搭建 第1题(无过滤措施) 首先在后面输入xss: http://10.21 ...