FZU月赛20160416 ABEF
Accept: 302 Submit: 442
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
表弟今天的英语作业是练习书写前7个英文字母。勤奋的他写了一页、一页、又一页……
Yellowstar想知道表弟总共写了多少笔划。
(附:英文字母标准手写体教程:
)
Input
输入第一行为一个正整数T。
接下去T行,每行为前七个英文字母的大小写形式组成的非空字符串,表示一份作业。
T<=20,每行长度<=100。
Output
对于每份作业,输出一行,表示其中的笔划总数。
Sample Input
Sample Output
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 1e5 + ;
int r1[] = {, , , , , , };
int r2[] = {, , , , , , };
int main() {
// freopen("in", "r", stdin);
int _; scanf("%d", &_);
while(_ --) {
int ans = ;
char s[];
scanf("%s", s);
int ls = strlen(s);
for(int i = ; i < ls; ++i) {
if(s[i] >= 'A' && s[i] <= 'Z') ans += r1[ s[i] - 'A' ];
else ans += r2[ s[i] - 'a' ];
}
printf("%d\n", ans);
}
return ;
}
Accept: 14 Submit: 362
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
为了帮助正在学习除法的表弟,Yellowstar想制作一个计算器,它能给出整数除法的完整结果。
具体来说,给出两个整数m、n:
如果m/n是整数或有限小数,那么直接输出它的值。
如果m/n是无限小数,那么输出小数点后到第一个最小循环节为止,并用”()”把最小循环节括起来。
Input
输入第一行为一个正整数T,表示有T组测试数据。
接下去T行,每行为一组数据。每行两个正整数m、n,含义如上。
T<=15,1<=m,n<=2^31-1。
Output
每个样例一行,输出答案。
注意计算器的屏幕最多能输出1 000 000个字符(包括小数点和括号,不包括结尾的换行),如果某组数据的结果超过了这个长度,那么该组数据输出”Too long”而不是原答案。
Sample Input
Sample Output
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
#include <set>
using namespace std;
typedef long long ll;
const int N = 2e6 + ;
const int mod = ;
char dig[N];
struct hashmap
{
int key[N], p[N];
int head[mod], nx[N], tot;
void init()
{
memset(head, -, sizeof head);
tot = ;
}
void ins(int x, int pos)
{
int h = x % mod;
key[tot] = x;
p[tot] = pos;
nx[tot] = head[h];
head[h] = tot++;
}
int query(int x)
{
int h = x % mod;
for(int i = head[h]; ~i; i = nx[i])
{
if(key[i] == x) return p[i];
}
return -;
}
};
hashmap myhash;
void solve(int x, int y)
{
int num = , px, py;
int qeu = x / y;
sprintf(dig, "%d", qeu);
num = strlen(dig);
int rem = x - qeu * y;
int flag = ;
if(rem == ) puts(dig);
else
{
myhash.init();
myhash.ins(rem, num + );
dig[num++] = '.';
while(num < 1e6 + )
{
qeu = (ll)rem * / y;
rem = (ll)rem * - qeu * y;
dig[num++] = qeu + ;
if(rem == ) break;
int v = myhash.query(rem);
if(v != -)
{
px = v;
flag = ;
break;
}
myhash.ins(rem, num);
}
dig[num] = ;
if(num >= 1e6) puts("Too long");
else if(flag == ) {
puts(dig);
}else {
for(int i = ; i < num; ++i) {
if(i == px) printf("(");
printf("%c", dig[i]);
}
puts(")");
}
}
}
int main()
{
int _;
scanf("%d", &_);
while(_ --)
{
int m, n;
scanf("%d%d", &m, &n);
solve(m, n);
}
}
Accept: 37 Submit: 600
Time Limit: 2000 mSec Memory Limit : 32768 KB
Problem Description
给定一个含有n个数字的数列,每个数字都有一个值a[i](下标从1开始)。定义第i个数字和第j个数字间的距离dis(i,j)=abs(i-j)。
接下来给出q个询问,每次询问一个区间[l,r],要求求出一对数字(i,j)(l<=i<=j<=r),使得a[i]=a[j]并且dis(i,j)最大,由于这样的数对可能有多个,因此答案只要输出dis。
Input
题目包含多组数据
每组数据第一行一个数n
第二行n个数字,表示数列a
第三行一个数字q,表示询问个数
接下来q行,每行两个数l,r,表示询问
N<=10^5
Q<=10^4
1<=a[i]<=10^3
1<=l<=r<=n
Output
每个询问输出一个数组dis
Sample Input
Sample Output
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <vector>
#include <set>
#include <map>
using namespace std;
const int N = 1e5 + ;
struct Query {
int l, r, id;
Query() {}
Query(int l, int r, int id) : l(l), r(r), id(id) {}
};
vector<int> V[];
Query sl[N], sr[N], Q[N];
int n, q;
int a[N], L[N], R[N], ans[N];
void read() {
for(int i = ; i < n; ++i) scanf("%d", &a[i]);
scanf("%d", &q);
int l, r;
for(int i = ; i < q; ++i) {
scanf("%d%d", &l, &r);
--l; --r;
Q[i] = Query(l, r, i);
sl[i] = sr[i] = Q[i];
}
}
int cmp1(Query a, Query b) { return a.l < b.l; }
int cmp2(Query a, Query b) { return a.r > b.r; }
void init() {
for(int i = ; i <= ; ++i) V[i].clear();
memset(ans, , sizeof ans);
sort(sl, sl + q, cmp1);
sort(sr, sr + q, cmp2);
for(int i = ; i < n; ++i) V[ a[i] ].push_back(i);
} void solve() {
for(int i = ; i <= ; ++i) {
int k1 = , k2 = , k;
int sx = V[i].size();
if(sx == ) continue; for(int j = ; j < sx; ++j)
{
int p = V[i][j];
for(k = k1; k1 < q && k < q; ++k) if(p >= sl[k].l) L[ sl[k].id ] = p; else break;
k1 = k;
}
for(int j = sx-; j >= ; --j)
{
int p = V[i][j];
for(k = k2; k2 < q && k < q; ++k) if(p <= sr[k].r) R[ sr[k].id ] = p; else break;
k2 = k;
}
for(int k = k1; k < q; ++k) L[ sl[k].id ] = n;
for(int k = k2; k < q; ++k) R[ sr[k].id ] = ; for(int k = ; k < q; ++k) if(L[k] >= Q[k].l && L[k] <= Q[k].r && R[k] >= Q[k].l && R[k] <= Q[k].r)
ans[k] = max(ans[k], R[k] - L[k]);
}
}
int main() {
// freopen("in.txt", "r", stdin);
while(~scanf("%d", &n)) {
read();
init();
solve();
for(int i = ; i < q; ++i) printf("%d\n", ans[i]);
}
return ;
}
Accept: 113 Submit: 523
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
一天Bob收到一封信。Bob知道瓦罗兰大陆的邮局从A城市送信到B城市,乐意使用从A城市到B城市的邮票(A, B),或者使用从B城市到A城市的邮票(A, B),但是由于瓦罗兰大陆的城市繁多,所以并不是所有城市之间都能直接发送接收信件,换句话说,某两个城市想要通行邮件必须经过其他城市才行,但是邮局发送一次邮件的路途中从不会通过一座城市两次。
现在在Bob的信封上有N个邮票,Bob想知道这封信件是如何周转到达他手中的。
Input
题目有多组数据。
每组数据第一行包含一个整数,N ( 2 <= N <= 1e5),代表信件上的N封邮票。
接下有N行数据。第 i 行数据包含两个整数 ui,vi,代表从城市ui发送到城市vi的邮票,ui代表城市的编号,每个城市的编号互不相同,(ui != vi ,1 <= ui, vi <= 1e9)。
输入数据保证有解。
Output
每组样例的结果输出为一行, 每行包括N+1个被空格隔开的整数,代表着信件依次经过的城市编号。
若有多组可行答案,输出字典序最小的那组答案。
Sample Input
Sample Output
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 1e5 + ;
int a[N], U[N], V[N];
int vis[N];
vector<int> g[N << ];
int main() {
// freopen("in", "r", stdin);
int n;
while(~scanf("%d", &n)) {
memset(vis, , sizeof vis);
for(int i = ; i <= n; ++i) g[i].clear(); int tot = ;
for(int i = ; i < n; ++i) {
scanf("%d%d", &U[i], &V[i]);
a[tot++] = U[i];
a[tot++] = V[i];
}
sort(a, a + tot);
tot = unique(a, a + tot) - a;
for(int i = ; i < n; ++i) {
int u = lower_bound(a, a + tot, U[i]) - a, v = lower_bound(a, a + tot, V[i]) - a;
g[u].push_back(v);
g[v].push_back(u);
}
int x = -, y = -;
for(int i = ; i < tot; ++i) {
if(g[i].size() == ) {
if(x == -) x = i;
else y = i;
}
}
if(a[x] > a[y]) swap(x, y);
printf("%d ", a[x]);
vis[x] = ;
x = g[x][];
for(int i = ; i < n - ; ++i) {
printf("%d ", a[x]);
vis[x] = ;
int u = g[x][];
int v = g[x][];
if(vis[u]) x = v;
else x = u;
}
printf("%d\n", a[x]);
}
return ;
}
FZU月赛20160416 ABEF的更多相关文章
- fzu月赛 2203 单纵大法好 二分
Accept: 8 Submit: 18Time Limit: 5000 mSec Memory Limit : 65536 KB Problem Description 人在做,天在看 ...
- Fzu月赛11 老S的旅行计划 dij
Description 老S在某城市生活的非常不自在,想趁着ICPC举办期间在省内转转.已知老S所在的省有N个城市,M条无向边(对于某一对结点可能出现重边).由于省内的交通相当糟糕,通过某条边所需要花 ...
- 【补】【FZU月赛】【20150515】【待续】
A FZU-2054 水题,比较A,B双方的最大值即可. B FZU-2055 string,截取‘.’之前和之后然后和给出的文件夹名和拓展名比较就好了啊,不明白为什么那么多人错. 代码: #incl ...
- fzu月赛(2015.11)(思维)
Problem 2205 据说题目很水 Sunday最近对图论特别感兴趣,什么欧拉回路什么哈密顿回路,又是环又是树.在看完一本书后,他对自己特别有信心,便找到大牛牛犇犇,希望他出一题来考考自己. 在遥 ...
- 【FZU】2152 文件系统
Problem 2152 文件系统 Accept: 63 Submit: 126 Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- FZU Problem 2156 Climb Stairs DP
http://acm.fzu.edu.cn/problem.php?pid=2156 题目大意: 爬楼梯,要爬到n这个位置,每次可以走x也可以走y,然后一定要经过A和B两点,求最终到达n的方案数. 思 ...
- HDU 2473 Junk-Mail Filter 并查集删除(FZU 2155盟国)
http://acm.hdu.edu.cn/showproblem.php?pid=2473 http://acm.fzu.edu.cn/problem.php?pid=2155 题目大意: 编号0~ ...
- Lost Cows
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9669 Accepted: 6228 Description N (2 ...
- FZU2132 - LQX的作业(概率论)
Problem Description LQX在做作业时遇到一个难题不会做,请你帮她计算一下:在N个独立地分布于0和1之间的随机变量排为非递减顺序之后,这些变量中第M个小于等于x的概率是多少? Inp ...
随机推荐
- 浅谈:深入理解struts2的流程已经spring和struts2的整合
第一步:在tomcat启动的时候 1.在tomcat启动的时候,首先会加载struts2的核心过滤器StrutsPrepareAndExecuteFilter <filter> <f ...
- TCP/IP——链路层
链路层主要有三个目的: (1)为IP模块发送和接收IP数据报; (2)为ARP模块发送 ARP请求和接收 ARP应答; (3)为RARP发送RARP请求和接收RARP应答. TCP / IP支持多种不 ...
- Solr学习总结(七)Solr搜索引擎的整体架构
经过前面一段时间的努力,终于把我所知道的关于solr 的内容都总结完了.前面讲到了solr 的安装配置,web管理后台的使用,solr 的查询参数和查询语法,还说到了solr的客户端 solrnet ...
- 深入理解javascript原型和闭包(11)——执行上下文栈
继续上文的内容. 执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境.当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文环境.处于活动状态的执行 ...
- 跟随 Web 标准探究DOM -- Node 与 Element 的遍历
写在前面 这篇没有什么 WebKit 代码的分析,因为……没啥好分析的,在实现里无非就是树的(先序DFS)遍历而已,囧哈哈哈……在WebCore/dom/Node.h , WebCore/dom/Co ...
- 【bzoj4720】[NOIP2016]换教室
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节内容相同的课程同时在不同的 ...
- C#高级编程笔记 Day 8, 2016年9月 28日 (数组)
1.数组的初始化 声明了数组后,就必须为数组分配内存,以保存数组的所有元素.数组是引用类型,所以必须给它分配堆上的内存,为此,应使用 new 运算符,指定数组中元素的类型和数量来初始化数组的变量.若使 ...
- JavaScript深入浅出6-函数和作用域
慕课网教程视频地址:Javascript深入浅出 函数的概念:定义一次可调用多次的javascript代码段 创建函数:声明 function fuc(){} 声明前置 表达式 var fuc= ...
- 实现统一用户体验的BaseActivity
对一个规模较大的App开发团队来说,保持统一的代码规范是个好的事情,同时,保持统一的用户体验规范也是个好的事情. 当用户进入一个页面时,一般会有以下交互场景:场景1, 初始化loading,页面从se ...
- 百度地图用ip获取当前位置的经纬度(高精度)
步骤比较简单先上百度地图API官网,申请一个应用AK(访问凭据):查看一下高进度定位的API,看看是否都符合要求下面直接上代码 /** * 根据ip获取地理坐标 * @param ip * @retu ...