CQ18阶梯赛第二场
只要单纯的判断一下前后的乘积就好了, 因为不是很想处理倍数的关系, 所以我这里是用 string去处理。
代码:
- #include<bits/stdc++.h>
- using namespace std;
- #define LL long long
- #define ULL unsigned LL
- #define fi first
- #define se second
- #define lson l,m,rt<<1
- #define rson m+1,r,rt<<1|1
- #define max3(a,b,c) max(a,max(b,c))
- const int INF = 0x3f3f3f3f;
- const LL mod = 1e9+;
- typedef pair<int,int> pll;
- char str[];
- int n, k;
- bool add(){
- for(int i = n - ; i >= ; i--){
- if((str[i-]-'')*(str[i]-''+) <= k && str[i]-''+ <= k) {str[i] = str[i] + ;return true;}
- else str[i] = '';
- }
- if(str[]-''+ <= k) {str[] = str[]+; return true;}
- return false;
- }
- int main(){
- scanf("%d%d",&n,&k);
- str[] = '';
- for(int i = ; i < n; i++) str[i] = '';
- str[n] = '\0';
- while(){
- printf("%s\n", str);
- if(!add()) break;
- }
- return ;
- }
求最小的D,D=|Ai-Bj|+|Bj-Ck|+|Ck-Ai|
假设A > B > C , D = 2(A - C)。 假设 A > C > B , D = 2(A - B)。
我们可以发现 D 就等于最大的那个数减去最小的那个数 再乘以2, 所以我们直接去对A,B,C的大小关系进行全排列, 然后对于每个a[i], 找到大于等于a[j],且最小的b[j], 再找到大于等于b[j]的最小的c[k], 求出每一个成立的 (c[k]-a[i])并取其中最小的那个就好了。
代码:
- #include<bits/stdc++.h>
- using namespace std;
- #define LL long long
- #define ULL unsigned LL
- #define fi first
- #define se second
- #define lson l,m,rt<<1
- #define rson m+1,r,rt<<1|1
- #define max3(a,b,c) max(a,max(b,c))
- const int INF = 0x3f3f3f3f;
- const LL mod = 1e9+;
- typedef pair<int,int> pll;
- const int N = ;
- int A[N], B[N], C[N];
- int ans = 1e9;
- void solve(int a[], int n, int b[], int m, int c[], int l){
- for(int i = ; i <= n; i++){
- int p1 = lower_bound(b+,b++m,a[i]) - b;
- if(p1 == m+) return;
- int p2 = lower_bound(c+,c++l,b[p1]) - c;
- if(p2 == l+) return;
- ans = min(ans, *(c[p2]-a[i]));
- }
- }
- int main(){
- int n, m, l;
- scanf("%d%d%d",&n,&m,&l);
- for(int i = ; i <= n; i++)
- scanf("%d",&A[i]);
- for(int i = ; i <= m; i++)
- scanf("%d",&B[i]);
- for(int i = ; i <= l; i++)
- scanf("%d",&C[i]);
- sort(A+, A++n);
- A[n+] = 1e9;
- sort(B+, B++m);
- B[m+] = 1e9;
- sort(C+, C++l);
- C[l+] = 1e9;
- solve(A,n,B,m,C,l);
- solve(A,n,C,l,B,m);
- solve(B,m,A,n,C,l);
- solve(B,m,C,l,A,n);
- solve(C,l,A,n,B,m);
- solve(C,l,B,m,A,n);
- printf("%d", ans);
- return ;
- }
代码:
- #include<bits/stdc++.h>
- using namespace std;
- #define LL long long
- #define ULL unsigned LL
- #define fi first
- #define se second
- #define lson l,m,rt<<1
- #define rson m+1,r,rt<<1|1
- #define max3(a,b,c) max(a,max(b,c))
- const int INF = 0x3f3f3f3f;
- const LL mod = 1e9+;
- typedef pair<int,int> pll;
- int main(){
- int n, last, t;
- while(~scanf("%d",&n), n != -){
- for(int i = ; i <= n; i++){
- scanf("%d", &t);
- if(i == ){printf("%d",t); last = t;}
- if(last != t){
- printf(" %d", t);
- last = t;
- }
- }
- printf("\n");
- }
- return ;
- }
求的是查询的时候输出X同学与Y同学之间的分数差距(不清楚输出-1),莫非用最短路跑出所有点之间的距离? N = 1e5。 就算不T数组也开不下。
后来发现可以跑出2个人之间的关系,并且建立能联通的人之间的相对关系就好了, 将第一个人的分数设为0, 然后通过边的关系处理出别人的分数。
然后每次询问的时候,判断X与Y是不是同一次访问的,如果是输出分数差,如果不是就输出-1。
代码:
- #include<bits/stdc++.h>
- using namespace std;
- #define LL long long
- #define ULL unsigned LL
- #define fi first
- #define se second
- #define lson l,m,rt<<1
- #define rson m+1,r,rt<<1|1
- #define max3(a,b,c) max(a,max(b,c))
- const int INF = 0x3f3f3f3f;
- const LL mod = 1e9+;
- typedef pair<int,int> pll;
- const int N = ;
- int vis[N], val[N], head[N];
- struct Node{
- int to;
- int ct;
- int nt;
- }e[N<<];
- int tot = ;
- void add(int u, int v, int w){
- e[tot].to = v;
- e[tot].ct = w;
- e[tot].nt = head[u];
- head[u] = tot++;
- }
- void dfs(int u, int cnt){
- vis[u] = cnt;
- for(int i = head[u]; ~i; i = e[i].nt){
- if(!vis[e[i].to]){
- val[e[i].to] = val[u]-e[i].ct;
- dfs(e[i].to,cnt);
- }
- }
- }
- int main(){
- memset(head, -, sizeof(head));
- int n, m, q;
- int u, v, w;
- scanf("%d%d%d", &n, &m, &q);
- for(int i = ; i <= m; i++){
- scanf("%d%d%d",&u,&v,&w);
- add(u,v,w);
- add(v,u,-w);
- }
- int cnt = ;
- for(int i = ; i <= n; i++){
- if(!vis[i]){
- val[i] = ;
- dfs(i,cnt++);
- }
- }
- for(int i = ; i <= q; i++){
- scanf("%d%d",&u,&v);
- if(vis[u] != vis[v]) printf("-1\n");
- else printf("%d\n",val[u]-val[v]);
- }
- return ;
- }
CQ18阶梯赛第二场的更多相关文章
- 【CQ18阶梯赛第二场】题解
[A-H国的身份证号码I] 用N个for语句可以搞定,但是写起来不方便,所以搜索. dfs(w,num,p)表示搜索完前w位,前面x组成的数位num,最后以为为p. 如果搜索到第N位,则表示num满足 ...
- 【CQ18阶梯赛第一场】题解
[A-风格不统一如何写程序] 输入字符串,得到长度,对于每个字符:如果是大写,则改为:‘_’+小写:如果是‘_’则忽略‘_’,并且把后面的小写改为大写. #include<cstdio> ...
- Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)
Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...
- NOI.AC NOIP模拟赛 第二场 补记
NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...
- 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)
以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...
- 【CQ18阶梯赛第8场】题解
[A:HDU2032 杨辉三角]: 简单的递推,或者是基础的DP: 但是只有杨润东一个人1A,整体准确率只有8/37,具体原因不详. 经验:提交前一定要试一下比较特殊的数据或者最大的数据.其次,为了保 ...
- SCNU省选校赛第二场B题题解
今晚的校赛又告一段落啦,终于"开斋"了! AC了两题,还算是满意的,英语还是硬伤. 来看题目吧! B. Array time limit per test 2 seconds me ...
- 2019.10.24 CSP%你赛第二场d1t3
题目描述 Description 精灵心目中亘古永恒的能量核心崩溃的那一刻,Bzeroth 大陆的每个精灵都明白,他们的家园已经到了最后的时刻.就在这危难关头,诸神天降神谕,传下最终兵器——潘少拉魔盒 ...
- 暑假集训单切赛第二场 UVA 11988 Broken Keyboard (a.k.a. Beiju Text)(字符串处理)
一开始不懂啊,什么Home键,什么End键,还以为相当于括号,[]里的东西先打印出来呢.后来果断百度了一下. 悲催啊... 题意:给定一个字符串,内部含有'['和']'光标转移指令,'['代表光标移向 ...
随机推荐
- 多线程编程(Linux C)
多线程编程可以说每个程序员的基本功,同时也是开发中的难点之一,本文以Linux C为例,讲述了线程的创建及常用的几种线程同步的方式,最后对多线程编程进行了总结与思考并给出代码示例. 一.创建线程 多线 ...
- [Abp vNext 源码分析] - 7. 权限与验证
一.简要说明 在上篇文章里面,我们在 ApplicationService 当中看到了权限检测代码,通过注入 IAuthorizationService 就可以实现权限检测.不过跳转到源码才发现,这个 ...
- 二叉查找树(查找、插入、删除)——C语言
二叉查找树 二叉查找树(BST:Binary Search Tree)是一种特殊的二叉树,它改善了二叉树节点查找的效率.二叉查找树有以下性质: (1)若左子树不空,则左子树上所有节点的值均小于它的根节 ...
- 佳木斯集训Day7
毒瘤出题人!!! T2的题面和样例不一样,所以我挂了(没错这就是我写模拟写挂了的理由) T1 大水题,懒得解释了,五分钟AC #include <bits/stdc++.h> #defin ...
- Mybatis学习笔记之---环境搭建与入门
Mybatis环境搭建与入门 (一)环境搭建 (1)第一步:创建maven工程并导入jar包 <dependencies> <dependency> <groupId&g ...
- IntelliJ IDEA + Maven + Jetty + Jersey搭建RESTful服务
这次参考的是这个博客,完全按照这个我这里会出一些问题,一会再说就是了. https://www.cnblogs.com/puyangsky/p/5368132.html 一.首先新建一个项目,选择Ja ...
- Markdown转载
@TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown ...
- Python模拟登录淘宝
最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录淘宝的文章!看了下网上有很多关于模拟登录淘宝,但是基本都是使用scrapy.pyppeteer.sel ...
- thinkPHP 获得当前请求的全部常量信息
tp框架提供了常量: http://网址/shop/index.php/分组/控制器/操作方法/名称1/值/名称2/值 __MODULE__: 路由地址分组信息 (/shop/index.php/分组 ...
- Elasticsearch由浅入深(一)
什么是Elasticsearch 什么是搜索 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象 ...