2013 ACM/ICPC Asia Regional Online —— Warmup
1003 Rotation Lock Puzzle
找出每一圈中的最大值即可
代码如下:
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#define ll __int64
#define pi acos(-1.0)
#define MAX 50000
using namespace std;
ll a[][],b[];
vector<ll>q;
int main(){
int i,j,k,m,n;
while(scanf("%d",&n)&&n){
for(i=;i<=n;i++)
for(j=;j<=n;j++)
scanf("%I64d",&a[i][j]);
ll ans=a[n/+][n/+];
int num=;
m=n-;
for(k=;k<=n/;k++){
memset(b,,sizeof(b));
q.clear();
for(i=j=k;j<=n-k+;j++)
q.push_back(a[i][j]);
for(j--,i++;i<=n-k+;i++)
q.push_back(a[i][j]);
for(i--,j--;j>=k;j--)
q.push_back(a[i][j]);
for(i--,j++;i>k;i--)
q.push_back(a[i][j]);
for(i=;i<q.size();i++){
b[i%m]+=q[i];
}
ll sum=-;
int num1=;
for(i=;i<m;i++){
if(b[i]>sum){
sum=b[i];
if(m-i<i) num1=m-i;
else num1=i;
}
if(b[i]==sum){
if(m-i<num1) num1=m-i;
else if(i<num1) num1=i;
}
}
ans+=sum;
num+=num1;
m-=;
}
printf("%I64d %d\n",ans,num);
}
return ;
}
1005 Balls Rearrangement
多校联合的原题
代码如下:
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#include<stdlib.h>
#define ll __int64
using namespace std;
ll gcd(ll a,ll b){
ll t;
if(a<b) swap(a,b);
while(b){
t=a;
a=b;
b=t%b;
}
return a;
}
ll lcm(ll a,ll b){
return a/gcd(a,b)*b;
}
ll cal(ll n,ll a,ll b){
ll ans=;
ll temp=;
ll x=,y=,i=;
while (i<n){
temp = min(a-x,b-y);
if (i+temp>n) temp=n-i;
ans += temp*abs(x-y);
x = (x+temp)%a;
y = (y+temp)%b;
i += temp;
}
return ans;
}
int main(){
int t;
ll n,a,b,c,ans;
cin>>t;
while (t--){
scanf("%I64d%I64d%I64d",&n,&a,&b);
if(a==b){
cout<<<<endl;
continue;
}
c=lcm(a,b);
if (c>=n) ans = cal(n,a,b);
else ans = cal(c,a,b)*(n/c)+cal(n%c,a,b);
printf("%I64d\n",ans);
}
return ;
}
1007 Hamming Distance
随机选取2个点即可,坑……
代码如下:
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#define ll __int64
#define pi acos(-1.0)
#define MAX 50000
using namespace std;
char str[][];
int fun(char a)
{
if(a>='A'&&a<='Z') return a-'A'+;
return a-'';
}
int cal(char a[],char b[])
{
int num=;
for(int i=;i<;i++){
int s=fun(a[i]);
int p=fun(b[i]);
for(int j=;j<;j++){
num+=(s%!=p%);
s/=;
p/=;
}
}
return num;
}
int main(){
int t,i,j,k,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(i=;i<n;i++){
scanf("%s",&str[i]);
}
int num=;
for(i=;i<=;i++){
j=rand()%n;
k=rand()%n;
while(j==k) k=rand()%n;
int a=cal(str[j],str[k]);
if(a<num) num=a;
}
printf("%d\n",num);
}
return ;
}
1008 Permutation
这题和hdu 3092一样,只不过这题要求路径。
大致思路用筛法求质数,当尽可能是质数时LCM最大,转化为背包问题求。
代码如下:
#include<cstdio>
#include<vector>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#define M 10005
using namespace std;
double dp[M];
vector<int> p[M];
int prime[M],cnt,n;
bool f[M];
void init()
{
cnt=;
for(int i=;i<M;i++){
if(!f[i]) prime[cnt++]=i;
for(int j=;j<cnt&&i*prime[j]<M;j++){
f[i*prime[j]]=;
if(i%prime[j]==) break;
}
}
}
void solve()
{
memset(dp,,sizeof(dp));
for(int i=;i<=n;i++) p[i].clear();
for(int i=;i<cnt&&prime[i]<=n;i++){
double t=log(prime[i]);
for(int j=n;j>=prime[i];j--){
for(int k=prime[i],num=;k<=j;k*=prime[i],num++)
if(dp[j-k]+t*num>dp[j]){
dp[j]=dp[j-k]+t*num;
p[j]=p[j-k];
p[j].push_back(k);
}
}
}
}
int main()
{
int t,sum;
init();
scanf("%d",&t);
while(t--){
scanf("%d",&n);
solve();
sum=;
for(int i=;i<p[n].size();i++) sum+=p[n][i];
sum=n-sum;
while(sum--) p[n].push_back();
int s=;
sort(p[n].begin(),p[n].end());
for(int i=;i<p[n].size();i++){
int temp=s++;
for(int j=;j<p[n][i];j++)
printf("%d ",s++);
if(i==p[n].size()-) printf("%d\n",temp);
else printf("%d ",temp);
}
}
return ;
}
1010 Difference Between Primes
注意细节就可以了
代码如下:
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#define ll __int64
#define pi acos(-1.0)
#define MAX 50000
using namespace std;
bool f[];
int prime[],cnt;
void init()
{
cnt=;
f[]=;
for(int i=;i<=;i++){
if(f[i]==) prime[cnt++]=i;
for(int j=;j<cnt&&i*prime[j]<=;j++){
f[i*prime[j]]=;
if(i%prime[j]==) break;
}
}
}
int main(){
init();
int i,t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
bool flag=;
for(i=;i<cnt;i++){
if(prime[i]+n>&&f[prime[i]+n]==){
flag=;
break;
}
}
if(flag) printf("%d %d\n",prime[i]+n,prime[i]);
else puts("FAIL");
}
return ;
}
2013 ACM/ICPC Asia Regional Online —— Warmup的更多相关文章
- hduoj 4710 Balls Rearrangement 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4710 Balls Rearrangement Time Limit: 6000/3000 MS (Java/Ot ...
- hduoj 4708 Rotation Lock Puzzle 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4708 Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/O ...
- hduoj 4715 Difference Between Primes 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4715 Difference Between Primes Time Limit: 2000/1000 MS (J ...
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- hduoj 4706 Herding 2013 ACM/ICPC Asia Regional Online —— Warmup
hduoj 4706 Children's Day 2013 ACM/ICPC Asia Regional Online —— Warmup Herding Time Limit: 2000/1000 ...
- hduoj 4707 Pet 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4707 Pet Time Limit: 4000/2000 MS (Java/Others) Memory ...
- hduoj 4706 Children's Day 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4706 Children's Day Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 4714 Tree2cycle(树状DP)(2013 ACM/ICPC Asia Regional Online ―― Warmup)
Description A tree with N nodes and N-1 edges is given. To connect or disconnect one edge, we need 1 ...
- HDU 4749 Parade Show 2013 ACM/ICPC Asia Regional Nanjing Online
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4749 题目大意:给一个原序列N,再给出一个序列M,问从N中一共可以找出多少个长度为m的序列,序列中的数 ...
随机推荐
- gravity、layout_gravity、ayout_weight 区别及用法
layout_gravity 表示组件自身在父组件中的位置. gravity 表示组件的子组件在组件中的位置. weight 意思是权重.比重,即当前控件在画布中所占的空间 ...
- golang反射初试
golang反射来自Go AST(Abstract Syntax Tree). reflect操作更多像traverse AST. t := reflect.TypeOf(obj) 使用TypeOf( ...
- Ubuntu无值守安装mysql
1. 使用apt-get -d install 命令下载安装包, 其中-d表示下载不安装. 下载后的deb包放在/var/cache/apt/archives目录 2. 使用dpkg-preconfi ...
- meteor icons & splash配置
ionic resources http://ionicframework.com/docs/cli/icon-splashscreen.html 用一条指令生成ionic生需Icons & ...
- 关于Filezilla是否支持sftp
我们知道filezilla是一个开源的ftp的解决方案,它提供了客户端和服务器端,支持的fpt, sftp, ftps,这是你可以从wiki中看到的关于filezilla的介绍,但是这里需要澄清一点就 ...
- Qt之SQL数据库
---------------------------- http://blog.csdn.net/reborntercel/article/details/6991147 http://blog.c ...
- C++中栈的出栈,入栈规则:A,B,C,D,E
考题: 栈底至栈顶一次存放元素 ABCD 在第五个元素E入栈之前 栈中元素可以出栈,则出栈序列可能是_____a d___________. a. ABCED b. DBCEA c. CD ...
- Js作用域与作用域链详解[转]
一直对Js的作用域有点迷糊,今天偶然读到JavaScript权威指南,立马被吸引住了,写的真不错.我看的是第六版本,相当的厚,大概1000多页,Js博大精深,要熟悉精通需要大毅力大功夫. 一:函数作 ...
- Sqrt(x)
Implement int sqrt(int x). Compute and return the square root of x. 参考:http://standalone.iteye.com/b ...
- 软件工程课堂练习——N层电梯只停一层求乘客爬楼层数最少(基本方法+优化方法)
题目: •石家庄铁道大学基础大楼一共有四部电梯,每层都有人上下,电梯在每层都停.信1201-1班的张一东觉得在每层都停觉得不耐烦. •由于楼层不太高,在上下课高峰期时时,电梯从一层上行,但只允许停在某 ...