Codeforces 154B Colliders
来源:互联网 发布:我知女人心粤语 编辑:程序博客网 时间:2024/06/05 12:45
题意:
给出m个操作,+表示向机器里面加一个数,-表示从机器里面删除一个数,加数时如果里面已经含有和这个数不互质的数,那么这个数加不进去。现在判断每次操作是否成功或者失败。
思路:
因为这里的数在1~n范围内,所以可以先预处理出这些数的质因数,然后加入的时候判断是否已经存在了相同的质因数,若存在着不能加入。其他的操作用hash的方法判断下就可以了。
#include<cstdio>#include<cstring>#include<vector>using namespace std;const int MAX=1e5+5;bool vis[MAX],zi[MAX],prime[MAX];int n,m,hash[MAX];vector<int> zz[MAX];void init(){memset(prime,true,sizeof(prime));for(int i=2;i<=n;i++){if(prime==false) continue;for(int j=1;j*i<=n;j++){zz[j*i].push_back(i);if(j!=1) prime[j*i]=false;}}}int add(int x){int flag=-1;for(int i=0;i<zz[x].size();i++){int g=zz[x][i];if(zi[g]){flag=g;break;}}if(flag==-1){for(int i=0;i<zz[x].size();i++){int g=zz[x][i];zi[g]=true;hash[g]=x;}}return flag;}void del(int x){for(int i=0;i<zz[x].size();i++){int g=zz[x][i];zi[g]=false;}}int main(){scanf("%d%d",&n,&m);char op[5];int x;init();memset(vis,false,sizeof(vis));while(m--){scanf("%s%d",op,&x);if(op[0]=='+'){if(vis[x]) printf("Already on\n");else{int t=add(x);if(t==-1) vis[x]=true,printf("Success\n");else printf("Conflict with %d\n",hash[t]);}}else{if(vis[x]==false) printf("Already off\n");else{del(x);vis[x]=false;printf("Success\n");}}}return 0;}
0 0
- CodeForces 154B- Colliders
- Codeforces 154B Colliders
- CodeForces 154B——Colliders
- Colliders CodeForces
- CodeForces 154B——Colliders——筛选素数,模拟标记
- Codeforces 155 D. Colliders
- Codeforces 155D Colliders【思维+模拟】
- Codeforces Round #109 (Div. 2) D. Colliders 数学
- Unity Colliders
- codeforces B
- codeforces B
- codeforces B
- codeforces B
- codeforces#154_div2_B (253B) Physics Practical
- codeforces 154B 素筛 机器激活
- colliders 碰撞体
- CodeForces 626B CodeForces 626B【暴力】
- CodeForces 841B (B) 博弈
- 如想给一个easyui的combobox组件在获取json数据之前添加数据
- 创业挣的首先是认知,接下来才是钱
- UGUI实现帧动画
- HDU 2080 夹角有多大II(余弦公式)
- 编译Memcached测试客户端连接【web级ubuntu速学课程】
- Codeforces 154B Colliders
- 杭电-2012 素数判定 (素数打表)
- memcached存储大数据的问题
- [leetcode] 12. Integer to Roman
- 函数指针的运用于程序示例
- poj2438 Children's Dining(哈密尔顿回路)
- Linux下非root用户能创建新文件,却不能拷贝文件的问题
- 自创控件Topbar
- [Leetcode]216. Combination Sum III