【2013长沙区域赛】部分题解 hdu4791—4801
1001:
签到题,二分一下即可
代码:
#include <set>
#include <map>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const double eps = 1e-;
const int maxn = 1e5+;
ll s[maxn],p[maxn],q[maxn];
ll res[maxn],minv[maxn];
int main(void)
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
int t;
scanf ("%d",&t);
while (t--)
{
int n,m;
scanf ("%d%d",&n,&m);
minv[] = inf;
for (int i = ; i < n; i++)
{
scanf ("%I64d%I64d",s+i,p+i);
res[i] = (s[i]-) * p[i];
}
minv[n] = (ll)<<;
for (int i = n - ; i >= ; i--)
{
minv[i] = min(res[i],minv[i+]);
}
for (int i = ; i < m; i++)
scanf ("%I64d",q+i);
for (int i = ; i < m; i++)
{
int idx = lower_bound(s,s+n,q[i]) - s;
ll ans = q[i] * p[idx-];
printf("%I64d\n",min(ans,minv[idx]));
}
}
return ;
}
1003:
题意:
几何题,有两个同心圆,撞到小圆会反弹,求在大圆中呆的时间
解法:
先判断能否进去,再判断能否碰撞
代码:
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std; const double eps=1e-;
int dcmp(double x)
{
if(fabs(x)<eps)
return ;
else
return x<?-:;
} double dot(double x1,double y1,double x2,double y2)
{
return x1*x2+y1*y2;
} int main()
{
//freopen("in.txt","r",stdin);
double rmax, rmin, r, x, y;
double vx, vy;
while(~scanf("%lf%lf%lf%lf%lf%lf%lf",&rmin, &rmax, &r, &x, &y, &vx, &vy))
{
if(dcmp(vx)==)
vx=eps;
double k=vy/vx;
double d=fabs(y-k*x)/sqrt(k*k+); // 不能相交
if(d>=r+rmax || dot(x,y,vx,vy)>)
{
printf("0\n");
continue;
} if(d>r+rmin)
{
double l1=sqrt((rmax+r)*(rmax+r)-d*d);
double t=l1/sqrt(vx*vx+vy*vy)*.;
printf("%.6f\n",t);
continue;
}
double l1=sqrt((rmax+r)*(rmax+r)-d*d);
double l2=sqrt((rmin+r)*(rmin+r)-d*d);
double t=(l1-l2)/sqrt(vx*vx+vy*vy)*.;
printf("%.6f\n",t);
} return ;
}
1007:
题意:
有一个图,已知每个点的度数,问能否还原这个简单图,如果有多种方案要全部输出
简单图的定义是没有重边和自环
解法:
havel定理http://www.cnblogs.com/oneshot/p/4117632.html
1009:
题意:
有一棵树,每个点有一个权值(票数),还有一个种类,代表给like或者candle投票,每次可以花费x代价翻转某个子树,对于某些点他们已经被别人翻转,再次翻转的代价是y
消耗代价就是消耗like的票数(可以无限消耗,即使为负),求最后like和candle投票的差值得最大值
解法:
树形dp
每个点维护两个值,一个代表差值最大为多少,另一个代表差值最小为多少,进行转移即可
代码:
还没写
1010:
题意:
有c(m,3)支队伍,起初可以选一支,每次打败某只队伍后可以换成被打败的队伍,打败是有概率的,最后求最大概率
解法:
数据范围不大,直接dp就可以了
代码:
#include <iostream>
#include <stdio.h>
#include<string.h>
#include<algorithm>
#include<string>
#include<ctype.h>
#include<math.h>
using namespace std;
#define eps 0.00000000001
int M,m,n;
double g[][];
int a[];
double dp[][];
void ini()
{
M=m*(m-)*(m-)/;
for(int i=;i<M;i++)
{
for(int j=;j<M;j++)
scanf("%lf",g[i]+j);
}
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",a+i);
}
}
void solve()
{
memset(dp,,sizeof(dp));
for(int i=;i<M;i++)
{
dp[][i]=1.0;
}
for(int i=;i<=n;i++)
{
for(int j=;j<M;j++)
{
if(fabs(dp[(i-)%][j])<eps)
{
continue;
}
dp[i%][j]=max(dp[i%][j],dp[(i-)%][j]*g[j][a[i]]);
dp[i%][a[i]]=max(dp[i%][a[i]],dp[(i-)%][j]*g[j][a[i]]);
dp[(i-)%][j]=;
}
}
double ans=;
for(int i=;i<M;i++)
{
ans=max(ans,dp[n%][i]);
}
printf("%.6f\n",ans);
}
int main()
{
while(scanf("%d",&m)!=EOF)
{
ini();
solve();
}
return ;
}
1011:
题意:
给一个二维魔方的初始状态,求还原此魔方的最小步数,且步数不超过n步
解法:
由于限定了上界,所以直接dfs
代码:
#include <iostream>
#include <stdio.h>
#include <memory.h>
using namespace std; int n;
int state[];
const int same[][]={
{,,,},
{,,,},
{,,,},
{,,,},
{,,,},
{,,,}
}; const int change[][]=
{
{,,,,,,,,,,,,,,,,,,,,,,,},
{,,,,,,,,,,,,,,,,,,,,,,,},
{,,,,,,,,,,,,,,,,,,,,,,,},
{,,,,,,,,,,,,,,,,,,,,,,,},
{,,,,,,,,,,,,,,,,,,,,,,,},
{,,,,,,,,,,,,,,,,,,,,,,,}
};
int tmp[];
void Change(int type)
{
for(int i=;i<;i++)
tmp[i]=state[change[type][i]]; memcpy(state,tmp,sizeof tmp);
} // 得到相同的面数
int getSame()
{
int ans=;
for(int i=;i<;i++)
for(int j=;j<;j++)
if(state[same[i][]]!=state[same[i][j]])
{
ans--;
break;
}
return ans;
} int ans=;
void dfs(int cur=)
{
ans=max(ans,getSame());
if(cur>=n)
return ;
for(int i=;i<;i++)
{
Change(i);
dfs(cur+);
Change(i^);
}
} int main()
{
//freopen("in.txt","r",stdin); while(~scanf("%d",&n))
{
for(int i=;i<;i++)
scanf("%d",&state[i]);
ans=getSame();
dfs();
printf("%d\n",ans);
} return ;
}
【2013长沙区域赛】部分题解 hdu4791—4801的更多相关文章
- HDU 4793 Collision(2013长沙区域赛现场赛C题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4793 解题报告:在一个平面上有一个圆形medal,半径为Rm,圆心为(0,0),同时有一个圆形范围圆心 ...
- HDU 4791 Alice's Print Service(2013长沙区域赛现场赛A题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4791 解题报告:打印店提供打印纸张服务,需要收取费用,输入格式是s1 p1 s2 p2 s3 p3.. ...
- 【2013南京区域赛】部分题解 hdu4802—4812
上周末打了一场训练赛,题目是13年南京区域赛的 这场题目有好几个本来应该是我擅长的,但是可能是太久没做比赛了各种小错误代码写的也丑各种warusn trush搞得人很不爽 全场题之一的1002也没有想 ...
- 2013长沙网络赛H题Hypersphere (蛋疼的题目 神似邀请赛A题)
Hypersphere Time Limit: 1 Second Memory Limit: 32768 KB In the world of k-dimension, there's a ...
- 2013 ACM区域赛长沙 K Pocket Cube hdu 4801
题意:给了一个2*2的魔方..每步操作可以将任意一面翻转90度..现在问在N(<=7)步内.最多能翻出几面相同的. 直接打表模拟每种翻转情况 #include<cstdio> #in ...
- 2013 ACM区域赛长沙 C Collision HDU 4793
题意:在平面上0,0点,有一个半径为R的圆形区域,并且在0,0点固定着一个半径为RM(<R)的圆形障碍物,现在圆形区域外x,y,有一个半径 为r的,并且速度为vx,vy的硬币,如果硬币碰到了障碍 ...
- 2013 ACM区域赛长沙 H zoj 3733 (hdu 4798) Skycity
题意:一个圆台,底面和顶面半径分别为R,r,然后高度为H,一共F层,每层高度一样,然后要在每层的天花板上贴方格玻璃,方格玻璃要满足以下几个条件: 方格玻璃面积不能小于S,且方格玻璃要围成一个正多边形, ...
- 2013 ACM区域赛长沙 I LIKE vs CANDLE(ZOJ3734) 很好的一道树形DP
题意:一棵有根树,每个节点都有一个value值和属性(zan或是 CANDLE).你可以通过反转一些点的属性,反转一个点时候,它的整个子树都会被反转属性.有些点反转消耗代价为X,有些为Y.你的目标的是 ...
- 2013 ACM区域赛长沙 A Alice’s Print Service HDU 4791
题意:就是一个打印分段收费政策,印的越多,单张价格越低,输入需要印刷的数量,求最小印刷费用一个细节就是,比当前还小的状态可能是最后几个. #include<stdio.h> #includ ...
随机推荐
- ubuntu 连接 mssql <转>
转自 http://www.sendong.net/thread-90941-1-1.html 在linux下连接MSSQL,因为微软同志没有提供任何接口给开发人员,大约他们认为要用MSSQL的,只 ...
- .net之页面生面周期
# 事件或方法 功能 描述 1 Init 事件 页面初始化 页面生存周期中的第一个阶段是初始化.当 Init 事件发生时,在.aspx 源文件中静态声明的所有控件都已实例化并取其默认值.应该注意的是, ...
- 【开源java游戏框架libgdx专题】-08-中文显示与绘制
libgdx虽然是由美国人Mario Zechner(即BadlogicGames)写的开源引擎,由于Libgdx底层是用OpenGL实现的,所以Libgdx是可以支持中文的,在libgdx中的汉字都 ...
- asp.net,mvc4,mysql数据库,Ef遇到问题集合
asp.net mvc mysql数据库,在我一个新手自学MVC4时遇到如下的问题,一一解决掉的方法记录如下方便自己日后查看,也为了方便一些像我一样的新手遇到如下问题时,提供参考 问题一: 解决办 ...
- 用CSS3实现带小三角形的div框(不用图片)
现在看到了很多带小三角形的方框,如微信.Mac版的QQ.QQ空间的时间轴等等,在聊天或者是发表的状态的内容外面都有一个带小三角形的矩形框包围着,感觉看着很不错,于是决定亲自动手写一个,我上次用的是偏移 ...
- 2015-09-21CSS:引入方式、选择器、注释、文字样式
1.HTML中引入CSS的方式 HTML中引入CSS的样式有4种:行内式.内嵌式.导入式和链接式. ⑴行内式 行内式是在标记的style属性中设定CSS样式.这种方式没有体现出CSS的优势,不推荐使用 ...
- FusionChart学习笔记(部分)
目录 第一阶段 1 一.创建第一个FusionChart 1 (1)导入js文件 1 (2)定义Div Id 1 (3)定义xml格式的数据文件 1 (4)编写js代码 ...
- JavaScript 字符串
字符串属性 属性 描述 constructor 返回创建字符串属性属性的函数 length 返回字符串的长度 prototype 允许您向对象添加属性和方法 字符串方法 Method 描述 charA ...
- Sql Xtype
SQL Server xtype的介绍 在数据库内创建的每个对象(约束.默认值.日志.规则.存储过程等)在表中占一行.只有在 tempdb 内,每个临时对象才在该表中占一行. 列名 数据类型 描 ...
- js apply
1.作用 函数的apply方法的作用与call方法类似,也是改变this指向,然后再调用该函数.唯一的区别就是,它接收一个数组作为函数执行时的参数 Fn.apply(obj, [arg1, arg2, ...