BestCoder Round #16
BestCoder Round #16
这场挫掉了,3挂2,都是非常sb的错误 23333 QAQ
A:每一个数字。左边个数乘上右边个数,就是能够组成的区间个数,然后乘的过程注意取模不然会爆掉
B:dp,dp[i][2]记录下第一长的LIS,和第二长的LIS。哎,转移的时候一个地方写挫掉了导致悲剧啊QAQ
C:首先假设知道Nim游戏的,就非常easy转化问题为。一些数字能否选几个能否异或和为0。那么就是每一个数字拆成40位。然后每一位异或和为0。这样就能够构造出40个方程,然后高斯消元求解,假设有自由变元就是有解。由于必定有一个全是0的解。而由于不能全取,所以这个解是错误的,那么就变成推断自由变元个数了,还是一个地方写挫掉了悲剧啊QAQ
代码:
A:
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
#include <algorithm>
using namespace std; typedef long long ll;
const int N = 500005;
const ll MOD = 1000000007; int t, n;
ll a; int main() {
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
ll ans = 0;
for (ll i = 0; i < n; i++) {
scanf("%I64d", &a);
ans = (ans + a * (n - i) % MOD * (i + 1) % MOD) % MOD;
}
printf("%I64d\n", ans);
}
return 0;
}
B:
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std; const int N = 1005; int t, n, a[N], dp[N][2]; int main() {
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
int ans0 = 0, ans1 = 0;
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
dp[i][0] = 1; dp[i][1] = 0;
for (int j = 1; j < i; j++) {
if (a[i] <= a[j]) continue;
if (dp[i][0] <= dp[j][0] + 1) {
dp[i][1] = dp[i][0];
dp[i][0] = dp[j][0] + 1;
} else if (dp[i][1] < dp[j][0] + 1) {
dp[i][1] = dp[j][0] + 1;
}
dp[i][1] = max(dp[i][1], dp[j][1] + 1);
}
if (ans0 <= dp[i][0]) {
ans1 = ans0;
ans0 = dp[i][0];
} else if (ans1 < dp[i][0]) ans1 = dp[i][0];
ans1 = max(ans1, dp[i][1]);
}
printf("%d\n", ans1);
}
return 0;
}
C:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; typedef long long ll; const int N = 1005;
int t, n, A[45][N];
ll a; int rank(int m, int n) {
int i = 0, j = 0, k, r, u;
while (i < m && j < n) {
r = i;
for (k = i; k < m; k++)
if (A[k][j]) {r = k; break;}
if (A[r][j]) {
if (r != i) for(k = 0; k <= n; k++) swap(A[r][k], A[i][k]);
for (u = i + 1; u < m; u++) if (A[u][j])
for (k = i; k <= n; k++) A[u][k] ^= A[i][k];
i++;
}
j++;
}
return n - i;
} int main() {
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
memset(A, 0, sizeof(A));
for (int i = 0; i < n; i++) {
scanf("%lld", &a);
for (int j = 0; j < 40; j++)
A[j][i] = (a>>j)&1;
}
printf("%s\n", rank(40, n) > 0 ? "Yes" : "No");
}
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
BestCoder Round #16的更多相关文章
- HDU5088——Revenge of Nim II(高斯消元&矩阵的秩)(BestCoder Round #16)
Revenge of Nim II Problem DescriptionNim is a mathematical game of strategy in which two players tak ...
- HDU5087——Revenge of LIS II(BestCoder Round #16)
Revenge of LIS II Problem DescriptionIn computer science, the longest increasing subsequence problem ...
- HDU5086——Revenge of Segment Tree(BestCoder Round #16)
Revenge of Segment Tree Problem DescriptionIn computer science, a segment tree is a tree data struct ...
- hdu 5086 Revenge of Segment Tree(BestCoder Round #16)
Revenge of Segment Tree Time Limit: 4000/20 ...
- bestcoder Round #7 前三题题解
BestCoder Round #7 Start Time : 2014-08-31 19:00:00 End Time : 2014-08-31 21:00:00Contest Type : ...
- hdu5631 BestCoder Round #73 (div.2)
Rikka with Graph Accepts: 123 Submissions: 525 Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
- hdu5630 BestCoder Round #73 (div.2)
Rikka with Chess Accepts: 393 Submissions: 548 Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
- (BestCoder Round #64 (div.2))Array
BestCoder Round #64 (div.2) Array 问题描述 Vicky是个热爱数学的魔法师,拥有复制创造的能力. 一开始他拥有一个数列{1}.每过一天,他将他当天的数列复制一遍,放在 ...
- BestCoder Round #89 02单调队列优化dp
1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01 HDU 5944 水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...
随机推荐
- .Net 文本框实现内容提示(仿Google、Baidu)
原文:.Net 文本框实现内容提示(仿Google.Baidu) 1.Demo下载: 文本框实现内容提示(仿Google.Baidu).rar 2.创建数据库.表(我用的sqlserver2008数据 ...
- Ucan23操作系统项目地址
期间耽误了近半年的时间.在昨天最终完毕了Ucan23OS, 项目托管在GitHub上,地址为: https://github.com/howardking/UCAN23OS 以下为操作系统的执行截图 ...
- POJ 1184 聪明的打字员
简直难到没朋友. 双向bfs + 剪枝. 剪枝策略: 对于2--5位置上的数,仅仅有当光标在相应位置时通过swap ,up.down来改变.那么当当前位置没有达到目标状态时,left和right无意义 ...
- jquery validation remote depends 验证触发条件
背景: 1:简介页面的变化: 2:邮箱不能反复 改动页面,邮箱默认带出,但字段上带有remote验证.不能反复,焦点由邮箱输入框失去时.会默认触发remote验证. 介绍完成 watermark/2/ ...
- (转)SWT的CheckBoxTreeViewer的相关用法
最近在项目中需要用到遍历某个目录下所有文件,并按照树形结构展示,同时还需要提供对树形菜单的选择展开等操作.在eclipse中提供了CheckboxTreeViewer组件来满足所需要的功能 下面是需要 ...
- U8Linux磁盘与文件系统管理
1.扇区为最小的物理存储单位,每个扇区为512bytes;将扇区组成一个圆,那就是柱面,柱面是分区的最小单位.Linux系统的EX2文件系统:inode的内容用于记录文件的权限与相关属性. 至于blo ...
- TCP closing a connection
client closes socket: clientSocket.close(); step1 :client sends TCP FIN control segment to server st ...
- CSS计数器妙用
做web的经常会遇到类似排行榜的需求, 特别是要求前n名的样式和后面人不一样. 通常大多数人对于这个需求的做法都是在后端处理好排名名次, 在前端填入内容, 然后针对前n名做特殊的样式处理. 但是这样有 ...
- 关于SSIS批量抽取Excel文件报0x80004005错误的解决办法
原文:关于SSIS批量抽取Excel文件报0x80004005错误的解决办法 标题: Microsoft Visual Studio ------------------------------ Pa ...
- Storm具体解释一、Storm 概述
一.Storm概述 Storm是一个分布式的.可靠的.零失误的流式数据处理系统. 它的工作就是委派各种组件分别独立的处理一些简单任务.在Storm集群中处理输入流的是Spout组件,而Spo ...