R49 A-D D图有向有环图
A. Palindromic Twist
给一个字符串(小写字母) 每个字符+1,-1;变成其他字符 a只能变b z只能变y 看能否变成回文字符串
#include<bits/stdc++.h>
using namespace std;
int32_t main()
{
int T; cin>>T;
while(T--)
{
int n; cin>>n;
string ss; cin>>ss;
int t=;
for(int i=;i<n/;i++)
{
if(ss[i]-ss[n--i]==||fabs(ss[i]-ss[n--i])==)
continue;
else t=;
}
if(t==) cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
}
A.cpp
B. Numbers on the Chessboard
分类讨论下就ok了
#include<bits/stdc++.h>
#define int long long
#define MAX(a,b,c) max(a,max(b,c))
#define MIN(a,b,c) min(a,min(b,c))
#define pb push_back
#define fi first
#define se second
typedef long long ll;
typedef long long LL;
typedef unsigned long long ull;
typedef unsigned long long uLL;
using namespace std;
const int maxn=1e5+;
const int INF=0x3f3f3f3f;
int32_t main()
{
int n,q; cin>>n>>q;
if(n%==)
{
int ans1=;
int ans2=n*n/;
while(q--)
{
int a,b;cin>>a>>b;
if( (a+b)%== ) cout<<ans1+(a-)*n/+(b+)/<<endl;
else cout<<ans2+(a-)*n/+(b+)/<<endl;
}
}
else if(n%==)
{
int ans1=;
int ans2=n*n/+;
while(q--)
{
int a,b;cin>>a>>b;
if( (a+b)%== )
{
if(a%==) cout<<(a-)/*n+(b+)/<<endl;
else if(a%==) cout<<(a-)/*n+(n+)/+(b+)/<<endl;
}
else
{
if(a%==) cout<<ans2+(a-)/*n+(b+)/<<endl;
else if(a%==) cout<<ans2+(a-)/*n+(n-)/+(b+)/<<endl;
}
}
}
}
B.cpp
C. Minimum Value Rectangle
要使 4*(a+b)(a+b)/a*b (a<b) 即使 b/a 最小 排序后暴力也可以 直接找b/a 最小也行。
#include<bits/stdc++.h>
#define int long long
#define MAX(a,b,c) max(a,max(b,c))
#define MIN(a,b,c) min(a,min(b,c))
#define pb push_back
#define fi first
#define se second
typedef long long ll;
typedef long long LL;
typedef unsigned long long ull;
typedef unsigned long long uLL;
using namespace std;
const int maxn=3e6+;
const int INF=0x3f3f3f3f;
int a[maxn];
int b[maxn];
int32_t main()
{ios::sync_with_stdio(false); cin.tie(); cout.tie();
int T;cin>>T;
while(T--)
{ int n; cin>>n;
for(int i=;i<=n;i++) cin>>a[i];
sort(a+,a++n);
int t=;
for(int i=;i<n;i++)
{
if(a[i]!=a[i+]) continue;
else { b[++t]=a[i]; i++;}
}
double ans=1e18;
int x,y;
for(int i=;i<t;i++)
{
double c=(b[i]*1.000000000000/b[i+])+b[i+]*1.000000000000/b[i];
if(c<ans)
{
ans=c;
x=b[i]; y=b[i+];
}
}
cout<<x<<" "<<x<<" "<<y<<" "<<y<<endl;
}
}
C.cpp
D. Mouse Hunt
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+;
int c[maxn];
int a[maxn];
int x[maxn];
int sst[maxn];
int ffind(int x)
{
if(x==sst[x]) return x;
return sst[x]=ffind(sst[x]);
}
int dfs(int x, int y){
if(x == y) return c[x];
return min(dfs(a[x], y), c[x]);
}
int main()
{
int n; cin>>n;
for(int i=;i<=n;i++) cin>>c[i];
for(int i=;i<=n;i++) sst[i]=i ;
for(int i=;i<=n;i++) cin>>a[i];
for(int i=;i<=n;i++)
{
if(ffind(a[i])==ffind(i))
{
x[i]=;
// continue;
}
else
{
sst[ffind(a[i])]=ffind(i);
}
/* for(int i=1;i<=n;i++)
{
cout<<i<<"=="<<sst[i]<<" ";
}cout<<endl;
for(int i=1;i<=n;i++)
{
cout<<x[i]<<"---- ";
}cout<<endl;*/
}
int ans = ;
for(int i = ; i <= n; i++)
{
//cout<<i<<endl;
if(x[i]) ans += dfs(a[i], i);
//cout<<ans<<endl;
}
printf("%d\n", ans);
return ;
}
D.cpp
R49 A-D D图有向有环图的更多相关文章
- 图->有向无环图->求关键路径
文字描述 与AOV-网相对应的是AOE-网(Activity on Edge)即边表示活动的网.AOE-网是一个带权的有向无环图.其中,顶点表示事件Event,弧表示活动,权表示活动持续的时间.通常, ...
- 图->有向无环图->拓扑排序
文字描述 关于有向无环图的基础定义: 一个无环的有向图称为有向无环图,简称DAG图(directed acycline graph).DAG图是一类较有向树更一般的特殊有向图. 举个例子说明有向无环图 ...
- 有向无环图的应用—AOV网 和 拓扑排序
有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...
- UML 用例图、顺序图、状态图、类图、包图、协作图、流程图
用例图.顺序图.状态图.类图.包图.协作图 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling La ...
- 桌面显卡天梯图和桌面cpu天梯图
桌面cpu天梯图: 桌面显卡天梯图:
- 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1
import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...
- JavaScript + SVG实现Web前端WorkFlow工作流DAG有向无环图
一.效果图展示及说明 (图一) (图二) 附注说明: 1. 图例都是DAG有向无环图的展现效果.两张图的区别为第二张图包含了多个分段关系.放置展示图片效果主要是为了说明该例子支持多段关系的展现(当前也 ...
- 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))
sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个有向图 ...
- 湖南省第十二届大学生计算机程序设计竞赛 B 有向无环图 拓扑DP
1804: 有向无环图 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 187 Solved: 80[Submit][Status][Web Board ...
随机推荐
- java字符串根据空格截取并存进ArrayList,并在每个元素前后加上/
public class List { public static void main(String[] args) { String s = "abc nnn ooo/xzsxc bs&q ...
- POJ 1840 Eqs 解方程式, 水题 难度:0
题目 http://poj.org/problem?id=1840 题意 给 与数组a[5],其中-50<=a[i]<=50,0<=i<5,求有多少组不同的x[5],使得a[0 ...
- Java中的 JDK下载和环境配置(方式一)
第一步:需要安装JDK. JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151 ...
- 写一个xml文件到磁盘的方法
/** * 往磁盘上写一个xml文件 * * <?xml version="1.0" encoding="UTF-8" standalone=" ...
- centos 安装git服务器,配置使用证书登录并你用hook实现代码自动部署
安装git服务器先安装依赖软件:yum -y install gcc zlib-devel openssl-devel perl cpio expat-devel gettext-devel open ...
- svn服务器搭建及使用(一)
这里郑重感谢分享作者的辛苦:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html Subversion是优秀的版本控制工 ...
- Traumland--梦乡--IPA--德语
德国电影<<英俊少年>>的插曲.
- Cracking The Coding Interview 1.4
//Write a method to decide if two strings are anagrams or not. // // 变位词(anagrams)指的是组成两个单词的字符相同,但位置 ...
- SharePoint REST API - 文件夹和文件
博客地址:http://blog.csdn.net/FoxDave 本篇讲述如何通过REST操作文件夹和文件. 使用REST操作文件夹 在你知道某个文档库中的文件夹的URL时,可以使用如下的代码获 ...
- oracle sql developer登录
1 登录Oracle SQL developer 时候要选择数据库连接,这里要区分cdb用户和pdb用户,cdb用户可以在cdb和pdb服务下登录,而pdb用户只能在pdb服务里面登录.比如sys用户 ...