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的更多相关文章

  1. 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 ...

  2. 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 ...

  3. 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 ...

  4. 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 ...

  5. 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 ...

  6. 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 ...

  7. hduoj 4706 Children&#39;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) ...

  8. 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 ...

  9. HDU 4749 Parade Show 2013 ACM/ICPC Asia Regional Nanjing Online

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4749 题目大意:给一个原序列N,再给出一个序列M,问从N中一共可以找出多少个长度为m的序列,序列中的数 ...

随机推荐

  1. hdu 2425 Hiking Trip

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2425 Hiking Trip Description Hiking in the mountains ...

  2. CPU制造工艺 级选来决定cpu等级

    CPU制造工艺 编辑 CPU制造工艺又叫做CPU制程,它的先进与否决定了CPU的性能优劣.CPU的制造是一项极为复杂的过程,当今世上只有少数几家厂商具备研发和生产CPU的能力.CPU的发展史也可以看作 ...

  3. UIAlertController——之Block回调

    iOS8.0之后出现的提示框 =.=,比自己去改block回调要好.

  4. 【分享】生成Revit扩展的addin文件小工具

    在进行Revit二次开发的时候,加载命令/程序使用的是添加addin文件的方式,每次都需要手动的写,而且参数有好多,很不方便.于是乎我有了写一个小工具的想法.进过研究终于完成了.主要使用RevitAd ...

  5. power tool 强制撤销

    安装以后,使用有权限的账号,最好在tfs服务器安装并操作使用admin账号登陆项目,在团队资源管理器,源码管理中选择需要撤销的文件父文件夹,选Find in Source Control=>St ...

  6. SharePoint 2010 用xsl文件定制列表样式

    有时候我们不希望列表用默认的方式显示,要我们自定义的方式定制.其中有一种方式是使用xsl文件. 在AllItems.aspx页面中,列表是以webpart的形式显示在页面上的,webpart类型是Xs ...

  7. vs2010运行C程序时,运行结果窗口一闪而过

    摘要:vs2010运行C程序时,运行结果窗口一闪而过; ------------------------------------------------------------ Ctrl F5测试运行 ...

  8. 使用Groovy构建自己的脚本环境

    场景 在进行Web服务端开发的时候,发布前通常需要测试一遍.对于一个大一点的项目,最好的办法是写个自动化测试程序. 以Groovy为例,写测试代码之前通常的有如下几个操作 引用相关的类库 import ...

  9. 为什么匿名内部类参数必须为final类型(转载)

    为什么匿名内部类参数必须为final类型转自于:http://feiyeguohai.iteye.com/blog/1500108 1)  从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类 ...

  10. 设计模式之适配器模式(Adapter)

    适配器模式原理:适配器模式属于结构型模式,主要作用是完成功能的转换, 1.通过一个类继承目标类. 2.需要适配的类 3.适配器 代码如下: #include <iostream> usin ...