A .Jzzhu and Chocolate

pro:现在给定一个大小为N*M的巧克力,让你横着或者竖着切K刀,都是切的整数大小,而且不能切在相同的地方,求最大化其中最小的块。 (N,M,K<1e9)

sol:如果横着切X刀,竖着切Y刀,那么最小的面积=(N/(X+1))*(M/(Y+1));一看这个公式知道是整数分块了,相同的部分合并。 需要保证X<N,Y<M;

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int N,M,K;ll ans=-;
int main()
{
scanf("%d%d%d",&N,&M,&K); K+=;
for(int i=,j;i<=min(K-,N);i=j+){
j=N/(N/i);int p=j;if(p>=K) p=K-;
if(K-p>M) continue;
ans=max(ans,1LL*(N/i)*(M/(K-p)));
}
printf("%lld\n",ans);
return ;
}

B .Jzzhu and Cities

pro:给定N个城市, 1号是首都,M条双向带权公路,K条铁路,铁路直接连接首都和城市, 现在问最多可以删去多少铁路,使得首都到任意城市的最短路不变.

sol:求最短路,如果铁路比最短路长,显然可以删去; 如果等于最短路,而最短路来源不唯一,那么显然也可以删去。 统计的时候记得至少留一个入度为1的。

#include<bits/stdc++.h>
#define ll long long
#define pii pair<ll,int>
#define rep(i,a,b) for(int i=a;i<=b;i++)
const ll inf=1e18;
using namespace std;
const int maxn=;
int a[maxn],b[maxn],ind[maxn];ll dis[maxn],vis[maxn];
int Laxt[maxn],Next[maxn],To[maxn],Len[maxn],cnt,N;
void add(int u,int v,int w)
{
Next[++cnt]=Laxt[u]; Laxt[u]=cnt; To[cnt]=v; Len[cnt]=w;
}
void SPFA()
{
rep(i,,N) dis[i]=inf;
priority_queue<pii>q;
q.push(pii(0LL,));
while(!q.empty()){
int u=q.top().second; q.pop(); vis[u]=;
for(int i=Laxt[u];i;i=Next[i]){
int v=To[i];
if(dis[v]==dis[u]+Len[i]) ind[v]++;
else if(dis[v]>dis[u]+Len[i]){
dis[v]=dis[u]+Len[i];
ind[v]=;
if(!vis[v]) q.push(pii(-dis[v],v)),vis[v]=;
}
}
}
}
int main()
{
int M,K,u,v,w,ans=;
scanf("%d%d%d",&N,&M,&K);
rep(i,,M){
scanf("%d%d%d",&u,&v,&w);
add(u,v,w); add(v,u,w);
}
rep(i,,K){
scanf("%d%d",&a[i],&b[i]);
add(,a[i],b[i]);
}
SPFA();
rep(i,,K){
if(dis[a[i]]<b[i]) ans++;
else if(dis[a[i]]==b[i]&&ind[a[i]]>){
ans++; ind[a[i]]--;
}
}
printf("%d\n",ans);
return ;
}

C .Jzzhu and Apples

pro:给定N,表示有数字1到N,如果不互质的两个数可以配对,现在问最多可以配对多少对。

sol:(我好菜啊,不会构造,没看题解不会做系列)。从小到大枚举大于2的素数p,把没有配对的 p的倍数抽出来,如果有num个,当num为偶数时,两两配对即可; 否则,其中一个不嫩配对,那么我们把2*p拿出来即可。 即是,这写被单出来的数字都有因子2,最后他们之间又可以配对。 这样可以保证最大化配对。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int vis[maxn],a[maxn],b[maxn],tot;
int p[maxn],cnt,N,q[maxn],num;
void getprime()
{
for(int i=;i<=N;i++){
if(!vis[i]) p[++cnt]=i;
for(int j=;j<=cnt&&i*p[j]<=N;j++){
vis[i*p[j]]=;
if(!(i%p[j])) break;
}
}
}
int main()
{
scanf("%d",&N);
if(N==||N==) return puts(""),;
getprime();
rep(i,,N) vis[i]=;
vis[]=;
rep(i,,cnt){
num=; int pos=;
for(int j=p[i];j<=N;j+=p[i])
if(!vis[j]) q[++num]=j;
if(num&) swap(q[],q[]),pos=;
rep(j,pos,num){
tot++; a[tot]=q[j]; b[tot]=q[++j];
vis[a[tot]]=vis[b[tot]]=;
}
}
num=; int pos=;
for(int j=p[];j<=N;j+=p[])
if(!vis[j]) q[++num]=j;
if(num&) swap(q[],q[]),pos=;
rep(j,pos,num){
tot++; a[tot]=q[j]; b[tot]=q[++j];
vis[a[tot]]=vis[b[tot]]=;
}
printf("%d\n",tot);
rep(i,,tot) printf("%d %d\n",a[i],b[i]);
return ;
}

D . Jzzhu and Numbers

pro:给定大小为N的数组a[],问多少个非空子集的&=0;答案%1e9+7;

sol:容斥,用全集减去有公共部分的地方,如果x中有g(x)个1,而有f(x)个y满足 y&x=x;那么其贡献是(-1)^g(x)*(2^f(x)-1);而后者可以用高维前缀和求超集。

注意!(j&(1<<i))的时候括号不要少了,这里失误几次了。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
const int Mod=1e9+;
int t[maxn],num[maxn],pw[maxn],ans;
int main()
{
int N,M=,x; scanf("%d",&N); pw[]=;
rep(i,,M) t[i]=t[i>>]+(i&),pw[i]=pw[i-]*%Mod;
rep(i,,N) scanf("%d",&x),num[x]++;
rep(i,,)
rep(j,,M) {
if(!(j&(<<i))) (num[j]+=num[j|(<<i)])%=Mod;
}
rep(i,,M){
if(t[i]&) ans=(ans-(pw[num[i]]-)+Mod)%Mod;
else ans=(ans+(pw[num[i]]-))%Mod;
}
printf("%d\n",ans);
return ;
}

E .Jzzhu and Squares

高斯消元+矩阵  不会,占位

CF449 (Div. 1简单题解)的更多相关文章

  1. CF446 (Div. 1)简单题解

    A .DZY Loves Sequences pro:给定长度为N的序列,你最多可以改变一个数的值,问最长严格上升子序列长度. N<1e5. sol:分几种情况,一种的不改变: 一种是改变,然后 ...

  2. CF444(Div. 1简单题解)

    A .DZY Loves Physics 题意:给定带点权和边权的无向图,现在让你选一些点,使得 点权和/被选点对间的边权和 最大. 思路:不难证明,选择边和对应的两点是最优的. #include&l ...

  3. # Codeforces Round #529(Div.3)个人题解

    Codeforces Round #529(Div.3)个人题解 前言: 闲来无事补了前天的cf,想着最近刷题有点点怠惰,就直接一场cf一场cf的刷算了,以后的题解也都会以每场的形式写出来 A. Re ...

  4. Codeforces Round #557 (Div. 1) 简要题解

    Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...

  5. Codeforces Round #538 (Div. 2) (A-E题解)

    Codeforces Round #538 (Div. 2) 题目链接:https://codeforces.com/contest/1114 A. Got Any Grapes? 题意: 有三个人, ...

  6. Codeforces Round #531 (Div. 3) ABCDEF题解

    Codeforces Round #531 (Div. 3) 题目总链接:https://codeforces.com/contest/1102 A. Integer Sequence Dividin ...

  7. Codeforces Round #499 (Div. 1)部分题解(B,C,D)

    Codeforces Round #499 (Div. 1) 这场本来想和同学一起打\(\rm virtual\ contest\)的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解. B ...

  8. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  9. Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】

    Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...

随机推荐

  1. Vue--项目开发之实现tabbar功能来学习单文件组件2

    上一篇文章里item.vue里的span标签内容是写死了,但是我们不希望写死 所以对于五个tab选项的标题需要从外部传入,也就说 需要在item.vue里的script里写上 export defau ...

  2. 学习笔记-AngularJs(七)

    在学习笔记-AngularJs(六)提及了事件处理器和过滤器以及它们的例子,而我们知道之前我是使用$http服务去获得我们需要的json数据,但是$http是比较底层的用法,有时候我们想把获取json ...

  3. learning ddr DLL-off mode

  4. 大白菜装机版一键制作启动u盘教程

    第一步 下载并且安装好大白菜装机版,打开安装好的大白菜装机版,插入u盘等待软件成功读取到u盘之后,点击“一键制作启动u盘”进入下一步操作.如下图所示 第二步 在弹出的信息提示窗口中,点击“确定”进入下 ...

  5. inode占用100%时硬盘无法写入文件故障处理

    故障现象: 分区无法写入文件. 故障分析: 执行df -h命令发现空间占用不到50%,执行df -hi,发现某分区IUse%值为99%,说明innode已经用完,应该是某些目录下存在大量的小文件导致. ...

  6. WPS处理个人信息一种方法

    下面是WPS处理个人信息的方法,具体步骤如下: 第一步:任意打开一个文件: 第二步:点击左上角WPS的小三角,找到工具——选项,如图: 第三步:进入选项后,点击用户信息: 第四步:修改个人信息,用户名 ...

  7. Linux查看某个进程的磁盘IO读写情况 pidstat

    一.现象 1)钉钉告警不断,告警如下CPU使用达到100% 普罗米修斯监控 2)查看数据库,没有发现比平时同一时段,业务量的增加.但是,数据库显示latch free等告警,验证了CPU使用过高导致. ...

  8. UIScrollview的 约束 contentsize contentoffset contentinset layoutsubviews needlayout等影响布局的属性

    很久没有写视图布局,最近发现写布局很不顺手,总结一下在处理UIScrollview的时候种种注意事项: 1. self.automaticallyAdjustsScrollViewInsets = N ...

  9. jdbc中Class.forName(driverName)的作用

    上次面试别人问我jdbc的过程: 我是这样回答的: Class.forName加载驱动 DriverManager.connect(url,username, password)获取连接对象 conn ...

  10. 强化学习10-Deep Q Learning-fix target

    针对 Deep Q Learning 可能无法收敛的问题,这里提出了一种  fix target 的方法,就是冻结现实神经网络,延时更新参数. 这个方法的初衷是这样的: 1. 之前我们每个(批)记忆都 ...