最大的K-偏差排列

每次取可选范围里的最大的数字,如果最左侧的数字还没有使用就直接使用最左侧的数字

#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef queue<int> QI; void makedata() {
freopen("input.txt", "w", stdout);
fclose(stdout);
} int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
int n, k;
bool f[];
cin >> n >> k;
memset(f, false, sizeof(f));
for (int i = ; i <= n; i++) {
if (i - k > && !f[i - k]) {
f[i - k] = true;
cout << i - k << ' ';
continue;
}
for (int j = i + k; j > i - k; j--) {
if (j > n || j < ) continue;
if (!f[j]) {
f[j] = true;
cout << j << ' ';
break;
}
}
}
return ;
}

孤独的字符

枚举每个字符,计算它是一个孤独字符时包含它的区间有多少个

#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef queue<int> QI; void makedata() {
freopen("input.txt", "w", stdout);
fclose(stdout);
} string s;
int pre[], nex[], last[]; int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
cin >> s;
int n = s.length();
memset(last, -, sizeof(last));
for (int i = ; i < n; i++) {
pre[i] = last[s[i]];
nex[i] = n;
if (last[s[i]] >= ) nex[pre[i]] = i;
last[s[i]] = i;
}
lint ans = ;
for (int i = ; i < n; i++) {
ans += 1LL * (nex[i] - i) * (i - pre[i]);
}
cout << ans << endl;
return ;
}

秋天来了

这题有问题,都说了l是唯一最高完了样例好几个最高???最高的还能看到别人???

Nim森林

这题跟这棵树没啥关系。两个回合以后,是一个典型的反nim游戏,先手获胜的条件为:1)所有堆的石子个数为1,且NIM_sum=0或2)至少有一堆的石子个数大于1,且 NIM_sum≠0。第一种获胜情况是所有堆狮子个数为1且有偶数堆,这种情况是不可能达到的。经过第一回合操作后,只要有石子数为1的石堆,B都可以拿完多于1的石堆且剩下奇数个石子数为1的石堆,所以只需考虑第二种情况(且所有石堆石子数大于1)。按代价从大到小的顺序添加各个石堆的石子数到线性基中,成功添加进去的就是第二回合给B留下的。

#include <bits/stdc++.h>
using namespace std;
using LL = int64_t;
using LD = long double;
const LL INF = 0x3f3f3f3f;
const LL mod = 1e9 + ; template <typename T>
struct LnBase{
int sz, szc;
T *x;
int *y;
LnBase (){x = ; sz = sizeof(T) << ; szc = -; resize(sz);}
void resize(int size){
sz = size; if(!x) delete(x); x = new T[sz + ]; y = new int[sz + ];
memset(x, , sz * sizeof(T)); memset(y, , sz << );
}
T operator[](int h){return x[h];}
int add(T v){
for(int i = sz - ; i >= ; i--)
if(v & (T) << i){if(!x[i]){x[i] = v; szc = -; return i;} v ^= x[i];}
return -;
}
int find(T v){
for(int i = sz - ; i >= ; i--){
if(v & (T) << i && x[i]) v ^= x[i]; if(!v) return ;}
return ;
}
T Max(){
T s = ;
for(int i = sz - ; i >= ; i--){if((s ^ x[i]) > s) s ^= x[i];}
return s;
}
T Min(){
for(int i = ; i < sz; i++) if(x[i]) return x[i];
return -;
}
void Canonicity(){
int i, j;
for(i = sz - ; i > ; i--)
for(j = i - ; j >= ; j--) if(x[i] & (T) << j) x[i] ^= x[j];
for(szc = i = ; i < sz; i++) if(x[i]) y[szc++] = i;
}
T Kth(long long K){
if(szc < ) Canonicity(); if(K >= 1ll << szc) return -; T s = ;
for(int i = szc - ; i >= ; i--) if(K & 1ll << i) s ^= x[y[i]];
return s;
}
}; struct node {
__int128 a, t;
bool operator<(const node &e) const { return t > e.t; }
};
int main() {
ios::sync_with_stdio();
cin.tie();
int n;
cin >> n;
n--;
vector<node> a(n);
for (auto &i : a) {
LL u, v, a, t;
cin >> u >> v >> a >> t;
i.a = a;
i.t = u ^ v ^ t;
}
sort(a.begin(), a.end());
int flag = ;
__int128 ans = , sum = ;
LnBase<__int128> b;
for (auto& s : a) {
sum += s.t;
if (s.a == ) continue;
flag = ;
if (b.add(s.a) != -) ans += s.t;
}
if (flag) cout << "No\n";
else {
ans = sum - ans;
string s = "";
while (ans) {
s += '' + ans % ;
ans /= ;
}
if (s == "") s = "";
reverse(s.begin(), s.end());
cout << s << '\n';
}
}

[hihocoder][Offer收割]编程练习赛58的更多相关文章

  1. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  2. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  3. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

    比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...

  4. hihocoder offer收割编程练习赛8 C 数组分拆

    思路:(引自bfsoyc的回答:http://hihocoder.com/discuss/question/4160) 动态规划.状态dp[i]表示 前i个数的合法的方案数,转移是 dp[i] = s ...

  5. hihocoder [Offer收割]编程练习赛18 C 最美和弦(dp)

    题目链接:http://hihocoder.com/problemset/problem/1532 题解:一道基础的dp,设dp[i][j][k][l]表示处理到第几个数,当前是哪个和弦错了几次初始x ...

  6. hihoCoder [Offer收割]编程练习赛3 D子矩阵求和

    子矩阵求和 http://hihocoder.com/discuss/question/3005 声明一下: n是和x一起的,m是和y一起的 x是横着的,y是纵着的,x往右为正,y往下为正 (非常反常 ...

  7. hihocoder [Offer收割]编程练习赛52 D 部门聚会

    看了题目的讨论才会做的 首先一点,算每条边(u, v)对于n*(n+1)/2种[l, r]组合的贡献 正着算不如反着算 哪些[l, r]的组合没有包含这条边(u, v)呢 这个很好算 只需要统计u这半 ...

  8. hihocoder [Offer收割]编程练习赛14

    A.小Hi和小Ho的礼物 谜之第1题,明明是第1题AC率比C还要低.题目是求在n个不同重量袋子选4袋,2袋给A,2袋给B,使2人获得重量相同,求问方案数. 我也是一脸懵b...o(n2)暴力枚举发现把 ...

  9. hihocoder [Offer收割]编程练习赛8

    第一次做这种比赛,被自己坑的好惨... A.这道题的关键其实是如果有k和n满足kD+F>nL>kD则不能走无限远,分支看似难整理,其实比较简单,F>L根本就不用算了,明摆着就是Bsi ...

随机推荐

  1. T1097 校门外的树 codevs

    http://codevs.cn/problem/1097/ 题目描述 Description 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的 ...

  2. 1048 石子归并codevs

    1048 石子归并codevs 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]+w[i+1 ...

  3. css3 和 html5 笔记

    1.css3 ie下大部分不兼容 ie9以下 浏览器低版本不兼容 需要写 -webket-transition:1s -moz-transition: 1s -o-transition:1s tran ...

  4. 转:Redis 缓存策略

    转:http://api.crap.cn/index.do#/web/article/detail/web/ARTICLE/7754a002-6400-442d-8dc8-e76e72d948ac 目 ...

  5. VM Workstation 虚拟机下如何安装VMtools

    不同版本Linux原理类似,这里以Debian为例. 1 根据提示点击Install Tools,CDROM中出现VmwareTools的安装包,在你的主文件夹下新建一个文件夹(随便叫什么都行,我新建 ...

  6. 猫猫学iOS 之CoreLocation反地理编码小Demo输入经纬度得到城市

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 输入经纬度,能够得到相应的地名 二:思路 跟地里编码差 ...

  7. poj-1635 Subway tree systems(推断两个有根树是否同构)-哈希法

    Description Some major cities have subway systems in the form of a tree, i.e. between any pair of st ...

  8. 我的Go语言学习之旅七:创建一个GUI窗口

    在上次中,刚刚学过了  弹窗效果.这里再接着学习一下怎样创建一个窗口. 还是老路子,先上代码: package main import ( "github.com/lxn/go-winapi ...

  9. 从头认识Spring-1.9 内部类注入Bean

    这一章节我们来讨论一下内部类注入Bean. 1.domain 蛋糕类:(跟前一章节的一样) package com.raylee.my_new_spring.my_new_spring.ch01.to ...

  10. 【POJ 1716】 Integer Intervals

    [题目链接] 点击打开链接 [算法] 差分约束系统 [代码] #include <algorithm> #include <bitset> #include <cctyp ...