链接:https://www.nowcoder.com/acm/contest/212/A
作为「Misaka Network」的中心司令塔的 LastOrder出事了,为了维持 「Misaka Network」的正常工作,需要临时选出一个Sister作为中心司令塔。
为了弥补能力上的不足,对于选出的Sister有一些要求。
具体来说,平面上有 n 个 Sister,问能否找到一个Sister作为中心司令塔,使得其他 Sister 都在以她为圆心的一个圆上,如果找不到这样的Sister,则输出 “-1”(不含引号)。
输入描述:
第一行一个数 n
接下来 n 行,第 i 行两个整数 xi, yi ,表示第 i 个Sister在平面上的坐标。
输出描述:
输出共一个数,表示选出的Sister的编号,如果找不到则输出 “-1”。

记录:直接暴力。

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1010;
typedef long long LL;
typedef pair<LL, LL> pii;
LL x[MAXN], y[MAXN];int main() {int n; scanf("%d", &n);for(int i = 1; i <= n; ++i) scanf("%lld %lld", &x[i], &y[i]);int id = -1;for(int i = 1; i <= n; ++i) {bool flag = true; LL ans = -1;for(int j = 1; j <= n; ++j) {if(i == j) continue;if(ans < 0) ans = (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]);if(ans != (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j])) flag = false;}if(flag) id = i;}printf("%d\n", id);return 0;
}

链接:https://www.nowcoder.com/acm/contest/212/B
有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏…
Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太。游戏共进行 k 回合,每一回合 Kuroko会选有呱太的一行 i,在这之后Misaka会选择一列 j ,并拿走格子 (i, j) 上的所有呱太,Misaka希望自己拿走的呱太尽可能多,而Kuroko不想让Misaka拿走很多呱太,所以她希望拿走的呱太尽可能少。
在一旁围观的恒温死神希望预测结果,请你预测在双方都采取最优策略的情况下,Misaka最终能拿走呱太的数量。
输入描述:
第一行三个数 n, m, k。
接下来 n 行,每行 m 个数,第 i 行第 j 个数表示棋盘第 i 行第 j 列上的呱太数量 ai,j。
输出描述:
输出共一个数,表示在你的预测下,Misaka最终能拿走呱太的数量。

记录:【贪心】
主要要想明白一件事:如果当前行被拿走第一个数字,那么这行一定会被去完或者操作数不够,也就是至多存在一行取了数字但没有被取尽。

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1010;
typedef long long LL;
typedef pair<LL, LL> pii;
LL mp[MAXN][MAXN], a[MAXN];
pii dp[MAXN];int main() {int n, m, k;scanf("%d %d %d", &n, &m, &k);int ans = k / m;int res = k % m; LL sum = 0;for(int i = 1; i <= n; ++i) {for(int j = 1; j <= m; ++j) {scanf("%lld", &a[j]);mp[i][j] = a[j];dp[i].first += a[j];sum += a[j];}sort(a + 1, a + m + 1);for(int j = m; j >= m - res + 1; --j) {dp[i].second += a[j];}}if(ans == n) {printf("%lld\n", sum);return 0;}sum = (1ll << 60);sort(dp + 1, dp + n + 1);LL cnt = 0, num;for(int i = 1; i <= ans; ++i) cnt += dp[i].first;for(int i = 1; i <= n; ++i) {num = cnt + dp[i].second;if(i <= ans) num = num - dp[i].first + dp[ans + 1].first;sum = min(sum, num);}printf("%lld\n", sum);return 0;
}

链接:https://www.nowcoder.com/acm/contest/212/C
题目描述
听说彩虹有七种颜色?
一维坐标轴上n条线段,每条线段左端点l,右端点r,颜色为c,从中选m种颜色的互不接触的线段,每种颜色可选多条,所选线段的总长度最长为多少?
输入描述:
第一行2个整数 n, m;
接下来n行,每行3个整数l, r, c。
输出描述:
一个整数,表示所选线段的最长的总长度;若选不了,输出-1;

记录:【状压DP+一般DP】
比赛时我写的时候,颜色那么少,肯定按颜色状压呀。dp[i][j]:表示前i段且颜色状态为j时的最长长度,对于当前第i段,枚举所有状态颜色,然后对于当前每一种颜色状态去寻找长度最长且不相交的前一状态,就是在这没想到怎么O(1)转移。。。
题解里直接用一个一般dp维护我上述说的“寻找”,然后就可以O(1)转移。仔细一想也是,前后两个相邻线段无论情况如何,都可以取一下最大值。除此之外,二分预处理一下前驱,用并查集记录,然后状压+一般dp进行转移。
d p [ i ] [ j ∣ r t ] = m a x ( d p [ p r e [ i ] ] [ j ] + 1 l l ∗ s [ i ] . l e n , d p [ i ] [ j ∣ r t ] ) ; dp[i][j | rt] = max(dp[pre[i]][j] + 1ll * s[i].len, dp[i][j | rt]); dp[i][j∣rt]=max(dp[pre[i]][j]+1ll∗s[i].len,dp[i][j∣rt]);
d p [ i ] [ j ] = m a x ( d p [ i − 1 ] [ j ] , d p [ i ] [ j ] ) ; dp[i][j] = max(dp[i - 1][j], dp[i][j]); dp[i][j]=max(dp[i−1][j],dp[i][j]);

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> pii;
const int mod = 1e9 + 7;
const int MAXN = 1e5 + 5;
const LL INF = (1ll << 60);
int pre[MAXN]; LL dp[MAXN][300];
int n, m = 0, k;struct node {int l, r, c;int len;
}s[MAXN];
bool cmp(node x, node y) { return x.r < y.r; }int get(int x) {int L = 0, R = n;while(R >= L) {int mid = (L + R) >> 1;if(s[mid].r < s[x].l) L = mid + 1;else R = mid - 1;}return R;
}int so(int x) {int ans = 0;while(x) {if(x & 1) ans++;x >>= 1;}return ans;
}int main() {scanf("%d %d", &n, &k);for(int i = 1; i <= n; ++i) {scanf("%d %d %d", &s[i].l, &s[i].r, &s[i].c);s[i].len = s[i].r - s[i].l;m = max(m, s[i].c);}m = (1 << m) - 1;sort(s + 1, s + n + 1, cmp);for(int i = 1; i <= n; ++i) {pre[i] = get(i);//printf("## %d %d\n", pre[i], i);}for(int i = 0; i <= n; ++i) {for(int j = 0; j <= m; ++j) {dp[i][j] = -INF;//if(so(j) == 1) dp[0][j] = 0;}}LL ans = -1; dp[0][0] = 0;for(int i = 1; i <= n; ++i) {int rt = (1 << (s[i].c - 1));for(int j = 0; j <= m; ++j) {dp[i][j | rt] = max(dp[pre[i]][j] + 1ll * s[i].len, dp[i][j | rt]);dp[i][j] = max(dp[i - 1][j], dp[i][j]);if(so(j | rt) == k) {ans = max(ans, dp[i][j | rt]);//printf("# %d %lld %d\n", (j | rt), ans, i);}}}
/*for(int i = 0; i <= n; ++i) {for(int j = 0; j <= m; ++j) {printf("%d %d %lld\n", i, j, dp[i][j]);}}
*/printf("%lld\n", ans);return 0;
}

Wannafly挑战赛26相关推荐

  1. Wannafly挑战赛26 题解

    Wannafly挑战赛26 题目连接 https://www.nowcoder.com/acm/contest/212#question A. 御坂网络 枚举圆心所在的位置, O ( n ) O(n) ...

  2. Wannafly挑战赛26 御坂网络

    链接:https://ac.nowcoder.com/acm/contest/212/A 来源:牛客网 御坂网络 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  3. Wannafly挑战赛26: B. 冥土追魂(思维题)

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misa ...

  4. Wannafly挑战赛26 B.冥土追魂 贪心

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misa ...

  5. Wannafly挑战赛26 B 冥土追魂

    首先,证明结果一定是取某些整行,再加上一个多余的一行的前几个. 假如: x1<=x2<=x3<=x4<=x5 y1<=y2<=y3<=y4<=y5 取6 ...

  6. Wannafly挑战赛26:B冥土追魂(模拟?贪心?暴力?)

    题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 k 回合,每一 ...

  7. nowcoder (牛客)Wannafly挑战赛26 B: 冥土追魂 (思维)

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...

  8. Wannafly挑战赛26 B 冥土追魂(暴力)

    题意:链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka ...

  9. Wannafly挑战赛26 B冥土追魂

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...

  10. wannafly挑战赛26 B 冥土追魂 (思维+排序)

    大致题意 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏- Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 k 回合,每一回合 ...

最新文章

  1. C语言字符串操作函数
  2. ArduinoYun教程之ArduinoYun硬件介绍
  3. 数据段、数据报、数据包、帧的区别与联系
  4. SQL SERVER中强制类型转换cast和convert的区别
  5. MySql中 delimiter 详解
  6. Configuration、SessionFactory、Session
  7. softmax ce loss_手写softmax和cross entropy
  8. python的序列类型及其特点_Fluent Python 笔记——序列类型及其丰富的操作
  9. 列表生成式(List)
  10. python六种数据类型不可变_python面试题(-)可变数据类型与不可变数据类型
  11. 视频号推荐机制:可社交裂变冷启动
  12. 用友U8案例教程成本报表
  13. 南京掌上公交一款好用的手机app
  14. 英语和数学不好是不是学不了计算机语言,英语和数学不好能学好C语言吗
  15. 互联网模式OTO、C2C、B2B、B2C名词
  16. [转] 看看清华的同学在四年的大学中干什么吧,非常值得我们去学习。『天行键,君子以自强不息;地势坤,君...
  17. USBasp制作资料及全过程(菜鸟版)
  18. Silverlight4Beta之RichTextArea
  19. Mybatis入门很难吗?
  20. 安装驱动时,错误提示:类别安装程序拒绝安装或更新此设备

热门文章

  1. python自学 适合新手的 python人机对战小游戏
  2. 网站引入新浪微博登录
  3. 家用计算机怎么样上网,如何能让自己家的电脑正确上网,自己动手丰衣足食
  4. 无人机技术在森林资源保护中的应用
  5. 浅谈MySQL数据库备份的几种方法
  6. Oracle创建Database Link的两种方式
  7. 知道一个IP地址,如何计算出它的子网掩码啊?
  8. python全盘搜索文件_python实现全盘扫描搜索功能的方法
  9. 和ESP8266 Arduino谈场恋爱 03 玩几个例程
  10. php的按钮submit,html5中submit是按钮么