题目链接  Guangxi

感觉这场比赛完全是读题场啊……

比赛过程中丢失了一波进度,最后想开题的时候已经来不及了……

Problem A

按题意模拟……按照那个矩阵算就可以了

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b)	for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i) double a[10][10];
int b[100010];
char s[100010]; int main(){ rep(i, 1, 4) rep(j, 1, 4) cin >> a[i][j];
getchar();
fgets(s, 100010, stdin);
int len = strlen(s); int n = 0;
rep(i, 0, len - 1){
if (s[i] >= '0' && s[i] <= '9'){
++n;
b[n] = s[i] - 48;
}
} double gg = 1.0000000; rep(i, 1, n - 1) gg = gg * a[b[i]][b[i + 1]]; printf("%.8f\n", gg);
fgets(s, 100010, stdin);
len = strlen(s); n = 0;
rep(i, 0, len - 1){
if (s[i] >= '0' && s[i] <= '9'){
++n;
b[n] = s[i] - 48;
}
} gg = 1.0000000; rep(i, 1, n - 1) gg = gg * a[b[i]][b[i + 1]]; printf("%.8f\n", gg); int kk;
scanf("%d", &kk);
gg = 1.00 / (1 - a[kk][kk]); printf("%.8f\n", gg); scanf("%d", &kk);
gg = 1.00 / (1 - a[kk][kk]); printf("%.8f\n", gg);
return 0;
}

Problem C

这道题限制条件比较多,比赛的最后一分钟才通过

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b)	for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i)
#define MP make_pair
#define fi first
#define se second typedef long long LL;
typedef pair <int, int> PII; const int N = 2010000; vector <PII > a; int n, m;
int ans[N];
int q; bool cmp(PII a, PII b){
return a.fi == b.fi ? a.se < b.se : a.fi > b.fi;
} int main(){ scanf("%d%d", &n, &m);
rep(i, 1, n){
a.clear();
int x;
scanf("%d", &x);
int xx, yy;
int cnt = 0;
while (true){
scanf("%d", &xx);
if (xx == -1) break;
scanf("%d", &yy);
if (yy < x) continue;
++cnt;
a.push_back({yy, xx});
} if (cnt == 0) continue;
sort(a.begin(), a.end(), cmp); int uu = a[0].se;
int hhhh = 0;
if (cnt == 1) hhhh = x; else hhhh = a[1].fi;
int tt = hhhh * 1.1000;
int ff = min(tt, a[0].fi);
ans[uu] += (int)ff;
} scanf("%d", &q);
while (q--){
int k;
scanf("%d", &k);
printf("%d\n", ans[k]);
} return 0;
}

Problem F

求矩形面积并 模板题

#include <bits/stdc++.h>

using namespace std;

#define lson l, m, rt << 1
#define rson m + 1, r, rt << 1 | 1 typedef long long LL; const LL N = 1e5 + 10; int n;
struct Seg {
double l, r, h;
LL d;
Seg() {}
Seg(double l, double r, double h, LL d): l(l), r(r), h(h), d(d) {}
bool operator< (const Seg& rhs) const {return h < rhs.h;}
} a[N]; LL cnt[N << 2];
LL sum[N << 2], all[N]; void push_up(LL l, LL r, LL rt){
if (cnt[rt]) sum[rt] = all[r + 1] - all[l];
else if(l == r) sum[rt] = 0; //leaves have no sons
else sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];
} void update(LL L, LL R, LL v, LL l, LL r, LL rt) {
if(L <= l && r <= R) {
cnt[rt] += v;
push_up(l, r, rt);
return;
}
LL m = l + r >> 1;
if(L <= m) update(L, R, v, lson);
if(R > m) update(L, R, v, rson);
push_up(l, r, rt);
} int main() { while (~scanf("%d", &n)){
if (n == 0){ putchar('*'); break;}
for(LL i = 1; i <= n; ++i) {
LL x1, y1, x2, y2;
scanf("%lld%lld%lld%lld", &x1, &y1, &x2, &y2);
a[i] = Seg(x1, x2, y1, 1);
a[i + n] = Seg(x1, x2, y2, -1);
all[i] = x1; all[i + n] = x2;
}
n <<= 1;
sort(a + 1, a + 1 + n);
sort(all + 1, all + 1 + n);
LL m = unique(all + 1, all + 1 + n) - all - 1; memset(cnt, 0, sizeof cnt);
memset(sum, 0, sizeof sum); LL ans = 0;
for(LL i = 1; i < n; ++i) {
LL l = lower_bound(all + 1, all + 1 + m, a[i].l) - all;
LL r = lower_bound(all + 1, all + 1 + m, a[i].r) - all;
if(l < r) update(l, r - 1, a[i].d, 1, m, 1);
ans += sum[1] * (a[i + 1].h - a[i].h);
}
printf("%lld\n", ans);
}
return 0;
}

Problem G

推出勾股定理的公式之后直接迭代一波

迭代的时候减掉的那个值忘记*2 WA2小时

=。=

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b)	for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i)
#define MP make_pair
#define fi first
#define se second typedef long long LL;
typedef double ld; ld r;
int k;
int l; ld sqr(ld x){ return x * x;} ld calc(ld r, int k){
ld ret;
ld now = (sqrt(3.00) - 1.00) * r;
rep(i, 1, k){
ret = (now * now) / (2 * now + 2 * r);
now -= ret * 2;
} return ret;
} int main(){ while (~scanf("%d", &l)){
if (l == -1) break;
cin >> r;
rep(i, 1, l){
cin >> k;
double yy = calc(r, k);
printf("%d %d\n", k, (int)(yy));
}
} return 0;
}

Problem L

水DP  树状数组维护

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b)	for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i)
#define MP make_pair
#define fi first
#define se second typedef long long LL; const int N = 2e5 + 10; int va[N], w[N], b[N];
int n, x;
int c[N], f[N]; inline void update(int x, int val){
for (; x <= n; x += x & -x) c[x] = max(c[x], val);
} inline int query(int x){
int ret = 0;
for (; x; x -= x & -x) ret = max(ret, c[x]);
return ret;
} int main(){ while (~scanf("%d", &x)){
++n;
if (x >= 10000) va[n] = x - 10000;
else va[n] = x;
if (x < 0) w[n] = 0; else if (x >= 10000) w[n] = 5; else w[n] = 1;
} rep(i, 1, n) b[i] = va[i];
sort(b + 1, b + n + 1);
int cnt = unique(b + 1, b + n + 1) - b - 1;
rep(i, 1, n) va[i] = lower_bound(b + 1, b + cnt + 1, va[i]) - b; memset(c, 0, sizeof c);
rep(i, 1, n){
f[i] = query(va[i]) + w[i];
update(va[i], f[i]);
} int ans = 0;
rep(i, 1, n) ans = max(ans, f[i]);
printf("%d\n", ans);
return 0;
}

2017 ACM/ICPC Asia Regional Guangxi Online 记录的更多相关文章

  1. 2017 ACM/ICPC Asia Regional Beijing Online 记录

    题目链接  Beijing

  2. 2017 ACM/ICPC Asia Regional Xian Online 记录

    题目链接  Xian

  3. 2017 ACM/ICPC Asia Regional Qingdao Online 记录

    题目链接  Qingdao Problem C AC自动机还不会,暂时暴力水过. #include <bits/stdc++.h> using namespace std; #define ...

  4. 2017 ACM/ICPC Asia Regional Urumuqi Online 记录

    比赛题目链接  Urumuqi

  5. 2017 ACM/ICPC Asia Regional Shenyang Online 记录

    这场比赛全程心态爆炸…… 开场脑子秀逗签到题WA了一发.之后0贡献. 前期状态全无 H题想复杂了,写了好久样例过不去. 然后这题还是队友过的…… 后期心态炸裂,A题后缀数组理解不深,无法特判k = 1 ...

  6. 2017 ACM ICPC Asia Regional - Daejeon

    2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...

  7. 2017 ACM/ICPC Asia Regional Shenyang Online spfa+最长路

    transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/1 ...

  8. 2017 ACM/ICPC Asia Regional Qingdao Online

    Apple Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submi ...

  9. HDU - 6215 2017 ACM/ICPC Asia Regional Qingdao Online J - Brute Force Sorting

    Brute Force Sorting Time Limit: 1 Sec  Memory Limit: 128 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...

随机推荐

  1. 快学UiAutomator UiDevice API 详解

    一.按键使用 返回值 方法名 说明 boolean pressBack() 模拟短按返回back键 boolean pressDPadCenter() 模拟按轨迹球中点按键 boolean press ...

  2. CPP-基础:运算符重载详解

    1.运算符重载定义: C++中预定义的运算符的操作对象只能是基本数据类型.但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作.这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功 ...

  3. javaEE(1)_web开发入门

    一.WEB开发的相关知识 1.WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源(如html 页 ...

  4. python--MySQL多表查询

    一 介绍 我们在写项目的时候一般都会建一个数据库,数据库里面会存很多的表,不可能把所有的数据都放在一张表里,因为分表来存数据节省空间,数据的组织结构更清晰,解耦和程度更高,但是这些表本质上还不是一个整 ...

  5. Python9-反射-day27(大年初三)

    复习 class 类名(父类,父类2): 静态属性 = '' #静态属性 类属性 def __init__(self): #初始化方法 self.name = 'alex' def func(self ...

  6. grep理解

    http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html部分摘录于此 grep与正规表达式  字符类 字符类的搜索:如果我想要搜 ...

  7. List<T> List<?> 区别用法

    List<T>是泛型方法,List<?>是限制通配符 List<T>一般有两种用途:1.定义一个通用的泛型方法.伪代码: public interface Dao{ ...

  8. 利用Node.js调用Elasticsearch

    1. 下载elasticsearch库 npm install elasticsearch --save 2.在脚本里导入模块,如下所示 const elasticsearch = require(' ...

  9. 关于EGE图形库在CodeBlocks下的配置

    非常感谢[地球]呵呵@的细心帮助,我差点都放弃了! 我这里使用的是Code::Blocks svn 10595 与 TDM-GCC 5.10 首先下载为 GCC 5.0 以上编译好的 EGE 文件,稍 ...

  10. 【EF 1】EF实体框架 原理+实例

    一.知识回顾 到目前为止,自己学到的链接数据库操作已经经历了几个阶段,分别是:学生信息管理和(第一次)机房收费时的直接连接数据库操作表格,然后是机房个人重构中应用的操作实体,在其中还利用了一个很重要的 ...