A.uva 12709 Falling ANTS

首先按照H排序,然后按照L*H*W排序 

 #include<iostream>
#include<cstdio>
#include <math.h>
#include<algorithm>
#include<string.h>
#define maxn 100009
#define inf 100000
using namespace std;
int main()
{
int n,a,b,c;
while()
{
int ans=,ans_h=;
scanf("%d",&n);
if(n==)break;
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(c>ans_h)ans_h=c,ans=a*b*c;
else if(c==ans_h && a*b*c>ans)ans=a*b*c;
}
printf("%d\n",ans);
}
return ;
}

 D uva 12712 Pattern Locker

题目大意:一个L*L的安卓密码锁,问最少按M个钮,最多按N个扭,一共有多少中不同的方式加锁,注意正常来说1 3 2,是不合法的,但在这里是合法的,但同一个按钮还是不能走两次

思路:排列组合一下就出来了,比如第一个样例:9*8*7*6+9*8*7*6*5+9*8*7*6*5*4+9*8*7*6*5*4*3+9*8*7*6*5*4*3*2+9*8*7*6*5*4*3*2*1

 #include<iostream>
#include<cstdio>
#include <math.h>
#include<algorithm>
#include<string.h>
#define maxn 100009
#define inf 100000
#define MOD (10000000000007ll)
using namespace std;
int main()
{
int t,cas=;
scanf("%d",&t);
while(t--)
{
long long a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
long long u=a*a,ans=;
for(int i=;i<=b;i++)ans=ans*(u-i+)%MOD;
long long temp=ans;
for(int i=b+;i<=c;i++)
temp=(temp*(u-i+))%MOD,ans=(ans+temp%MOD)%MOD;
printf("Case %d: %lld\n",++cas,ans);
}
return ;
}

E uva 12713 Pearl Chains

题目大意:有三种类型的珍珠,每种类型的珍珠分别能够染色x,y,z种颜色,1号类型珍珠加3号类型珍珠共A个,2号类型珍珠和3号类型珍珠共B个,问有多少种摆珍珠的方案

思路:公式在比赛的时候就推出来了,枚举2号类型的珍珠个数即可 ΣC(i,A+B-i)*C(A-i,A+B-2*i)*xA-1*yB-1*zi,关键数字太大,还需要lucas定理

 #include<iostream>
#include<cstdio>
#include <math.h>
#include<algorithm>
#include<string.h>
#include<queue>
#define MOD 1000003
#define maxn 1000000
using namespace std;
long long fac[MOD+],inv[MOD+],a,b,x,y,z;
long long mpow(long long a,long long n){
if(n==)return ;
if(n==)return a%MOD;
if(n&)return (a*mpow(a,n-))%MOD;
else{
long long u=mpow(a,n>>);
return (u*u)%MOD;
}
}
long long C(long long m,long long n)
{
if(m==)return ;
return ((fac[n]*inv[m]%MOD)*inv[n-m])%MOD;
}
int main()
{
int t;
fac[]=inv[]=;
for(int i=;i<=MOD;i++)
{
fac[i]=(fac[i-]*(long long)i)%MOD;
inv[i]=mpow(fac[i],MOD-);
// cout << fac[i]<<" "<<inv[i]<<endl;
}
scanf("%d",&t);
//printf("%lld\n",C(2,5));
while (t--)
{
long long ans=;
scanf("%lld%lld%lld%lld%lld",&a,&b,&x,&y,&z);
x%=MOD;y%=MOD;z%=MOD;
while(a||b)
{
long long u=a%MOD,v=b%MOD,min_x=min(u,v),ret=,temp=;
for(int i=;i<=min_x;i++)
{
temp=(C(i,u+v-i)*C(u-i,u+v-i-i))%MOD;
temp=(temp*mpow(x,u-i))%MOD;
temp=(temp*mpow(y,v-i))%MOD;
temp=(temp*mpow(z,i))%MOD;
ret=(ret+temp)%MOD;
}
ans=(ans*ret)%MOD;
a/=MOD,b/=MOD;
}
printf("%lld\n",ans);
}
return ;
}

F uva 12714 Two Points Revisited

题目大意:给你两个点,要你再求两点,使得与题目中给出的两点垂直,并且两点要在矩形框内,输出任意一种即可

思路:思路很多,CP和zyx分别有自己的思路,其实就是个sb题,我的话先求出任意一条垂直的两点,然后将其平移到第一象限,然后再将其移到第一象限的左下角即可

 #include<iostream>
#include<cstdio>
#include <math.h>
#include<algorithm>
#include<string.h>
#define maxn 100009
#define inf 100000
#define MOD (10000000000007ll)
using namespace std;
int main()
{
int t,cas=,x1,y1,x2,y2,x3,x4,y3,y4;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
x3=x1,y3=y1,x4=x1+y2-y1,y4=y1-(x2-x1);
if(x3<)x4-=x3,x3=;
if(y3<)y4-=y3,y3=;
if(x4<)x3-=x4,x4=;
if(y4<)y3-=y4,y4=;
int u=min(y4,y3);
y4-=u,y3-=u;
u=min(x4,x3);
x4-=u;x3-=u;
printf("Case %d: %d %d %d %d\n",++cas,x3,y3,x4,y4);
}
return ;
}

H UVA 12716 GCD XOR

题目大意:有多少小于等于N的数对(A,B),满足GCD(A,B)=A XOR B 1<=B<=A<=N

思路:感觉能想出这题真心好不容易!!!关键要知道一个结论:设GCD(A,B)= C ,A-C=B

以上结论在打过N张表后被总结下来,其中ZYX在这道题几乎耗了3个多小时TUT,知道结论以后暴力即可!

然后照着结论推证明

A-B<=A XOR B<=A+B  (由于XOR可以理解成不带进位的加法,同样也可以理解成不带借位的减法)

∵A XOR B=GCD(A,B)

∴A-B<=GCD(A,B)<=A+B

同时由辗转相减法可得GCD(A,B)=GCD(A-B,B)<=A-B

即A-B<=GCD(A,B)<=A-B

QED.

 #include<iostream>
#include<cstdio>
#include <math.h>
#include<algorithm>
#include<string.h>
#include<queue>
#define maxn 30000000
#define inf 100000
#define MOD (10000000000007ll)
using namespace std;
int ans[maxn];
int main()
{
for(int i=;i<=maxn;i++)
for(int j=;j*i<=maxn;j++)
{
int u=i*j,b=u-i;
if((b^u)==i)ans[u]++;
}
for(int i=;i<=maxn;i++)ans[i]+=ans[i-];
int t,n,cas=;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("Case %d: %d\n",++cas,ans[n]);
}
return ;
}

I UVA 12717 Fiasco

题目大意:前面给了一坨眼睛都快看出血的代码,其实是prim,所以它做的应该是求出以s为根的最小生成树,而要最小生成树上的边正好等于最短路树

思路:这题的话DFS序和BFS序应该都行,一开始看样例构造了个BFS序就过了,证明的话以DFS序为例子,假设现在正在遍历非树边,那它的序号一定比所有的树边大,并且当前构成环,由MST回路性质可得该边肯定不是MST上的边,很明显该边也肯定不是最短路树上的边

 #include<iostream>
#include<cstdio>
#include <math.h>
#include<algorithm>
#include<string.h>
#include<queue>
#define maxn 250000
#define inf 100000
#define MOD (10000000000007ll)
using namespace std;
int cnt=;
int head[maxn],next[maxn],point[maxn],now=;
int ans[maxn],n,m,source,x[maxn],y[maxn],v[maxn];
bool visit[maxn],visit1[maxn];
void add(int x,int y,int v)
{
next[++now]=head[x];
head[x]=now;
point[now]=y;
}
void bfs(int s)
{
queue<int>q;
q.push(s);
visit[s]=;
while(!q.empty())
{
s=q.front();
q.pop();
for(int i=head[s];i;i=next[i])if(!visit1[i])
{
visit1[i]=visit1[i^]=;
int u=point[i];
ans[i>>]=++cnt;
if(!visit[u])q.push(u),visit[u]=;
}
}
}
int main()
{
int t,cas=;
scanf("%d",&t);
while(t--)
{
now=; cnt=;
memset(visit,,sizeof(visit));
memset(visit1,,sizeof(visit1));
memset(head,,sizeof(head));
scanf("%d%d%d",&n,&m,&source);
printf("Case %d:\n",++cas);
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&x[i],&y[i],&v[i]);
add(x[i],y[i],v[i]);
add(y[i],x[i],v[i]);
}
bfs(source);
//printf("%d\n",cnt);
for(int i=;i<=m;i++)
{
printf("%d %d %d\n",x[i],y[i],ans[i]);
}
}
return ;
}

J  uva 12718 Dromicpalin Substrings

题目大意:一个字符串,有多少连续的子串可以重排成回文串

思路:显然能够重排成回文串的字符串奇数个字符的个数小于等于1,然后O(n^2)扫一遍就行

 #include<iostream>
#include<cstdio>
#include <math.h>
#include<algorithm>
#include<string.h>
#define maxn 100009
#define inf 100000
#define MOD (10000000000007ll)
using namespace std;
char ch[maxn];
int visit[];
int main()
{
int t,cas=;
scanf("%d",&t);
while(t--)
{
int ans=,odd;
scanf("%s",ch+);
int len=strlen(ch+);
for(int i=;i<=len;i++)
{
memset(visit,,sizeof(visit));
for(int j=i;j>=;j--)
{
if(i==j)
{
visit[ch[i]-'a']=;
odd=;
ans++;
}
else
{
visit[ch[j]-'a']=visit[ch[j]-'a']+;
if(visit[ch[j]-'a']&)odd++;
else odd--;
if(odd<=)ans++;
}
}
}
printf("Case %d: %d\n",++cas,ans);
}
return ;
}

2013   Dhaka 区域赛的更多相关文章

  1. 【2013南京区域赛】部分题解 hdu4802—4812

    上周末打了一场训练赛,题目是13年南京区域赛的 这场题目有好几个本来应该是我擅长的,但是可能是太久没做比赛了各种小错误代码写的也丑各种warusn trush搞得人很不爽 全场题之一的1002也没有想 ...

  2. 2013 ACM区域赛长沙 C Collision HDU 4793

    题意:在平面上0,0点,有一个半径为R的圆形区域,并且在0,0点固定着一个半径为RM(<R)的圆形障碍物,现在圆形区域外x,y,有一个半径 为r的,并且速度为vx,vy的硬币,如果硬币碰到了障碍 ...

  3. HDU 4793 Collision(2013长沙区域赛现场赛C题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4793 解题报告:在一个平面上有一个圆形medal,半径为Rm,圆心为(0,0),同时有一个圆形范围圆心 ...

  4. HDU 4791 Alice's Print Service(2013长沙区域赛现场赛A题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4791 解题报告:打印店提供打印纸张服务,需要收取费用,输入格式是s1 p1 s2 p2 s3 p3.. ...

  5. 2013 ACM区域赛长沙 H zoj 3733 (hdu 4798) Skycity

    题意:一个圆台,底面和顶面半径分别为R,r,然后高度为H,一共F层,每层高度一样,然后要在每层的天花板上贴方格玻璃,方格玻璃要满足以下几个条件: 方格玻璃面积不能小于S,且方格玻璃要围成一个正多边形, ...

  6. 2013 ACM区域赛长沙 I LIKE vs CANDLE(ZOJ3734) 很好的一道树形DP

    题意:一棵有根树,每个节点都有一个value值和属性(zan或是 CANDLE).你可以通过反转一些点的属性,反转一个点时候,它的整个子树都会被反转属性.有些点反转消耗代价为X,有些为Y.你的目标的是 ...

  7. 2013 ACM区域赛长沙 A Alice’s Print Service HDU 4791

    题意:就是一个打印分段收费政策,印的越多,单张价格越低,输入需要印刷的数量,求最小印刷费用一个细节就是,比当前还小的状态可能是最后几个. #include<stdio.h> #includ ...

  8. 2013 ACM区域赛长沙 K Pocket Cube hdu 4801

    题意:给了一个2*2的魔方..每步操作可以将任意一面翻转90度..现在问在N(<=7)步内.最多能翻出几面相同的. 直接打表模拟每种翻转情况 #include<cstdio> #in ...

  9. 【2013杭州区域赛】部分题解 hdu4770—4780

    1008: 题意: 有20W个数,每个数都在20W以内,现在有20W个询问,每次询问L,R区间内不会打架的数有多少个 定义两个数不互质 就会打架 解法: 脑洞很大的一道题,先要进行预处理,对每一个数预 ...

  10. 【2013长沙区域赛】部分题解 hdu4791—4801

    1001: 签到题,二分一下即可 代码: #include <set> #include <map> #include <cmath> #include <c ...

随机推荐

  1. Jenkins怎么启动和停止服务

    笔者没有把Jenkins配置到tomcat中,每次都是用命令行来启动Jenkins.但是遇到一个问题:Jenkins一直是开着的,想关闭也关闭不了.百度了一些资料,均不靠谱(必须吐槽一下百度).于是进 ...

  2. Caused by: java.lang.ClassNotFoundException: org.springframework.boot.system.JavaVersion

    Caused by: java.lang.ClassNotFoundException: org.springframework.boot.system.JavaVersion Invalid pro ...

  3. SAP CRM中间件下载equipment时遇到的一个错误

    在CRM开发系统上进行equipment下载,发现不工作.调试发现错误信息在下图定96行的WHEN default分支抛出的: MESSAGE ID 'AZ' ... 通过阅读源代码发现,ERP端支持 ...

  4. Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序

    文章的标题看似自相矛盾,然而我在"正确"二字上打了引号.我们来看一个例子,关于Java异常处理(Exception Handling)的一些知识点. 看下面这段程序.方法pleas ...

  5. MVC 学习小总结

    一般情况下新增字段首选现在数据库更新,然后再从数据库更新模型 第二选择是从模板添加字段更新数据库(面临删除所有数据可能,慎用) 第三是没有T4模板的前提下再模型完成操作然后修改model类防止mode ...

  6. 一个典型的flex布局,兼容性比较好

    html 代码: <body class="flex-wrap col-flex"> <header class="midCenter flex-wra ...

  7. Shell脚本中时间处理

    Shell脚本中时间处理 1.脚本内容 #!/bin/bash #环境变量 #设置环境变量和sql文件格式相符 source /etc/profileexport LD_LIBRARY_PATH=&q ...

  8. vue父子传值的具体应用

    最近我负责的项目已经迭代到第四版了,我作为一个没啥经验的小菜鸟也成长了很多. 在这一版开发开始之前,我老大就要求我在开发过程中尽量实现组件化,因此,我也遇到了很多问题,但基本都解决了,所以趁周末把这些 ...

  9. 51nod 1135 原根 (数论)

    题目链接 建议与上一篇欧拉函数介绍结合食用. 知识点:1.阶:a和模m互质,使a^d≡1(mod m)成立的最小正整数d称为a对模m的阶(指数)   例如: 2^2≡1(mod3),2对模3的阶为2; ...

  10. 欧拉函数φ(x)简要介绍及c++实现

    我还是很喜欢数论,从此吃喝不问,就此沉沦. 欧拉函数φ(x)的值为在[1,x)的区间内与x互质的数的个数 通式:    其中p1, p2……pn为x的所有质因数,x是不为0的整数.φ(1)=1. 注意 ...