2010山东省第一届ACM程序设计竞赛
休眠了2月了 要振作起来了!!。。。
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2155
因为点比较少 最多更新三百次 标记某个节点时直接更新与之相连的点的最短距离
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
using namespace std;
#define INF 0xfffffff
int w[][],f[];
int main()
{
int n,m,i,j,q;
int kk = ;
while(cin>>n>>m>>q)
{
if(n==&&m==&&q==) break;
int u,v,c;
memset(f,,sizeof(f));
for(i = ; i < n ; i++)
{
for(j = ;j < n ; j++)
w[i][j] = INF;
w[i][i] = ;
}
for(i = ; i <= m ; i++)
{
cin>>u>>v>>c;
w[u][v] = min(w[u][v],c);
}
printf("Case %d:\n",kk++);
while(q--)
{
int t;
cin>>t;
if(t==)
{
int x,y;
cin>>x>>y;
if(!f[x]||!f[y])
printf("City %d or %d is not available.\n",x,y);
else if(w[x][y]==INF)
puts("No such path.");
else
printf("%d\n",w[x][y]);
}
else
{
int x;
cin>>x;
if(f[x])
{
printf("City %d is already recaptured.\n",x);
continue;
}
f[x] = ;
for(i = ; i < n ; i++)
for(j = ; j < n ; j++)
if(w[i][j]>w[i][x]+w[x][j])
w[i][j] = w[i][x]+w[x][j];
}
}
puts("");
}
return ;
} /**************************************
Problem id : SDUT OJ 2155
User name : shang
Result : Accepted
Take Memory : 832K
Take Time : 300MS
Submit Time : 2014-01-16 15:11:20
**************************************/
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2159
set存结构体 low_bounder二分查找 不过时间跑了不少 不知道有没有更简单的方法
#include<cstdio>
#include<cstring>
#include <cmath>
#include<algorithm>
#include<stdlib.h>
#include<queue>
#include<vector>
#include<set>
#include<iostream>
using namespace std;
struct node
{
int x,y;
bool operator <(const node a) const
{
if(a.x==x)
return y<a.y;
return x<a.x;
}
};
char s[];
int main()
{
int n,kk=;
while(cin>>n)
{
if(!n) break;
set<node>q;
node st;
printf("Case %d:\n", kk++);
while(n--)
{
cin>>s;
if(s[]=='a')
{
cin>>st.x>>st.y;
q.insert(st);
}
else if(s[]=='f')
{
cin>>st.x>>st.y;
set<node>::iterator it;
it = q.lower_bound(st);
while(it!=q.end())
{
if((*it).x>st.x&&(*it).y>st.y)
{
cout<<(*it).x<<" "<<(*it).y<<endl;
break;
}
it++;
}
if(it==q.end())
puts("-1");
}
else
{
cin>>st.x>>st.y;
q.erase(st);
}
}
puts("");
}
return ;
} /**************************************
Problem id : SDUT OJ 2159
User name : shang
Result : Accepted
Take Memory : 2572K
Take Time : 930MS
Submit Time : 2014-01-16 17:34:20
**************************************/
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2157
先取两个数 再二分查找和与m最近的数
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
using namespace std;
int a[],p[*];
int main()
{
int n,m,i,j;
int kk = ;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(!n&&!m) break;
for(i = ; i < n ; i++)
scanf("%d",&a[i]);
a[n] = ;
int g = ;
for(i = ; i <= n; i++)
for(j = i ; j <= n ; j++)
if(a[i]+a[j]<=m)
p[g++] = a[i]+a[j];
sort(p,p+g);
int maxz = ;
printf("Case %d: ",kk++);
for(i = ; i < g ; i++)
{
if(p[i]>m) break;
int low = i,high = g-;
while(low<high)
{
int mm = (low+high)/;
if(p[i]+p[mm]>m)
high = mm-;
else
low = mm+;
}
if(p[low]+p[i]<=m&&p[low]+p[i]>maxz)
{
maxz = p[low]+p[i];
}
}
printf("%d\n",maxz);
puts("");
}
return ;
} /**************************************
Problem id : SDUT OJ 2157
User name : shang
Result : Accepted
Take Memory : 2444K
Take Time : 130MS
Submit Time : 2014-01-16 15:43:45
**************************************/
2010山东省第一届ACM程序设计竞赛的更多相关文章
- Emergency(山东省第一届ACM程序设计真题+Floyd算法变型)
题目描述 Kudo’s real name is not Kudo. Her name is Kudryavka Anatolyevna Strugatskia, and Kudo is only h ...
- Shopping(山东省第一届ACM省赛)
Shopping Time Limit: 1000MS Memory limit: 65536K 题目描述 Saya and Kudo go shopping together.You can ass ...
- 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解
题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...
- 第十四届中北大学ACM程序设计竞赛 J.ZBT的游戏
问题描述 第14届中北大学程序设计竞赛来了,集训队新买了一大堆气球,气球一共有K种颜色(1<=K<=256),气球的颜色从1-K编号. ZBT童心未泯,他发明了一种摆放气球的游戏,规则如下 ...
- sdut 2153 Clockwise (2010年山东省第一届ACM大学生程序设计竞赛)
题目大意: n个点,第i个点和第i+1个点可以构成向量,问最少删除多少个点可以让构成的向量顺时针旋转或者逆时针旋转. 分析: dp很好想,dp[j][i]表示以向量ji(第j个点到第i个点构成的向量) ...
- sdut 2159 Ivan comes again!(2010年山东省第一届ACM大学生程序设计竞赛) 线段树+离散
先看看上一个题: 题目大意是: 矩阵中有N个被标记的元素,然后针对每一个被标记的元素e(x,y),你要在所有被标记的元素中找到一个元素E(X,Y),使得X>x并且Y>y,如果存在多个满足条 ...
- 2010年山东省第一届ACM大学生程序设计竞赛 Balloons (BFS)
题意 : 找联通块的个数,Saya定义两个相连是 |xa-xb| + |ya-yb| ≤ 1 ,但是Kudo定义的相连是 |xa-xb|≤1 并且 |ya-yb|≤1.输出按照两种方式数的联通块的各数 ...
- Hello World! 2010年山东省第一届ACM大学生程序设计竞赛
Hello World! Time Limit: 1000MS Memory limit: 65536K 题目描述 We know that Ivan gives Saya three problem ...
- Phone Number 2010年山东省第一届ACM大学生程序设计竞赛
Phone Number Time Limit: 1000MS Memory limit: 65536K 题目描述 We know that if a phone number A is anothe ...
随机推荐
- rivers ioi2005 树形dp
说句实话,写完这道题,很想吐一口血出来,以示我心情的糟糕: 题目很简单,树形dp,正常做30分钟,硬是做了好几个小时,真是伤心. 题解不写了,只是吐个槽,网上没有用背包写的dp,全是左儿子右兄弟写法, ...
- Windows+Apache+MySQL+PHP(WAMP)环境搭建
运行操作系统:Windows Server 2008 R2 Apache版本:Apache 2.2 MySQL版本:MySQL 5.5 PHP版本:PHP 5.6.14(当前最新版) 更新日期:201 ...
- 连接ACCESS 数据库不能使用 '';文件已在使用中。
错误类型: Microsoft JET Database Engine (0x80004005) 不能使用 '':文件已在使用中. 对数据库的操作完之后,要 conn.close() 错误原因:解 ...
- PowerDesigner(三)-企业架构模型(转)
企业架构模型(Enterprise Architecture Model,EAM)是PowerDesigner 15新增的功能,它能够以图形的方式展现企业架构,从而取代文字描述:以偏向非技术性的表达方 ...
- Asp.net页面无刷新请求实现
Asp.net页面无刷新请求实现 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&qu ...
- React Native 简介:用 JavaScript 搭建 iOS 应用 (1)
[编者按]本篇文章的作者是 Joyce Echessa--渥合数位服务创办人,毕业于台湾大学,近年来专注于协助客户进行 App 软体以及网站开发.本篇文章中,作者介绍通过 React Native 框 ...
- 使用Rails 4.2+ 测试异步邮件系统
[导读]异步测试总是一个很大的问题,邮件发送测试更是让很多开发同学不知道从哪里入手.在新版的Rails里,这类测试在很大程度上被简化了. 以下为译文 在编写需要发送邮件的应用时,控制器是绝不能被阻塞的 ...
- 图解JavaScript执行环境结构
JavaScript引擎在开始编译代码的时候,会对JavaScript代码进行一次预编译,生成一个执行环境,比如如下代码: window.onload=function(){ function sub ...
- poj 3903 Stock Exchange(最长上升子序列,模版题)
题目 #include<stdio.h> //最长上升子序列 nlogn //入口参数:数组名+数组长度,类型不限,结构体类型可以通过重载运算符实现 //数组下标从1号开始. int bs ...
- netaddr 0.7.12
Pythonic manipulation of IPv4, IPv6, CIDR, EUI and MAC network addresses https://pypi.python.org/pyp ...