const

The 2018 ACM-ICPC Asia Beijing Regional Contest

流过昼夜 提交于 2020-03-23 18:43:20
http://hihocoder.com/problemset/problem/ #1870 : Jin Yong’s Wukong Ranking List 我是每加1个点就dfs判断1次。 正解是拓扑排序。。。 1 #include <cstdio> 2 #include <cstdlib> 3 #include <ctime> 4 #include <cstring> 5 #include <string> 6 #include <map> 7 #include <set> 8 #include <list> 9 #include <queue> 10 #include <vector> 11 #include <bitset> 12 #include <algorithm> 13 #include <iostream> 14 using namespace std; 15 const int maxn=50; 16 17 bool vis[maxn]; 18 char str[maxn][maxn],a[maxn],b[maxn],result1[maxn],result2[maxn]; 19 vector<int>e[maxn]; 20 int r; 21 22 void dfs(int d) 23 { 24 vector<int>::iterator j; 25 vis

ICE异步程序设计-----AMI/AMD

梦想的初衷 提交于 2020-03-23 15:38:19
1 简介 AMI 异步方法调用(AMI) 这个术语描述的是客户端的异步编程模型支持。 如果你使用AMI 发出远地调用,在Ice run time 等待答复的同时,发出调用的线程不会阻塞。相反,发出调用的线程可以继续进行各种活动,当答复最终到达时, Ice run time 会通知应用。通知是通过回调发给应用提供的编程语言对象的 AMD 一个服务器在同一时刻所能支持的同步请求数受到Ice run time 的服务器线程池的尺寸限制(参见15.3 节)。如果所有线程都在忙于分派长时间运行的操作,那么就没有线程可用于处理新的请求,客户就会经验到不可接受的无响应状态。异步方法分派(AMD) 是AMI 的服务器端等价物 ,能够解决这个可伸缩性问题 。 在使用AMD 时,服务器可以接收一个请求,然后挂起其处理,以尽快释放分派线程。当处理恢复、结果已得出时,服务器要使用Ice runtime 提供的回调对象,显式地发送响应。 使用AMD时,客户端如果需要等待返回值,那就一直等待,否则就继续往下执行。 为什么使用AMD? 用实际的术语说, AMD 操作通常会把请求数据(也就是,回调对象和操作参数)放入队列 ,供应用的某个线程(或线程池)随后处理用。这样,服务器就使分派线程的使用率降到了最低限度,能够高效地支持数千并发客户。 另外, AMD 还可用于需要在完成了客户的请求之后继续进行处理的操作

C++标准模板库里面的容器

ぃ、小莉子 提交于 2020-03-23 13:32:09
1. 顺序容器 sequential container 单一类型 元素组成的 有序 集合 优:顺序访问元素快 不足:添加、删除元素性能相对低 非顺序访问元素性能相对低 vector、string、array都是连续的内存空间 容器选择:取决于执行访问的操作多还是插入删除的操作多     ①一般用vector     ②空间开销很重要时,不适用链表如list、forward_list     ③需要随机访问:vector、deque     ④要在中间进行插入、删除:链表类型如list、forwad_list     ⑤只要在头尾插入、删除:deque     ⑥读取输入时要在中间插入,之后要随机访问: 输入时用vector追加数据,在调用sort()函数,以避免在中间添加元素 若必须要在中间插入元素,输入时用list,输入完成后将list的内容保存到vector中 1.1 vector    https://zh.cppreference.com/w/cpp/container/vector (1)vector的增长 vector<int> ivec; cout<<"size:"<<ivec.size()<<endl; cout<<"capacity:"<<ivec.capacity()<<endl; for(int i=0;i<20;i++) { ivec.push_back

C++项目中的extern \"C\" {}

浪尽此生 提交于 2020-03-23 13:12:09
引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __cplusplus } #endif 它到底有什么用呢,你知道吗?而且这样的问题经常会出现在面试or笔试中。下面我就从以下几个方面来介绍它: 1、#ifdef _cplusplus/#endif _cplusplus及发散 2、extern "C" 2.1、extern关键字 2.2、"C" 2.3、小结extern "C" 3、C和C++互相调用 3.1、C++的编译和连接 3.2、C的编译和连接 3.3、C++中调用C的代码 3.4、C中调用C++的代码 4、C和C++混合调用特别之处函数指针 1、#ifdef _cplusplus/#endif _cplusplus及发散 在介绍extern "C"之前,我们来看下#ifdef _cplusplus/#endif _cplusplus的作用。很明显#ifdef/#endif、#ifndef/#endif用于条件编译,#ifdef _cplusplus/#endif _cplusplus——表示如果定义了宏_cplusplus,就执行#ifdef/#endif之间的语句,否则就不执行。 在这里为什么需要#ifdef _cplusplus/#endif

Google KickStart 2020 RoundA

。_饼干妹妹 提交于 2020-03-23 12:26:57
第一题:Allocation 题意: N个房子,第i个房子价格为Ai美元,用B美元最多买几个房子。 Limit: 1 ≤ T ≤ 100. 1 ≤ B ≤ 10^5. 1 ≤ Ai ≤ 1000, for all i. 1 ≤ N ≤ 10^5. 分析: 按价格从小到大排序即可。 #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<string> #include<iostream> #include<set> #include<map> #include<stack> #include<queue> #include<vector> #include<sstream> typedef long long LL; const int INF = 0x3f3f3f3f; using namespace std; const int MAXN = 100000 + 10; const double eps = 1e-8; int dcmp(double a, double b){ if(fabs(a - b) < eps) return 0; return a < b ? -1 : 1; } int a[MAXN]; int main(){

slot signal机制

强颜欢笑 提交于 2020-03-23 12:09:35
有一个比较 经典的实现: http:// sigslot.sourceforge.net / 很精简的 signal slot的实现,跨平台。webrtc项目在用,我在自己项目里也用了。 这个源码有2000多行,但是一大半是为了模板适配不同个数的参数的代码,干货不足1000行。 附上代码链接,这个项目只有一个头文件,够小型了吧 http:// sigslot.cvs.sourceforge.net /viewvc/sigslot/sigslot/sigslot.h?revision=1.1.1.1&content-type=text%2Fplain Gtalk源码剖析之:sigslot介绍 源码: // sigslot.h: Signal/Slot classes // // Written by Sarah Thompson (sarah@telergy.com) 2002. // // License: Public domain. You are free to use this code however you like, with the proviso that // the author takes on no responsibility or liability for any use. // // QUICK DOCUMENTATION // // (see

asyncData异步数据

删除回忆录丶 提交于 2020-03-23 09:49:42
async异步数据 1. asyncData方法函数 :会在每次加载页面组件之前调用,可以完成在服务器预渲染。建议需要爬虫抓取的页面使用他来获取请求数据 // 引入封装好的接口 import { getData, getNavs } from '@/api/index' // 在asyncData中获取数据,返回的数据nuxt会自动混入到data函数中去 async asyncData ({ params, route, error }) { console.log(route) const [swipers, navs] = await Promise.all([ getData(), getNavs() ]) return { swiperList: swipers.data, navList: navs.data } }, 来源: https://www.cnblogs.com/zxuedong/p/12550195.html

typedef用法剖析

夙愿已清 提交于 2020-03-23 07:20:08
typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。 如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法? 使用 typedefs 为现有类型创建同义字。 定义易于记忆的类型名   typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现在所声明的变量名字中,位于 ''typedef'' 关键字右边。例如: typedef int size;   此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size: void measure(size * psz); size array[4]; size len = file.getlength(); std::vector <size> vs;   typedef 还可以掩饰符合类型,如指针和数组。例如,你不用象下面这样重复定义有 81 个字符元素的数组: char line[81]; char text[81];

2.node接口搭建--连接MongoDB数据库

半城伤御伤魂 提交于 2020-03-23 06:25:07
1.下载安装本地mongodb 2.安装mongoose npm install mongoose 3.连接本地mongodb const express = require("express") const mongoose = require("mongoose") const app = express() const url = require("./config/keys").mongoURI//这里是mongodb地址 mongoose.connect(url,{ useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log("连接成功")) .catch(err => console.log(err)) app.get("/",(req,res) => { res.send("Hello world!"); }) const port = process.env.PORT || 5000 //端口 app.listen(port,() => { console.log('Server runing on port $(port)') }) 来源: https://www.cnblogs.com/sansuixs/p/12549937.html

让程序在崩溃时输出Dump文件

泄露秘密 提交于 2020-03-23 03:36:54
#include <Windows.h> #include <tchar.h> #include <DbgHelp.h> #include <iostream> #include <vector> // 添加对dbghelp.lib的编译依赖 // #pragma comment(lib, "dbghelp.lib") using namespace std; const int MAX_ADDRESS_LENGTH = 32; const int MAX_NAME_LENGTH = 1024; // 崩溃信息 // struct CrashInfo { CHAR ErrorCode[MAX_ADDRESS_LENGTH]; CHAR Address[MAX_ADDRESS_LENGTH]; CHAR Flags[MAX_ADDRESS_LENGTH]; }; // CallStack信息 // struct CallStackInfo { CHAR ModuleName[MAX_NAME_LENGTH]; CHAR MethodName[MAX_NAME_LENGTH]; CHAR FileName[MAX_NAME_LENGTH]; CHAR LineNumber[MAX_NAME_LENGTH]; }; // 安全拷贝字符串函数 // void SafeStrCpy(char