Beatcoder#39+#41+#42
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的更多相关文章
- Effective STL 学习笔记 39 ~ 41
Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- javascript 运行机制 事件循环 浏览器缓存 (慕课网 前段跳槽面试必备 4-1,4-2,4-3)
4-1 渲染机制:-1-,什么是DOCTYPE及其作用?DTD(document type definition,文档类型定义)是一系列的语法规则,用来定义XML或(X)HTML的文件类型,浏览器会使 ...
- Unity Shaders and Effects Cookbook (4-1)(4-2)静态立方体贴图的创建与使用
開始学习第4章 - 着色器的反射 看完了1.2节,来记录一下.反射主要是利用了 Cubemap 立方体贴图. 认识Cubemap 立方体贴图.就如同名字所说.在一个立方体上有6张图.就这样觉得吧. 假 ...
- Java程序性能优化Tip
本博客是阅读<java time and space performance tips>这本小书后整理的读书笔记性质博客,增加了几个测试代码,代码可以在此下载:java时空间性能优化测试代 ...
- ASP.NET MVC下的四种验证编程方式【转】
ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效 性,我们将针对参数的验证成为Model绑 ...
- Delphi实现HTMLWebBrowser实现HTML界面
HTML的界面有以下特点:图文混排,格式灵活,可以包含Flash.声音和视频等,实现图文声像的多媒体界面,而且易于建立和维护.另外,HTML的显示环境一般机器上都具备,通常不需要安装额外的软件.当然, ...
- UVA 12113 Overlapping Squares
题意: 总共有6个2*2的正方形,判断是否能够成所给的形状. 思路: 一个正方形总共有9种摆放方式,对于整个地图来说摆放方式总共有2的9次方种摆放方式.然后将地图用9*5的数组表示,正方形的位置用其8 ...
- 用WebBrowser实现HTML界面的应用和交互 good
这一篇将继续讨论在使用delphi进行普通应用程序开发的时候,WebBrowser的具体应用,主要是针对使用其进行HTML界面开发的,这也是一篇我在网上找到的资料,大家如要转载,请尊重原作者的知识产权 ...
- pytho学习笔记---编码
编解码 ASCII:1字节,0-255 GBK2313:常用的汉字,2万多个 GBK:对GBK2313的补充,支持藏文,2个字节表示一个汉字 big5:台湾,繁体字 unicode:万国码,2-4字节 ...
随机推荐
- C语言宏定义时#(井号)和##(双井号)作用
#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号. #define example(instr) prin ...
- javaScript中innerHTML,innerText,outerHTML,outerText的区别
开头说下innerText和outerText只在chrome浏览器中有效 定义和用法 innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML,包括标签. 来看代码 <!DOC ...
- 简述C++中的多态机制
前言 封装性,继承性,多态性是面向对象语言的三大特性.其中封装,继承好理解,而多态的概念让许多初学者感到困惑.本文将讲述C++中多态的概念以及多态的实现机制. 什么是多态? 多态就是多种形态,就是许多 ...
- iOS开发之──传感器使用
本文转载至 http://mobile.51cto.com/iphone-423219.htm 在实际的应用开发中,会用到传感器,下面首先介绍一下iphone4的传感器,然后对一些传感器的开发的API ...
- 【BZOJ3252】攻略 DFS序+线段树(模拟费用流)
[BZOJ3252]攻略 Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏. 今天他得到了一款新游戏<XX半岛> ...
- SAM4E单片机之旅——10、UART与MCK之PLL
为使用更更高的波特率,则需要更更高的外设时钟的频率.这个时候就需要用到锁相环(PLL)了.锁相环可以对输入的时钟进行分频.升频后进行输出.MCK可以使用的锁相环为PLLA,而PLLA的输入时钟为MAI ...
- memcached和一致性hash算法
1 一致性hash算法的一致性 这里的一致性指的是该算法可以保持memcached和数据库中的数据的一致性. 2 什么是一致性hash算法 2.1 为什么需要一致性hash算法 现在有大量的key v ...
- rule-based optimizer cost-based optimizer
SQL processing uses the following main components to execute a SQL query: The Parser checks both syn ...
- ssemble JavaBeans components into an application without having to write any code
https://docs.oracle.com/javase/tutorial/javabeans/ https://docs.oracle.com/javase/tutorial/javabeans ...
- UIView封装动画--iOS 利用系统提供方法来做弹性运动
iOS 利用系统提供方法来做弹性运动 /*创建弹性动画 damping:阻尼,范围0-1,阻尼越接近于0,弹性效果越明显 velocity:弹性复位的速度 */ [UIView animateWith ...