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 ...
随机推荐
- if条件判断语句的不同
let number = ["a":1, "b":2, "c":3]; if let num = number["d"] ...
- 学习 AngularJS 第一天
AngularJS 高级程序设计 遇到问题:安装web服务器 var connect = require("connect"); connect.createServer( con ...
- 15个最新加速 Web 开发的框架和工具
我们为开发人员挑选了15个最新的 Web 开发框架,你肯定尝试一下这些新鲜的框架,有的可能略微复杂,有的提供了很多的配置选项,也有一些窗口小部件和界面交互的选择.他们将帮助你创建更优秀的网站,提供给用 ...
- 3D球状标签云(兼容IE8)
看见一个很有趣的标签云,3D球状,兼容 IE 8,亲测可用!其他版本没有测试.觉得挺有意思就拿来记录下来,学习学习,本文下方会放出我看的文章地址,先看一下效果: 接下来是代码,html + css + ...
- Find the Difference
Given two strings s and t which consist of only lowercase letters. String t is generated by random s ...
- 火狐谷歌浏览器Json查看插件
1.搜: Firefox的JSON插件 参考: Chrome/FireFox浏览器下处理JSON的插件_Bruce_新浪博客 JSONView :: Firefox 附加组件 但是后来去发现没用: 打 ...
- 《linux下sudo服务的使用》RHEL6
/bin/ 下放的二进制文件命令都是普通用户可以使用的 Sbin 下放的二进制文件命令都是超级用户root可以使用的 普通用户也想使用Sbin下的文件可以通过sudo来实现: 默认普通用户是不可以 ...
- C#的Socket简单实现消息发送
Socket一般用于网络之间的通信,在这里,实现的是服务端与客户端的简单消息通信.首先是客户端的搭建,一般步骤是先建立Socket绑定本地的IP和端口,并对远端连接进行连接进行监听,这里的监听一般开启 ...
- js 如何获取文本框中光标索引位置
function getTxt1CursorPosition(){ var oTxt1 = document.getElementById("txt1"); var cursurP ...
- 使用MongoDB的开源项目
根据谷歌的搜索结果筛选出来的. 统计应用 counlty https://count.ly/ mongopress 开源CMS系统 http://www.mongopress.org/ Rubedo ...