HDU5211

思路:

倒着更新每个数的约数,更新完要把自己加上,以及1的情况?

//#include <bits/stdc++.h>
#include<iostream>
#include<map>
#include<cstdio>
#include<queue>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
//找最近倍数
const int N=1e4+10; map<int,int>mp;
void solve(int n,int id)
{
int q=sqrt(n);
if(n==1)
return;
mp[1]=id;
for(int i=2;i<=q;++i)
if(n%i==0)
{
mp[i]=id;
mp[n/i]=id;
}
}
int x[N];
int main()
{
int n;
while(~scanf("%d",&n))
{
int ans=0;
mp.clear();
for(int i=1;i<=n;i++)
scanf("%d",&x[i]);
for(int i=n;i>=1;i--)
{
solve(x[i],i);
ans+=mp[x[i]];
mp[x[i]]=i;
}
printf("%d\n",ans);
}
return 0;
}

HDU5228

注意本身牌可随意变换顺序= =、

//#include <bits/stdc++.h>
#include<iostream>
#include<map>
#include<cstdio>
#include<queue>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
char str[5];
int a[5][13];
int b[5][13];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(a,0,sizeof(a));
for(int i=0; i<5; i++)
{
scanf("%s",str);
int len=strlen(str);
if(len==3)
a[str[0]-'A'][(str[2]-'0')+(str[1]-'0')*10]=1;
else
a[str[0]-'A'][(str[1]-'0')]=1;
}
int ans=4;
for(int i=0; i<4; i++)
for(int j=1; j<=10; j++)
{
int num=0,k=j;
if(j==10)
{
b[num][0]=i;b[num++][1]=k;k++;
b[num][0]=i;b[num++][1]=k;k++;
b[num][0]=i;b[num++][1]=k;k++;
b[num][0]=i;b[num++][1]=k;k++;
b[num][0]=i;b[num++][1]=1;
}
else
{
b[num][0]=i;b[num++][1]=k;k++;
b[num][0]=i;b[num++][1]=k;k++;
b[num][0]=i;b[num++][1]=k;k++;
b[num][0]=i;b[num++][1]=k;k++;
b[num][0]=i;b[num++][1]=k;
}
int sum=0;
for(k=0; k<5; k++)
if(a[b[k][0]][b[k][1]]==1)
sum++;
ans=min(ans,5-sum);
}
printf("%d\n",ans);
}
return 0;
}

HDU5229

先手赢的话有两种:字符串相同或者字符串两个相加为奇数。

因为字符串相同的话,一定是偶数,所以只要找偶数的相同就好了,也就是说只要找相同就好了

先手赢的贡献=奇数长字符串个数*偶数长字符串个数 + 相同组合数

这里我用的是Trie树处理。

//#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<queue>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII; const int N=20000+10; struct Trie{
int num;
Trie *next[26];
};
Trie q[N*10],*root;
int tol,ans,n;
char s[200010]; Trie* Creat()
{
Trie *p=&q[tol++];
for(int i=0;i<26;i++)
p->next[i]=NULL;
p->num=0;
return p;
} int INS()
{
int len=strlen(s);
Trie* p=root;
for(int i=0;i<len;i++)
{
int index=s[i]-'a';
if(p->next[index]==NULL)
p->next[index]=Creat();
p=p->next[index];
}
p->num++;
return p->num;
} int gcd(int x, int y)
{
if (x%y) return gcd(y, x%y);
return y;
} int main()
{
int T;
scanf("%d",&T);
while(T--){
int len,even=0,odd=0;
scanf("%d",&n);
tol=ans=0;
root=Creat();
for(int i=0;i<n;i++)
{
scanf("%s",s);
int temp=INS();
if(temp>2)
{
ans-=(temp-1)*(temp-2)/2;
ans+=(temp-1)*temp/2;
}
else if(temp==2)
ans+=temp*(temp-1)/2;
len=strlen(s);
if(len%2)
odd++;
else
even++;
}
ans+=odd*even;
int pp=ans;
int qq=n*(n-1)/2;
int g=gcd(qq,pp);
if(pp==0)
puts("0/1");
else
printf("%d/%d\n",pp/g,qq/g);
}
return 0;
}

HDU5232

水题;

//#include <bits/stdc++.h>
#include<iostream>
#include<map>
#include<cstdio>
#include<queue>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
const int N=1e6+10; int a[105][105],ans;
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
ans=n*2;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for (int i=1;i<n;i++)
for (int j=i+1;j<=n;j++)
if (a[i][j]) ans+=2;
printf("%d\n",ans);
}
}

HDU5233

思路:

这道题可以二分,也能用map嵌套一个queue(很有可能mle),这里给出一个好的思想:预留;

对鸟每个位置的高度加一个预留位置,从最后往前枚举预处理一下,然后每次取完更新位置。

//#include <bits/stdc++.h>
#include<iostream>
#include<map>
#include<cstdio>
#include<queue>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
const int N=1e6+10; struct asd{
int id;
int next;
};
asd q[N];
map<int,int>mp;
int a[N],m,n,num; int main()
{
while(~scanf("%d%d",&n,&m)){
mp.clear();
num=0;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=n;i>=1;i--)
{
q[++num].id=i;
q[num].next=mp[a[i]];
mp[a[i]]=num;
}
for(int i=1;i<=m;i++){
int x,temp;
scanf("%d",&x);
temp=mp[x];
if(!temp)
puts("-1");
else
printf("%d\n",q[temp].id);
mp[x]=q[temp].next;
}
}
return 0;
}

Beatcoder#39+#41+#42的更多相关文章

  1. Effective STL 学习笔记 39 ~ 41

    Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  2. javascript 运行机制 事件循环 浏览器缓存 (慕课网 前段跳槽面试必备 4-1,4-2,4-3)

    4-1 渲染机制:-1-,什么是DOCTYPE及其作用?DTD(document type definition,文档类型定义)是一系列的语法规则,用来定义XML或(X)HTML的文件类型,浏览器会使 ...

  3. Unity Shaders and Effects Cookbook (4-1)(4-2)静态立方体贴图的创建与使用

    開始学习第4章 - 着色器的反射 看完了1.2节,来记录一下.反射主要是利用了 Cubemap 立方体贴图. 认识Cubemap 立方体贴图.就如同名字所说.在一个立方体上有6张图.就这样觉得吧. 假 ...

  4. Java程序性能优化Tip

    本博客是阅读<java time and space performance tips>这本小书后整理的读书笔记性质博客,增加了几个测试代码,代码可以在此下载:java时空间性能优化测试代 ...

  5. ASP.NET MVC下的四种验证编程方式【转】

    ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效 性,我们将针对参数的验证成为Model绑 ...

  6. Delphi实现HTMLWebBrowser实现HTML界面

    HTML的界面有以下特点:图文混排,格式灵活,可以包含Flash.声音和视频等,实现图文声像的多媒体界面,而且易于建立和维护.另外,HTML的显示环境一般机器上都具备,通常不需要安装额外的软件.当然, ...

  7. UVA 12113 Overlapping Squares

    题意: 总共有6个2*2的正方形,判断是否能够成所给的形状. 思路: 一个正方形总共有9种摆放方式,对于整个地图来说摆放方式总共有2的9次方种摆放方式.然后将地图用9*5的数组表示,正方形的位置用其8 ...

  8. 用WebBrowser实现HTML界面的应用和交互 good

    这一篇将继续讨论在使用delphi进行普通应用程序开发的时候,WebBrowser的具体应用,主要是针对使用其进行HTML界面开发的,这也是一篇我在网上找到的资料,大家如要转载,请尊重原作者的知识产权 ...

  9. pytho学习笔记---编码

    编解码 ASCII:1字节,0-255 GBK2313:常用的汉字,2万多个 GBK:对GBK2313的补充,支持藏文,2个字节表示一个汉字 big5:台湾,繁体字 unicode:万国码,2-4字节 ...

随机推荐

  1. FFMPEG SDK流媒体开发2---分离.mp4等输入流音视频而且进行解码输出

    对于FFMPEG SDK  提供的Demuxing 为我们实现多路复用  提供了非常多方便,以下的案案例 实现的是 分离一个媒体文件的音频 视频流 而且解码输出 到  不同的文件里. 对于音频被还原回 ...

  2. 【BZOJ3505】[Cqoi2014]数三角形 组合数

    [BZOJ3505][Cqoi2014]数三角形 Description 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. ...

  3. 九度OJ 1138:进制转换 (进制转换)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2388 解决:935 题目描述: 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出. 输入: 多组数据,每行为一个长度不超过30 ...

  4. 九度OJ 1115:数字求和 (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2396 解决:1507 题目描述: 给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少? 输入: 输入一行 ...

  5. JAVA工厂方法模式(Factory Method)

    1.普通工厂模式 普通工厂模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 1-1.建立Sender接口 public interface Sender { public void ...

  6. Visitor Pattern

    1.Visitor模式:将更新(变更)封装到一个类中(访问操作),并由待更改类提供一个接收接口,则可在不破坏类的前提下,为类提供增加新的新操作. 2.Visitor模式结构图 Visitor模式的关键 ...

  7. 阻止SSIS import excel时的默认行为

    为什么SSIS总是错误地获取Excel数据类型,以及如何解决它! 由Concentra发布 2013年5月15日 分享此页面 分享   发现Concentra的分析解决方案 Concentra的分析和 ...

  8. Codeforces Round #363 (Div. 2) B. One Bomb —— 技巧

    题目链接:http://codeforces.com/contest/699/problem/B 题解: 首先统计每行每列出现'*'的次数,以及'*'出现的总次数,得到r[n]和c[m]数组,以及su ...

  9. CSU - 1803 —— 数学题

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1803 Description  给出正整数 n 和 m,统计满足以下条件的正整数对 ...

  10. cassandra 存储list数组

    demo如下: CREATE TABLE users3 ( user_id text PRIMARY KEY, first_name text, last_name text, emails list ...