注: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. 《深入理解Java虚拟机》-----第8章 虚拟机字节码执行引擎——Java高级开发必须懂的

    概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念 ,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上的,而 ...

  2. 【Android Studio安装部署系列】二十三、Android studio查看Gradle版本号

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 File——Project Structure 单击Project 可以看到,当前项目的gradle版本号是4.4. 参考资料 An ...

  3. HTTP 缓存相关

    网络中数据传输是很耗时的,数据要在漫长的路径中奔波,客户端在数据完整到达前只能等待.如果能够复用已经请求过的资源,势必会让整个页面加载高效许多.这可以通过合理地设置服务器的缓存,与浏览器的缓存机制配合 ...

  4. Python:黑板课爬虫闯关第四关

    第四关地址:http://www.heibanke.com/lesson/crawler_ex03/ 一开始看到的时候有点蒙,不知道啥意思,说密码需要找出来但也没说怎么找啊. 别急,随便输了个昵称和密 ...

  5. C#语法——await与async的正确打开方式

    C#5.0推出了新语法,await与async,但相信大家还是很少使用它们.关于await与async有很多文章讲解,但有没有这样一种感觉,你看完后,总感觉这东西很不错,但用的时候,总是想不起来,或者 ...

  6. Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则

    上一篇我们介绍了如何通过Nacos的配置功能来存储限流规则.Apollo是国内用户非常多的配置中心,所以,今天我们继续说说Spring Cloud Alibaba Sentinel中如何将流控规则存储 ...

  7. DSAPI QQ用户相关

    获取指定QQ号头像 Label1.Image=DSAPI.QQ用户相关.下载QQ头像("20353841") 获取指定QQ群头像 Label1.Image = DSAPI.QQ用户 ...

  8. ASP.Net Mvc实现自定义User Identity用户身份识别系统(1)

    目的 当我们新建asp.net mvc 项目时,我们在使用下图所示的代码是否有以下思考: 1,在this.User.Identity.Name,为什么可以使用this便可以选中Name属性: 2,若项 ...

  9. html meta标签使用及属性介绍

    自学前端开始,我对meta标签接触不多,主要把精力都集中在能显示出来的标签上,比如span.button.h1等等.有时候去查看一些知名网站的源码,发现head标签里有一大摞的meta. 今天就来学习 ...

  10. Mybatis实现部门表增删改查以及排序

    废话不说,直接开门见山! 需要在WebContent下的lib下导入两个包 mybatis-3.2.5.jar ojdbc6.jar package com.xdl.entity; import ja ...