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的下标能组成等比数列 ...
随机推荐
- F5 root密码恢复
使用串口线缆链接F5的串口和PC相连接,调节串口的波特率为12000,重启F5 后在启动菜单上和linux 单用户模式一样操作即可.
- SE 2014年5月28日
R1模拟总部,R2 与R3模拟分部 如图配置 (1)网络中目前只有两站点, R1 和R2 .同时R2为动态获取IP地址一方,要求使用要求使用 GRE over IPSec VPN 野蛮模式,保证R1和 ...
- DIV 居中对齐
<div style="text-align:center;margin-right:auto;margin-left:auto">
- 修改linux系统时间、rtc时间以及时间同步
修改linux的系统时间用date -s [MMDDhhmm[[CC]YY][.ss]] 但是系统重启就会从新和硬件时钟同步. 要想永久修改系统时间,就需要如下命令:hwclock hwclock - ...
- LDAPserver的安装
源代码安装,以root用户进行 由于:由于openldap须要用Berkeley DB来存放数据,所以要先安装所以需先安装Berkeley DB 4.2.52数据库. 一 安装Berkeley DB ...
- Windows Phone开发(13):如何规范用户的输入行为
原文:Windows Phone开发(13):如何规范用户的输入行为 很多时候,我们对用户的操作或输入做一定程度的限制,以避免发生不必要的异常或错误,因此,对一些特殊的类型,进行输入限制是很有必要的. ...
- 人们的Live Meeting系列 (floyd)
人活着系列之开会 Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 人活着假设是为了事业.从打工的到老板的,个个都在拼搏,奋斗了多年最终有了非凡成就.有了一 ...
- 使用MVC写模式jsp连接到数据库操作
首先用一个JavaBean封装数据库操作,即mvc中的模型 JdbcBean.java package data; import java.sql.*; public class JdbcBean { ...
- cocos2d-x3.0数据结构
1.cocos2d::Vector 1.头报价"CCVector.h"头文件. 2.保存的数据类型必须是cocos2d::Ref的子类. 3.实现是动态加入数据集合即链表.主要的使 ...
- hdu 4557 非诚勿扰 vector的应用 原来vector 可以删除指定位置元素 不过消耗大
非诚勿扰 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submi ...