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 ...
随机推荐
- jquery 获得table 行数
1.获得Table总行数,分别使用了两种方法,结果不同:: 1).$("#table_Id").children("tr").length; 只能获得静态页面t ...
- WPF串口通信数据采集
使用WPF做的串口数据采集并动态显示在表格中的小程序,程序运行之后,自动打开串口,从COM1接收数据,并把接收到的数据进行处理显示在DataGrid中. 串口通信程序是从另外一个串口助手中扒的,去掉了 ...
- UI2_ButtonChess
// // AppDelegate.m // UI2_ButtonChess // // Created by zhangxueming on 15/6/30. // Copyright (c) 20 ...
- angularjs中的directive
正在初学angularjs中,在网上看到一篇详细讲解directive指令的文章,于是就记录在这里和大家一起分享 angular.module('docsTransclusionExample', [ ...
- Android基本知识
Android是Google公司于2007年发布的基于Linux内核的手机操作系统.应用层主要以java为编程语言,应用层分为两层,函数层(Library) 和虚拟机(Virtual).中间 ...
- MySQL 单表百万数据记录分页性能优化
文章转载自:http://www.cnblogs.com/lyroge/p/3837886.html 背景: 自己的一个网站,由于单表的数据记录高达了一百万条,造成数据访问很慢,Google分析的后台 ...
- 【Qt】Qt之Tab键切换焦点顺序【转】
简介 Qt的窗口部件按用户的习惯来处理键盘焦点.也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件. 焦点获取方式比较多,例如:鼠标点击.Tab键切换.快捷键.鼠标滚轮等. 习 ...
- jquery中简易tab切换
<!doctype html> <html> <head> <title>test</title> <meta content=&qu ...
- 2013-07-23 IT 要闻速记快想
### ========================= ###苹果的新动向今天华尔街日报称,苹果正在测试13英寸的大号iPad,以及更大屏幕的iPhone.而早在五月份,韩国资讯网站 ET New ...
- Delphi 中的全局快捷键+给指定窗体发送按键
[背景] 公司做视频影像采集,平时采集图像的时候都需要打开采集窗口,然后需要开着采集窗口来进行图像采集.同事问我能不能做一个全局快捷键,哪怕我没有操作也可以采集图像.说干就干,一直想做全局快捷键了,网 ...