PTA 1140 1141 1142 1143
1140 Look-and-say Sequence
思路:模拟
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int d,n;
const int maxn = 10010;
int cnt[11];
vector<int> a;
vector<int> b;
int main(){
scanf("%d%d",&d,&n);
a.push_back(d);
if(n == 1) {
printf("%lld",d);
return 0;
}
for(int i=2;i<=n;i++){
int j = 0;
b.clear();
int len = a.size();
while(j < len){
int curv = a[j];
int cnt = 0;
while(j<len && a[j] == curv){
cnt++;
j++;
}
b.push_back(curv);
b.push_back(cnt);
}
a.clear();
for(int j=0;j<b.size();j++) a.push_back(b[j]);
}
for(int i=0;i<a.size();i++){
printf("%d",a[i]);
}
return 0;
}
1141 PAT Ranking of Institutions
思路:结构体排序,map统计查询
#include<bits/stdc++.h>
#include<algorithm>
#include<string>
using namespace std;
int n;
const int maxn = 1e5+10;
struct node{
string id;
double score;
string cap;
};
struct node stu[maxn];
map<string,int> mp;
map<string,double> scores;
struct capNode{
string cap;
int score;
int nums;
capNode(string ss,double cc,int num){
cap = ss;
score = cc;
nums = num;
}
};
vector<capNode> vec;
bool cmp(capNode x,capNode y){
if(x.score == y.score) {
if(x.nums == y.nums) return x.cap < y.cap;
return x.nums < y.nums;
}
return x.score > y.score;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
string curCap;
cin>>stu[i].id>>stu[i].score>>curCap;
transform(curCap.begin(),curCap.end(),curCap.begin(),::tolower);
stu[i].cap = curCap;
mp[stu[i].cap]++;
if(stu[i].id[0] == 'T'){
scores[stu[i].cap] += stu[i].score*1.5;
}else if(stu[i].id[0] == 'A'){
scores[stu[i].cap] += stu[i].score;
}else{
scores[stu[i].cap] += stu[i].score*1.0/1.5;
}
}
map<string,int>::iterator it = mp.begin();
while(it!=mp.end()){
string name = it->first;
int num = it->second;
int sc = (int)scores[name];
vec.push_back(capNode(name,sc,num));
it++;
}
sort(vec.begin(),vec.end(),cmp);
int len = vec.size();
printf("%d\n",len);
if(len > 0){
int lastScore = vec[0].score;
int rank = 1;
for(int i=0;i<len;i++){
if(vec[i].score == lastScore){
cout<<rank<<" "<<vec[i].cap<<" "<<vec[i].score<<" "<<vec[i].nums<<endl;
}else{
rank = i+1;
lastScore = vec[i].score;
cout<<rank<<" "<<vec[i].cap<<" "<<vec[i].score<<" "<<vec[i].nums<<endl;
}
}
}
return 0;
}
1142 Maximal Clique
思路:图论,判断是否同一“集合”,按题目要求判断是否有边
#include<bits/stdc++.h>
using namespace std;
const int maxn = 210;
int n,ne;
int m;
int g[maxn][maxn];
int a[maxn];
int vis[maxn];
int k;
bool isClique(){
for(int i=1;i<=k;i++){
for(int j=1;j<=k;j++){
if(i!=j && g[a[i]][a[j]] == 0) return false;
}
}
return true;
}
bool isMaxClique(){
for(int i=1;i<=n;i++) vis[i] = 0;
for(int i=1;i<=k;i++) vis[a[i]] = 1;
for(int i=1;i<=n;i++){
if(!vis[i]){
for(int p=1;p<=k;p++){
for(int q=1;q<=k;q++){
if(p != q || (k==1)){ //这里特判k==1的情况 如样例图中查询1 8:8号结点应该输出Not Maximal
if(g[i][a[p]]==1 && g[i][a[q]] == 1){
return false;
}
}
}
}
}
}
return true;
}
int main(){
scanf("%d%d",&n,&ne);
for(int i=1;i<=ne;i++){
int u,v;
scanf("%d%d",&u,&v);
g[u][v] = g[v][u] = 1;
}
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d",&k);
for(int j=1;j<=k;j++) scanf("%d",&a[j]);
bool flag1 = isClique();
bool flag2 = isMaxClique();
if(flag1 == false){
puts("Not a Clique");
}else{
if(flag2 == false){
puts("Not Maximal");
}else{
puts("Yes");
}
}
}
return 0;
}
1143 Lowest Common Ancestor 29/30
思路:给先序序列建树,找最近公共祖先
一个点段错误,有时间再补。。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 10010;
int m,n;
struct node{
int v;
node *l;
node *r;
};
int a[maxn];
set<int> se;
int deep[maxn];
int fa[maxn];
void getDeep(node *root,int depth,int father){
if(root == NULL) return;
deep[root->v] = depth;
fa[root->v] = father;
if(root->l != NULL) getDeep(root->l,depth+1,root->v);
if(root->r != NULL) getDeep(root->r,depth+1,root->v);
}
void build(int pos,node *root){
if(root == NULL) return;
node* fa = root;
int v = a[pos];
if(v < fa->v){
if(fa->l == NULL){
node *cur = new node();
cur->v = v;
cur->l = NULL;
cur->r = NULL;
fa->l = cur;
return;
}
build(pos,fa->l);
}else{
if(fa->r == NULL){
node *cur = new node();
cur->v = v;
cur->l = NULL;
cur->r = NULL;
fa->r = cur;
return;
}
build(pos,fa->r);
}
return;
}
int main(){
scanf("%d%d",&m,&n);
for(int i=1;i<=n;i++) {
scanf("%d",&a[i]);
se.insert(a[i]);
}
node *Root = new node();
Root->l = NULL;
Root->r = NULL;
if(n>=1) Root->v = a[1];
else Root->v = 0;
if(n>=2) for(int i=2;i<=n;i++) build(i,Root);
getDeep(Root,1,0);
for(int i=1;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
bool visu = true;
bool visv = true;
if(se.find(u) == se.end()) visu = false;
if(se.find(v) == se.end()) visv = false;
if(visu == false || visv == false){
if(visu==false && visv==false) printf("ERROR: %d and %d are not found.\n",u,v);
else if(visu == false) printf("ERROR: %d is not found.\n",u);
else printf("ERROR: %d is not found.\n",v);
}else{
if(deep[u] < deep[v]){
int p = u;
int q = v;
while(deep[q] > deep[p]) q = fa[q];
if(q == p) printf("%d is an ancestor of %d.\n",u,v);
else{
while(p != q){
p = fa[p];
q = fa[q];
}
printf("LCA of %d and %d is %d.\n",u,v,p);
}
}else{
int p = u;
int q = v;
while(deep[p] > deep[q]) p = fa[p];
if(p == q) printf("%d is an ancestor of %d.\n",v,u);
else{
while(p != q){
p = fa[p];
q = fa[q];
}
printf("LCA of %d and %d is %d.\n",u,v,p);
}
}
}
}
return 0;
}
PTA 1140 1141 1142 1143的更多相关文章
- PAT甲级满分攻略|记一次考试经历
一次考试经历 今天是"大雪",很冷. 来到隔壁的学校考试,记得上一次来河中医是两年前大一刚开学吧,那天晚上印象比较深刻,6个室友骑车到处闲逛.当时还不会Hello world. 很 ...
- Bzoj索引
1001 : http://ideone.com/4omPYJ1002 : http://ideone.com/BZr9KF1003 : http://ideone.com/48NJNh1004 : ...
- Hsql中In没有1000的限制
SELECT * FROM user , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...
- C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告
剑指offer 重建二叉树 提交网址: http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tq ...
- 何为编码 GBK 和 UTF8编码?GBK,GB2312与区位码有何关系?
何为GBK,何为GB2312,与区位码有何渊源? 区位码是早些年(1980)中国制定的一个编码标准,如果有玩过小霸王学习机的话,应该会记得有个叫做“区位”的输入法(没记错的话是按F4选择).就是打四个 ...
- 自动化安装smokeping-2.6.11脚本
自动化安装Smokeping-2.6.11脚本 一.目的 1.1 监控目的 为方便监测各数据中心网络状况,自定义全国各节点,从而发现网络异常,判断网络故障. 1.2 本文目的 快速部署Smokepin ...
- CPictureEx类
CPictueEx类不仅可以显示GIF(包括GIF动画),还可以显示JPEG.BMP.WMF.ICO.CUR等. 参考:https://www.codeproject.com/Articles/142 ...
- 一个封装比较完整的FTP类——clsFTP
前几天,看见园子里面的博友写了一个支持断点续传的FTP类,一时技痒,干脆写了个更完整的clsFtp类.只是我写这个clsFtp不是支持断点续传的目的,而是为了封装FTP几个基本常用的操作接口. 功能 ...
- python多线程同步实例分析
进程之间通信与线程同步是一个历久弥新的话题,对编程稍有了解应该都知道,但是细说又说不清.一方面除了工作中可能用的比较少,另一方面就是这些概念牵涉到的东西比较多,而且相对较深.网络编程,服务端编程,并发 ...
随机推荐
- php经典设计模式和Trait类代码的复用
PHP经典设计模式 <?php /** * 单例模式 */ class Site { #定义属性 public $siteName; #定义本类的静态实例 protected static $i ...
- 求和:fft,表达式化简
$f(n)=\sum\limits_{i=0}^{n} \sum\limits_{j=0}^{i} S(i,j) \times 2^j \times j!$ 其中$S(i,j)$为第二类斯特林数,公式 ...
- CSPS模拟 52
我貌似曾经说过我是个只会做水题的巨型辣鸡.. 这次证明我水题都不会做.. T1 平均数 区间数$n^2$ 枚举是不可能了 可是好像没有无用的计算量.. 刚想到这里,此时开考15min 看见天皇比手势说 ...
- NOIP模拟 33
苏轼三连一脸懵逼 然而既惨者就是没素质 T1是正解思路 然而因为直接从暴力修改过来并且忘了把求约数改成求质约数并且由于快速幂打的有缺陷等 没 有 A C ! 如 果 A C rank1就是俺的了! ( ...
- 基于代码生成器的快速开发平台 JEECG
JEECG是一款基于代码生成器的J2EE快速开发平台,开源界“小普元”超越传统商业企业级开发平台.引领新的开发模式(Online Coding模式(在线开发)->代码生成器模式->手工ME ...
- MySQL系列:MySQL的基本使用
数据库的基本操作 在MySQL数据库中,对于一个MySQL示例,是可以包含多个数据库的. 在连接MySQL后,我们可以通过 show databases; 来进行查看有那么数据库.这里已经存在一些库了 ...
- SpringBoot 源码解析 (三)----- Spring Boot 精髓:启动时初始化数据
在我们用 springboot 搭建项目的时候,有时候会碰到在项目启动时初始化一些操作的需求 ,针对这种需求 spring boot为我们提供了以下几种方案供我们选择: ApplicationRunn ...
- Ubuntu 16.04.4 LTS设置root用户登陆图形界面
普通用户登陆真是太憋屈,这也不能那也不能,root用户登录就可以肆无忌惮了 本方法采用nano编辑器,ubantu版本Ubuntu 16.04.4 LTS,其他版本应该也一样,下面进入正题 1.终端登 ...
- HTML中的表格标签
表格是网页制作中使用最多的工具之一,在制作网页时,使用表格可以更清晰地排列数据.但是在实际制作过程中,表格更多用在网页布局的定位上.很多网页都是以表格布局的.这是因为表格在文本和图像的位置控制方面 ...
- windwos 10 安装flask
1 安装python2.7.13 安装文件为:python-2.7.13.amd64.msi,因为python2.7.13中已经包含了pip. 在安装过程中选中[Add python.exe to P ...