注:fjutoj基本每周都有一次周赛,欢迎大家都来参加!

网址:http://59.77.139.92/index.jsp

A题:来源 POJ 2773

题意:给两个数m和k,问第k 个和m 互素的数是多少(从1到无穷大)。

思路:

  二分 + 容斥

  先求出m 的素因子p[],数x 和m 互素就意味着x 不存在p 数组中的任意一个素因子,现在要 求n 下面不存在p[]素因子的数的数量可以转化为,n-存在p[]中任意一个素因子的数的个数(经典题型,用容斥可以求),现在二分(k,INF)可以求出答案。

 #include<stdio.h>
#define N 1000010
#define LL long long
const LL INF = 0x7fffffffffffffff;
bool pri[N];
int prim[N], po=;
void Init()
{
for(int i=;i<N;i++)
{
if(!pri[i]) prim[po++]=i;
for(int j=;j<po&&(LL)i*prim[j]<N;j++)
{
pri[i*prim[j]]=;
if(i%prim[j]==) break;
}
}
} int data[], co; void fun(int x)
{
int i=;
co=;
while(i<po && (LL)prim[i]*prim[i]<=x)
{
bool c=;
while(x%prim[i]==)
{
c=;
x/=prim[i];
}
if(c) data[co++]=prim[i];
i++;
}
if(x!=) data[co++]=x;
} void dfs(int limit, int j, LL y, LL now, LL &all)
{
if(limit==)
{
all += y/now;
return ;
}
for(int i=j; i<co; i++)
{
dfs(limit-, i+, y, now*data[i], all);
}
}
LL solve(LL x)
{
LL sum=x, flag=-;
for(int i=; i<=co; i++)
{
LL all=;
dfs(i, , x, , all);
sum+=flag*all;
flag *= -;
}
return sum;
} LL er(LL l, LL r, LL x)
{
while(l<r)
{
LL mid = (l+r)/;
if(solve(mid)>=x) r=mid;
else l=mid+;
}
return l;
} int main()
{
Init();
int x,y;
while(~scanf("%d%d",&x, &y))
{
fun(x);
printf("%lld\n", er(y, INF, y));
}
return ;
}

AC代码

B题:来源 HDU 1730

题意:

思路:

  博弈

  很容易产生的错误判断:如果两个子相邻,那么这个的胜者是后手,如果不相邻,胜者是先手,那么判断先手胜利的行数,最后如果是奇数则先手胜,偶数则后手胜(我因此WA了两次...)。举个错误样例:,如果按上面思路,两行都是先手胜,那么应该是后手赢,但先手其实可以将第一行的红点移动一格,这样先手就赢了。

  事实上,这里应该是nim博弈的模型,首先,我们可以判断出一点,双方的棋子只会不断接近(如果一人后退一步,另一人可以跟进一步,保持局面不变)。接着,既然两者只能接近,那么就可以看作是n 堆,每一堆x个,每个玩家每轮可以拿走一个、两个、...直至拿完。接下来就不解释了。

 #include<stdio.h>
int max(int a, int b) { return a>b?a:b; }
int main()
{
int n, m, x, y;
while(~scanf("%d%d",&n, &m))
{
int ans = ;
for(int i=; i<n; i++)
{
scanf("%d%d",&x, &y);
if(x+==y || x==y+);
else ans ^= ( max(x, y) - (x+y-max(x, y)) - );
}
if(ans) printf("I WIN!\n");
else printf("BAD LUCK!\n");
}
return ;
}

AC代码

C题:来源 POJ 3671

题意:

思路:

  用两个数组a[]、b[],a[i]表示i前面2的个数,b[i]表示i后面1的个数(遍历两遍可以求出a、b数组),如果以i 为中心(1、2转折点),要修改的数个数为a[i-1]+b[i+1],遍历一遍求出最小值即可。

 #include<stdio.h>
#define N 30010
int a[N], b[N], c[N];
int main()
{
int n;
while(~scanf("%d",&n))
{
a[]=;
for(int i=; i<=n; i++)
{
scanf("%d", &c[i]);
if(c[i]==) a[i]=a[i-];
else a[i]=a[i-]+;
}
b[n+]=;
for(int i=n; i> ;i--)
{
if(c[i]==) b[i]=b[i+]+;
else b[i]=b[i+];
}
int mint = N;
for(int i=; i<=n; i++)
{
if(a[i-]+b[i+]<mint) mint = a[i-]+b[i+];
}
printf("%d\n", mint);
}
return ;
}

AC代码

D题:来源 POJ 3663

题意:

思路:

  排序 + 二分

  对数组排序后,遍历一遍,s-a[i]就是分界点,二分出小于等于他的第一个数,比他小的都满足条件。

 #include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; int a[];
int er(int l, int r, int x)
{
while(l<r)
{
int mid = (l+r)/;
if(a[mid]<=x) l=mid+;
else r=mid;
}
return l;
} int main()
{
int n, m;
while(~scanf("%d%d",&n,&m))
{
for(int i=; i<n; i++)
scanf("%d", &a[i]);
sort(a, a+n);
int ans = ;
for(int i=n-; i>; i--)
{
int x = m-a[i];
int num = er(, i, x) - ;
ans += num;
}
printf("%d\n", ans);
}
return ;
}

AC代码

E题:来源 POJ 1028

题意:

思路:

  随手写个栈模拟一下就好了。

 #include<stack>
#include<string>
#include<iostream>
using namespace std; string st[];
int top=;
int mt=; void push(string s)
{
st[++top]=s; mt=top;
} void pop()
{
if(top==) cout<<"Ignored"<<endl;
else cout<<st[--top]<<endl;
} int main()
{
st[top]="http://www.acm.org/";
string s;
while(cin>>s)
{
if(s[]=='Q') break;
if(s[]=='V')
{
cin>>s; cout<<s<<endl;
push(s);
}
else if(s[]=='B') pop();
else if(top==mt) cout<<"Ignored"<<endl;
else cout<<st[++top]<<endl;
}
return ;
}

AC代码

  

FJUTOJ-周赛2016-12-16的更多相关文章

  1. mysql查询练习题-2016.12.16

    >>>>>>>>>> 练习时间:2016.12.16 编辑时间:2016-12-20-->22:12:08 题: 涉及:多表查询.ex ...

  2. U3D笔记11:47 2016/11/30-15:15 2016/12/19

    11:47 2016/11/30Before you can load a level you have to add it to the list of levels used in the gam ...

  3. 更新日志(建议升级到2016.12.17) && 更新程序的方法

    更新程序的方法: 1,在控制面板里点击备份当前数据库文件到磁盘,把当天获取的信息从内存写到磁盘/存储卡.2,下载最新版的源码 wget -O "infopi.zip" " ...

  4. My latest news(--2016.12.31)

    2016.12.31  前一天晚上看 “纪实新闻” ,白天看视频,晚上刷题,看电影<湄公河行动> 2016.12.30 18:36 昨天上午考完了本学期的最后一门课程,下午乒乓+值班,今天 ...

  5. 关于2016.12.12——T1的反思:凸包的意义与应用

    2016.12.12 T1 给n个圆,保证圆圆相离,求将圆围起来的最小周长.n<=100 就像上图.考场上,我就想用切线的角度来做凸包.以圆心x,y排序,像点凸包一样,不过用两圆之间的下切线角度 ...

  6. rhel 7.0 配置centos yum源(2016/12/8),成功!

    1.首先查看redhat 7.0系统本身所安装的那些yum 软件包: rpm -qa | grep yum #列出所有已安装的yum包 2.删除这些包: rpm -e *.rpm --nodeps # ...

  7. Oracle中把一个DateTime的字符串转化成date类型。to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'),

    Oracle中把一个DateTime或者该形态字符串转化成date类型. to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'), 或者: sele ...

  8. 【转载】webstorm11(注册,激活,破解,码,一起支持正版,最新可用)(2016.11.16更新)

    很多人都发现 http://idea.lanyus.com/ 不能激活了 很多帖子说的 http://15.idea.lanyus.com/ 之类都用不了了 最近封的厉害仅作测试 选择 License ...

  9. 12.16 Daily Scrum

      Today's Task Tomorrow's Task 丁辛 实现和菜谱相关的餐厅列表. 实现和菜谱相关的餐厅列表.             邓亚梅             美化搜索框UI. 美 ...

  10. Murano Weekly Meeting 2016.08.16

    Meeting time: 2016.August.16 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary: ...

随机推荐

  1. 接口自动化:HttpClient + TestNG + Java(四) - 封装和测试post方法请求

    在上一篇中,我们对第一个自动化接口测试用例做了初步优化和断言,这一篇我们处理POST请求. 4.1 发送POST方法请求 post方法和get方法是我们在做接口测试时,绝大部分场景下要应对的主要方法. ...

  2. 初探Parcel

    昨天趁有点时间看了前不久很火的构建工具Parcel,这里说下初步使用的感受,尤其是将其放到实际项目中和Webpack进行比较. 一.前言 首先说下笔者目前的技术栈.最近的前端项目主要以管理后台为主,技 ...

  3. WebApiClient的JsonPatch局部更新

    1. 文章目的 随着WebApiClient的不断完善,越来越多开发者选择WebApiClient替换原生的HttpClient,本文将介绍使用WebApiClient来完成JsonPatch提交的新 ...

  4. Java8内存模型—永久代(PermGen)和元空间(Metaspace)

    一.JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 1.虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建.栈里面存着的是一种叫“栈 ...

  5. myeclipse配置tomcat服务器

    在进行j2EE开发时,需要进行服务器配置, 这里因为要进行servlet开发,也要配置服务器.这里以在myeclipse上配置tomcat服务器为例 这里只是做下记录,方便自己以后查看 1.打开mye ...

  6. C#工具:反射帮助类 泛型反射帮助类

    反射帮助类 using System; using System.Reflection; using System.Data; using System.Drawing; using System.R ...

  7. Lucene配置步骤详解

    Lucene配置步骤说明: 1.搭建环境: 2.创建索引库: 3搜索索引库. Lucene配置步骤: 第一部分:搭建环境(创建环境导入jar包) 前提:已经创建好了数据库(直接导入book.sql文件 ...

  8. 高并发系统保护~ing

    由于公司业务发展,需要考虑一些高并发系统保护的问题,整理记录一下. 当发现你的系统出现访问卡顿,服务器各种性能指标接近100%(如果一个初创型企业系统正常运行情况下出现这个问题,那么应该恭喜你,你懂得 ...

  9. jQuery中的动画方法

    对角线动画 hide():显示 可以写两个参数——第一个参数 数字类型:毫秒 字符串类型: slow:慢 600ms  normal:比slow快   比fast慢   400ms  fast:快   ...

  10. 在 Angular 8 中,我们可以期待些什么

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 本文由葡萄城翻译并发布 --- Angular 作为一款优秀的前端框架,自诞生之日起,就致力于面向前端开发者 ...