2017.10.28 QB模拟赛 —— 上午
T1
1e18 内的立方数有 1e6个
直接枚举可过
二分最优
考场用set 死慢。。
- #include <cstdio>
- int t;
- long long p;
- int main(int argc,char *argv[])
- {
- freopen("cubic.in","r",stdin);
- freopen("cubic.out","w",stdout);
- scanf("%d",&t);
- while(t--)
- {
- scanf("%I64d",&p);
- ,r=;
- for(long long mid;l<=r;)
- {
- mid=(l+r)>>;
- ;
- ;
- else {puts("YES");goto flag;}
- }
- puts("NO");
- flag:;
- }
- fclose(stdin); fclose(stdout);
- ;
- }
T2
p=a^3-b^3
由立方差公式 a^3-b^3=(a-b)*(a^2+ab+b^2)
因为p是素数 所以 a-b=1;
二分即可
- #include <cstdio>
- int t;
- long long p;
- int main(int argc,char *argv[])
- {
- freopen("cubicp.in","r",stdin);
- freopen("cubicp.out","w",stdout);
- scanf("%d",&t);
- while(t--)
- {
- scanf("%I64d",&p);
- ,r=;
- for(long long mid;l<=r;)
- {
- mid=(l+r)>>;
- )+(mid+)*(mid+)>p) r=mid-;
- )+(mid+)*(mid+)<p) l=mid+;
- else {puts("YES");goto flag;}
- }
- puts("NO");
- flag:;
- }
- fclose(stdin); fclose(stdout);
- ;
- }
T3
二分答案
线段树维护区间
- #include <algorithm>
- #include <cctype>
- #include <cstdio>
- #define N 1000005
- using namespace std;
- struct node
- {
- int l,r,x,t;
- bool operator<(node a)const
- {
- return x>a.x;
- }
- }a[N],b[N];
- inline void read(int &x)
- {
- register char ch=getchar();
- ;!isdigit(ch);ch=getchar());
- +ch-',ch=getchar());
- }
- |],val[N<<|];
- void build(int k,int l,int r)
- {
- flag[k]=;
- ;return;}
- ;
- build(k<<,l,mid);
- build(k<<|,mid+,r);
- val[k]=min(val[k<<],val[k<<|]);
- }
- void down(int k)
- {
- val[k<<]=flag[k];
- val[k<<|]=flag[k];
- flag[k<<]=flag[k];
- flag[k<<|]=flag[k];
- flag[k]=;
- }
- int query(int k,int l,int r,int x,int y)
- {
- if(l>=x&&r<=y) return val[k];
- ,ret=0x7fffffff;
- if(flag[k]) down(k);
- ,l,mid,x,y));
- |,mid+,r,x,y));
- val[k]=min(val[k<<],val[k<<|]);
- return ret;
- }
- void modify(int k,int l,int r,int x,int y,int v)
- {
- if(l>=x&&r<=y) {flag[k]=val[k]=v;return;}
- ;
- if(flag[k]) down(k);
- ,l,mid,x,y,v);
- |,mid+,r,x,y,v);
- val[k]=min(val[k<<],val[k<<|]);
- }
- bool check(int k)
- {
- build(,,n);
- ;i<=k;++i) b[i]=a[i];
- sort(b+,b++k);
- int lmax,lmin,rmax,rmin;
- ;i<=k;)
- {
- int j,x=b[i].x;
- lmax=b[i].l,rmax=b[i].r,lmin=b[i].l,rmin=b[i].r;
- ;b[j].x==x&&j<=k;++j)
- {
- lmax=max(lmax,b[j].l);
- lmin=min(lmin,b[j].l);
- rmin=min(rmin,b[j].r);
- rmax=max(rmax,b[j].r);
- if(lmax>rmin) return true;
- }
- ,,n,lmin,rmax);
- if(re) return true;
- modify(,,n,lmin,rmax,b[i].x); i=j;
- }
- return false;
- }
- int main(int argc,char *argv[])
- {
- freopen("number.in","r",stdin);
- freopen("number.out","w",stdout);
- read(n); read(t);
- ;i<=t;++i)
- {
- read(a[i].l); read(a[i].r); read(a[i].x);
- a[i].t=i;
- }
- ,l=,r=t;
- for(int mid;l<=r;)
- {
- mid=(l+r)>>;
- ;
- ;
- }
- printf("%d",ans);
- fclose(stdin); fclose(stdout);
- ;
- }
- #include <cstdio>
- #include <iostream>
- #include <algorithm>
- #define N 1000011
- #define min(x, y) ((x) < (y) ? (x) : (y))
- #define max(x, y) ((x) > (y) ? (x) : (y))
- using namespace std;
- int n, q, ans;
- int f[N];
- struct node
- {
- int x, y, z;
- }p[N], t[N];
- inline int read()
- {
- , f = ;
- char ch = getchar();
- ;
- ) + (x << ) + ch - ';
- return x * f;
- }
- inline bool cmp(node x, node y)
- {
- return x.z > y.z;
- }
- inline int find(int x)
- {
- return x == f[x] ? x : f[x] = find(f[x]);
- }
- inline bool check(int k)
- {
- int i, j, x, y, lmin, lmax, rmin, rmax;
- ; i <= n + ; i++) f[i] = i;
- ; i <= k; i++) t[i] = p[i];
- std::sort(t + , t + k + , cmp);
- lmin = lmax = t[].x;
- rmin = rmax = t[].y;
- ; i <= k; i++)
- {
- ].z)
- {
- ;
- for(j = find(lmin); j <= rmax; j++)
- f[find(j)] = find(rmax + );
- lmin = lmax = t[i].x;
- rmin = rmax = t[i].y;
- }
- else
- {
- lmin = min(lmin, t[i].x);
- lmax = max(lmax, t[i].x);
- rmin = min(rmin, t[i].y);
- rmax = max(rmax, t[i].y);
- ;
- }
- }
- // cout<<find(1)<<endl;
- ;
- ;
- }
- int main()
- {
- freopen("number.in","r",stdin);
- freopen("number.out","w",stdout);
- int i, x, y, mid;
- n = read();
- q = read();
- ; i <= q; i++)
- p[i].x = read(), p[i].y = read(), p[i].z = read();
- x = , y = q;
- //cout<<check(2)<<endl;
- //return 0;
- ans = q + ;
- while(x <= y)
- {
- mid = (x + y) >> ;
- ;
- ;
- }
- printf("%d\n", ans);
- ;
- }
std并查集维护
2017.10.28 QB模拟赛 —— 上午的更多相关文章
- 2017.10.28 QB模拟赛 —— 下午
题目链接 T1 按x值排序 遇到第二种牌插入 遇到第一种牌 查询<=y 的最小值 删除他 splay multiset cys大佬说 multiset就是不去重的set, #include &l ...
- 2017 10.25 NOIP模拟赛
期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意, ...
- 2017.10.7 QBXT 模拟赛
题目链接 T1 容斥原理,根据奇偶性进行加减 #include<iostream> #include<cstdio> using namespace std; typedef ...
- 2017.10.3 QBXT 模拟赛
题目链接 T1 模拟 #include <cstring> #include <cstdio> #define N 105000 int L,R; char s[N]; int ...
- 2017.10.6 QBXT 模拟赛
题目链接 T1 Sort 一下与原数组比较 ,若有两个数或者没有数发生位置交换 ,则输出YES ,否则输出NO #include <algorithm> #include <ccty ...
- 2017.10.5 QBXT 模拟赛
题目链接 T1 从小到大排序,用sum记录前缀和,然后枚举1~n个数 ,如果当前的前缀和 + 1小于a[i]的话 那么 sum + 1永远不可能拼出来 直接输出sum + 1 ,否则统计前缀和.最后如 ...
- 2017.10.4 QBXT 模拟赛
题目链接 T1 维护一个单调栈 #include <iostream> #include <cstdio> #define N 500000 #define rep(a,b,c ...
- 2017.10.2 QBXT 模拟赛
题目链接 T1 我们所要求得是(a*b)|x 也就是 使(a*b)的倍数小于x的个数之和 1<=x<=n 我们可以 找一个c使得 (a*b*c)<=x 由于我们所求的是一个三元有序对 ...
- 2017.10.1 QBXT 模拟赛
题目链接 T1 枚举右端点,前缀和优化.对于当前点x,答案为 sum[x][r]-sum[x][l-1]-(sum[z][r]-sum[z][l-1]) 整理为 sum[x][r]-sum[z][r] ...
随机推荐
- C语言中的副作用、序列点、完整表达式
C语言中有个术语叫:副作用 副作用其实是对数据对象或文件的修改.(数据对象的定义是:用于存储值的数据存储区域) 例如语句 states = 50; 从C语言的角度来讲:这个赋值表达式的副作用是将变量的 ...
- Luogu P1120 小木棍 [数据加强版] 来来来我们一起来剪枝,剪枝,剪枝、、、
好啊...太棒了... dfs(拼到第几根木棍,这根木棍剩余长度,上一根木棍的位置) len是木棍的长度,cnt是木棍的个数 震撼人心的剪枝: 1.枚举长度从最大的木棍开始,直到sum/2,因为之后只 ...
- connecting-to-github-with-ssh
https://help.github.com/articles/connecting-to-github-with-ssh/ 创建ssh密钥后,从github clone仓库到本地出现permiss ...
- Linux多线程及线程同步简单实例
一.多线程基本概念 1. 线程的基本概念 ① 线程就是轻量级的进程 ②线程和创建他的进程共享代码段.数据段 ③线程拥有自己的栈 2. 在实际应用中,多个线程往往会访问同一数据或资源,为避免线程之间相互 ...
- 解决报错:import sun.misc.BASE64Decoder无法找到
解决报错:import sun.misc.BASE64Decoder无法找到 2017年09月29日 16:03:26 chaoyu168 阅读数:2116 标签: sun.misc.BASE64De ...
- 用LaTeX画树形结构
用LaTeX画树形结构,比如:文件目录树形图,程序中函数调用关系图等. 找到的一个不错的资源: http://www.texample.net/tikz/examples/feature/trees/ ...
- UGUI Image血条或者进度条效果
把图片的Image组件中的image type选成Filled,下面就出现了Fill Amount,通过GetComponent<Image>().fillAmount; 就可以拿到flo ...
- mysql中添加中文存储和显示功能
1. 在 /etc/mysql/my.cnf中添加 [mysqld]character-set-server=utf8 [client]default-character-set=utf8 2. 检查 ...
- (转)AIX下修改用户最大进程数
AIX下修改用户最大进程数 原文:http://blog.csdn.net/feichideche/article/details/39498555 使用AIX时候,切换用户,发现进程一直挂起,查看用 ...
- pat1020. Tree Traversals (25)
1020. Tree Traversals (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Suppo ...