2014 Multi-University Training Contest 9
官方解题报告:http://blog.sina.com.cn/s/blog_6bddecdc0102uzwm.html
Boring Sum http://acm.hdu.edu.cn/showproblem.php?pid=4961
这个二分也过了,on更快些。
#include<cstdio>
#include<cstring>
#include<vector>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef __int64 LL;
const int M=;
int a[M];
LL b[M],c[M];
int val[M];
vector<int> yueshu[M];
int main(){
for(int i=;i<=;i++){
yueshu[i].clear();
for(int j=;j*j<=i;j++){
if(!(i%j)){
yueshu[i].push_back(j);
if(i/j!=j)
yueshu[i].push_back(i/j);
}
}
}
int n;
while(~scanf("%d",&n),n){
for(int i=;i<n;i++){
scanf("%d",&a[i]);
}
mt(val,);
for(int i=n-;i>=;i--){
int now=a[i];
if(!val[now]){
b[i]=now;
}
else{
b[i]=val[now];
}
int len=yueshu[now].size();
for(int j=;j<len;j++){
int yue=yueshu[now][j];
val[yue]=now;
}
}
mt(val,);
for(int i=;i<n;i++){
int now=a[i];
if(!val[now]){
c[i]=now;
}
else{
c[i]=val[now];
}
int len=yueshu[now].size();
for(int j=;j<len;j++){
int yue=yueshu[now][j];
val[yue]=now;
}
}
LL ans=;
for(int i=;i<n;i++){
ans+=b[i]*c[i];
}
printf("%I64d\n",ans);
}
return ;
}
Fast Matrix Calculation http://acm.hdu.edu.cn/showproblem.php?pid=4965
ababab矩阵等于a*(ba)^2*b,ba是kk的矩阵复杂度就k^3 log(n^2)
#include<cstdio>
#include<cstring>
typedef __int64 LL;
const int mod=;
const int M=;
class Matrix{
typedef int typev;
public:
typev val[M][M];
void zero(){
memset(val,,sizeof(val));
}
void unit(){
zero();
for(int i=;i<M;i++) val[i][i]=;
}
}D;
int LEN;
Matrix operator * (const Matrix &a,const Matrix &b){
Matrix tmp;
tmp.zero();
for(int k=;k<LEN;k++)
for(int i=;i<LEN;i++){
if(a.val[i][k])
for(int j=;j<LEN;j++){
tmp.val[i][j]+=a.val[i][k]*b.val[k][j];
tmp.val[i][j]%=mod;
}
}
return tmp;
}
Matrix operator ^ (Matrix &a,int p){
Matrix tmp;
tmp.unit();
while(p){
if(p&) tmp=tmp*a;
a=a*a;
p>>=;
}
return tmp;
}
struct mat {
int n,m;
int data[][];
}A,B,C,E;
class MatrixOp {
public:
int mul(mat& c,const mat& a,const mat& b) { //c=a*b
int i,j,k;
if (a.m!=b.n) return ;
c.n=a.n,c.m=b.m;
for (i=; i<c.n; i++)
for (j=; j<c.m; j++)
for (c.data[i][j]=k=; k<a.m; k++)
c.data[i][j]+=a.data[i][k]*b.data[k][j];
return ;
}
} gx;
int main(){
int N,K;
while(~scanf("%d%d",&N,&K),N|K){
A.n=N;
A.m=K;
B.n=K;
B.m=N;
for(int i=;i<N;i++){
for(int j=;j<K;j++){
scanf("%d",&A.data[i][j]);
}
}
for(int i=;i<K;i++){
for(int j=;j<N;j++){
scanf("%d",&B.data[i][j]);
}
}
gx.mul(C,B,A);
LEN=C.n;
for(int i=;i<C.n;i++){
for(int j=;j<C.m;j++){
D.val[i][j]=C.data[i][j];
}
}
D=D^(N*N-);
for(int i=;i<C.n;i++){
for(int j=;j<C.m;j++){
C.data[i][j]=D.val[i][j];
}
}
gx.mul(E,A,C);
gx.mul(C,E,B);
LL ans=;
for(int i=;i<C.n;i++){
for(int j=;j<C.m;j++){
ans+=C.data[i][j]%;
}
}
printf("%I64d\n",ans);
}
return ;
}
Improving the GPA http://acm.hdu.edu.cn/showproblem.php?pid=4968
4个for循环,突出一个暴力0ms,硬是要写dfs,当练习了,15ms。
#include<cstdio>
double big,sma;
int num[],judge;
int tobig[]={,,,,};
int tosma[]={,,,,};
double val[]={4.0,3.5,3.0,2.5,2.0};
void dfs(int id,int sum){
if(id==){
num[]=sum;
int bigsum=,smasum=;
for(int i=;i<;i++){
bigsum+=tobig[i]*num[i];
smasum+=tosma[i]*num[i];
}
if(smasum<=judge&&judge<=bigsum){
double now=;
for(int i=;i<;i++){
now+=val[i]*num[i];
}
big=big>now?big:now;
sma=sma<now?sma:now;
}
return ;
}
for(int i=;i<=sum;i++){
num[id]=i;
dfs(id+,sum-i);
}
}
int main(){
int t,n,avg;
while(~scanf("%d",&t)){
while(t--){
scanf("%d%d",&avg,&n);
sma=1e9;
big=;
judge=avg*n;
dfs(,n);
printf("%.4f %.4f\n",sma/n,big/n);
}
}
return ;
}
Killing Monsters http://acm.hdu.edu.cn/showproblem.php?pid=4970
这个题目是来卡nlogn的。左++右--处理离线区间覆盖问题。on。
#include<cstdio>
#include<cstring>
#define mt(a,b) memset(a,b,sizeof(a))
typedef __int64 LL;
const int M=;
LL lazy[M],sum[M];
int main(){
int n,m,x,y,d;
while(~scanf("%d",&n),n){
mt(lazy,);
scanf("%d",&m);
while(m--){
scanf("%d%d%d",&x,&y,&d);
lazy[x]+=d;
lazy[y+]-=d;
}
LL now=;
for(int i=;i<=n;i++){
now+=lazy[i];
sum[i]=now;
}
for(int i=n-;i>=;i--){
sum[i]+=sum[i+];
}
scanf("%d",&m);
LL h;
int ans=;
while(m--){
scanf("%I64d%d",&h,&x);
if(h>sum[x]) ans++;
}
printf("%d\n",ans);
}
return ;
}
end
2014 Multi-University Training Contest 9的更多相关文章
- HDU4888 Redraw Beautiful Drawings(2014 Multi-University Training Contest 3)
Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- hdu 4946 2014 Multi-University Training Contest 8
Area of Mushroom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2014 Multi-University Training Contest 9#11
2014 Multi-University Training Contest 9#11 Killing MonstersTime Limit: 2000/1000 MS (Java/Others) ...
- 2014 Multi-University Training Contest 9#6
2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...
- 2014 Multi-University Training Contest 1/HDU4861_Couple doubi(数论/法)
解题报告 两人轮流取球,大的人赢,,, 贴官方题解,,,反正我看不懂.,,先留着理解 关于费马小定理 关于原根 找规律找到的,,,sad,,, 非常easy找到循环节为p-1,每个循环节中有一个非零的 ...
- 2014 Multi-University Training Contest 1/HDU4864_Task(贪心)
解题报告 题意,有n个机器.m个任务. 每一个机器至多能完毕一个任务.对于每一个机器,有一个最大执行时间Ti和等级Li,对于每一个任务,也有一个执行时间Tj和等级Lj.仅仅有当Ti>=Tj且Li ...
- hdu 4937 2014 Multi-University Training Contest 7 1003
Lucky Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) T ...
- hdu 4941 2014 Multi-University Training Contest 7 1007
Magical Forest Time Limit: 24000/12000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- hdu 4939 2014 Multi-University Training Contest 7 1005
Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
- hdu 4930 Fighting the Landlords--2014 Multi-University Training Contest 6
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4930 Fighting the Landlords Time Limit: 2000/1000 MS ...
随机推荐
- PHP static静态局部变量和静态全局变量总结
1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它.倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值 2.静态局部变量只会初始化一次 3.静态属 ...
- JavaScript学习笔记 - 进阶篇(1)- JS基础语法
前言 JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) JS进阶篇学习什么? 在JavaS ...
- poj 3268 Silver Cow Party
S ...
- POJ 1384
求猜存钱罐中至少有多少钱.容易知道金币总的重量,接着背包. #include<cstdio> #include<iostream> using namespace std; # ...
- setuid函数解析
在讨论这个setuid函数之前,我们首先要了解的一个东西就是内核为每个进程维护的三个UID值.这三个UID分别是实际用户ID(real uid).有效用户ID(effective uid).保存的设置 ...
- Spring MVC的启动过程
一.概述 下面一个基本的运用springMVC的的web.xml的配置,这里要注意两个地方,一个是ContextLoadListener,一个是DispatcherServlet.web容器正是通过这 ...
- DIV_ROUND_UP(x,y)实现x/y向上取整
#define DIV_ROUND_UP(x,y) (((x) + ((y) - 1)) / (y)) 1.问题 x.y都是整数,且x > 1, y > 1,求 x / y的向上取整,即: ...
- 自定义视图(继承View)
前言 Android提供了丰富的控件,但是有时候还是不能满足自己的需求,这时候就需要自定义视图了,自定义视图分为几种,一种为继承为View的,一种为继承于ViewGroup的.继承于View的需要我们 ...
- vim配置python开发环境
vim配置python开发环境 一.安装vim sudo apt-get install vim 二.vim基础配置 #Centos6.5 /usr/share/vim/vim72 vi /etc/v ...
- RGB颜色二值化
原理:RGB颜色根据计算'灰度'的公式,可以转化为黑白2种颜色,实现二值化. 业务场景的应用:可以根据背景颜色,取一个黑色或白色的颜色,作为背景色上的文案字体颜色 具体代码: function get ...