[11.7]模拟

来源:互联网 发布:nba2konline张伯伦数据 编辑:程序博客网 时间:2024/06/10 09:07

//100 + 30 + 20

少女
【问题描述】
你是能看到第一题的 friends 呢。
——hja
少女在图上开车,她们希望把图上每条边分配给与其相连的点中的一个,
并且每个点最多被分配一条边,问可能的方案数。

联通块上有环,方案数为2;没有环为点数
dfs判一下就好

#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define ll long longconst int maxn = 1000000 + 100;const int mod = 1e9 + 7;int n,m;struct edge {    int u,v;    int next;}e[maxn << 1];int head[maxn], tot = 0;int read() {    int x = 0, f = 1;    char ch = getchar();    while(ch < '0' || ch > '9') {        if(ch == '-') f = -1;        ch = getchar();    }    while(ch >= '0' && ch <= '9') {        x = (x << 1) + (x << 3) + ch - '0';        ch = getchar();    }    return x * f;}void add(int u, int v) {    e[++tot] = (edge){u,v,head[u]};    head[u] = tot;}int vis[maxn],p;int num[maxn];bool dfs(int x, int fa) {    num[p]++;    for(int i = head[x]; i; i = e[i].next) {        int v = e[i].v;        if(v == fa) continue;        if(!vis[v]) {            vis[v] = 1;            return dfs(v,x);        }        else return true;    }    return false;}int main() {    freopen("girl.in","r",stdin);    freopen("girl.out","w",stdout);    n = read(), m = read();    for(int i = 1; i <= m; i++) {        int u = read(),  v = read();        add(u,v), add(v,u);    }    ll ans = 1;    for(int i = 1; i <= n; i++) {        if(!vis[i]) {            p = i;            if(dfs(i,0)) ans = (ans * 2LL) % mod;            else ans = (ans * (ll) num[i]) % mod;        }    }    cout<<ans<<endl;    return 0;}

终末
【问题描述】
你是能看到第二题的 friends 呢。
——laekov
没有尽头的世界之中,我们想知道0 − o中有多少个数在k进制下和−k进制
下的表示方式一样。(举个例子,4的−3进制表示为4 = 121 −3 = 1 × (−3)
//明明想到的正解,调了2小时,结果还是爆了(处理细节太渣了
发现当偶数位为0时,奇数为什么数都行

#include<iostream>#include<cstdio>#include<cmath>using namespace std;#define ll long longconst int maxn = 100000 + 100;ll n,k,cnt = 0;ll a[maxn],sum[maxn],ans = 0;int main() {    cin>>n>>k;                          //化为k进制    while(n) a[++cnt] = n % k, n /= k;    if(cnt & 1)    for(int i = cnt; i >= 1; i--) {        if(a[i]) {            if(!(i & 1)) {                ans += pow(k,i/2);                break;            }            ans +=  (ll)a[i] * pow(k,i/2);            if(i == 1) ans++;        }    }       else ans = pow(k,cnt/2);    cout<<ans;    return 0;}

旅行
【问题描述】
你是能看到第三题的 friends 呢。
——aoao
最后的在树上,给你一棵o个点的树,每个点有点权。每次你可以选择
一个点开始旅行,获得这个点到1号点路径上所有点的点权,然后把这些点的点
权全部变成0。你可以旅行k次,问能获得的最大点权和。

//输出了个所有点之和得了20分~~~

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被要求穿超级短的超短裙 穿花裙子躺在沙发上 客厅弄醒午睡的妈连接 家庭毋HH伦s线视频中字 客厅弄硬午睡的儿子短文 客厅搞午睡的母亲 弄醒客厅午睡的母亲在线播放 弄醒午睡的妈视频连接 在客厅睡的午的母亲电影 客厅午睡的母亲在线下载 韩国午睡弄醒午睡的妈 在客厅弄醒午睡的 客厅午睡的母亲穿裙子在线播放 客厅午睡的母亲自拍 客厅里硬搞午睡的母亲视频 对白搞硬沙发午睡的儿子 客厅沙发儿子碎花裙 电影客厅午睡的母亲 客厅午睡以为你是爸爸 客厅弄醒午唾的儿子 客厅搞硬午睡的儿子小说 客厅弄醒穿花裙子午睡的妈电影 在客厅里弄醒午睡的儿子 中午弄醒正在午睡中的护校小 客厅弄醒午睡的妈视频完整迅雷 弄醒客厅午睡花裙子母亲 对白弄醒午睡的儿子 客厅沙发午睡的妈 母亲今晚让你入个够 在客厅里弄醒午睡的 客厅里午睡的花裙子电影 睡在客厅午睡的母亲 客厅弄醒午睡的妈视频 ckm 客厅中弄醒午睡的儿子 艹醒客厅上睡觉的百褶裙 搞硬午睡儿子沙发大战视频 客厅弄醒午睡的在线播放 在客厅穿花裙子午睡的母亲视频 艹客厅沙发午睡 中国小叔子强大嫂 强睡大嫂风间游美