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 ...
随机推荐
- noi2006day2_最大获利 网络流
这道题是上一题的数据加强版,dinic表示毫无压力: #include<iostream> #include<cstdio> #include<cstring> # ...
- [百度空间] [原]DLL导出实例化的模板类
因为模板是在编译的时候根据模板参数实例化的,实例化之后就像一个普通的类(函数),这样才有对应的二进制代码;否则,没有模板参数,那么编译器就不知道怎么生成代码,所以生成的DLL就没有办法导出模板了.但是 ...
- VC++之GetLastError()使用说明
VC中GetLastError()获取错误信息的使用 在VC中编写应用程序时,经常需要涉及到错误处理问题.许多函数调用只用TRUE和FALSE来表明函数的运行结果.一旦出现错误,MSDN中往往会指出请 ...
- 可执行文件(ELF)格式之讲解
ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西.以及都以什么样的格式去放这些东西.它自 ...
- p3p之讲解
P3P是一种被称为个人隐私安全平台项目(the Platform for Privacy Preferences)的标准,能够保护在线隐私权,使Internet冲浪者可以选择在浏览网页时,是否被第三方 ...
- .NET设计模式(17):命令模式(Command Pattern)(转)
概述 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”.但在某些场合,比如要对行为进行“记录.撤销/重做.事务”等处理,这种无法抵御变化的紧耦合是不合适的.在这种情况下,如何将“行为 ...
- 结合NGUI做的手机拍照(可自定义相框)
原地址:http://www.unity蛮牛.com/thread-18220-1-1.html 在次此之前我们先要了解一下下面的我要讲的几个内容: 一.为什么要用NGUI,因为NGUI的可以做屏幕自 ...
- Sqli-labs less 55
Less-55 本关的sql语句为: $sql="SELECT * FROM security.users WHERE id=($id) LIMIT 0,1"; 其余和less54 ...
- jQuery对象和javascript对象互换
jquery变js var obj=$("dom"); 或 var obj=jQuery("dom"); js 变 jquery var $jobj=$(obj ...
- POJ 1989
#include <iostream> #define MAXN 10005 using namespace std; bool mark[MAXN]; int main() { //fr ...